如何从java项目的资源/图像文件夹加载图像?

时间:2013-10-19 05:34:40

标签: java spring maven load classpath

我正在Sprng MVC开发一个购物车,卖家可以在这里上传带有描述的产品图片。我可以将图像上传到webapp/resources/images文件夹。现在,当任何用户打开我的网站时,我必须将所有这些图像加载到仪表板页面(主页)。我无法从此位置加载这些图像。

在我的jsp中,我正在写这样的最终代码:

<img src="resources/images/product1.jpg"/>

如何将此文件夹添加到classpath以便它可用。我正在使用Spring MVC和MAVEN。

请告诉我如何实现这一目标。

3 个答案:

答案 0 :(得分:3)

在JSP中使用Expression Language (EL)

<img src="${pageContext.request.contextPath}/resources/images/product1.jpg"/>

答案 1 :(得分:0)

据我所知,您已将图像上传到服务器上的单独文件夹,并且希望将该文件夹包含在类路径中以检索和显示JSP上的图像。

在Spring MVC中,您可以通过在&#39; file:&#39; 前加上URL资源来强制使用绝对路径(相对于系统的根目录): / p>

// actual context type doesn't matter, the Resource will always be UrlResource`
ctx.getResource("file:/root/webapp/resources/images");

// force this FileSystemXmlApplicationContext to load its definition via a UrlResource`
ApplicationContext ctx =
        new FileSystemXmlApplicationContext("file:/root/webapp/resources/images");`

这是通过指定绝对URL来添加图像目录的一种方法。

如果您的图像目录相对于当前目录并且想要添加到类路径,那么以下方法将起作用:

ApplicationContext ctx =
    new FileSystemXmlApplicationContext("resources/images");

这相对于当前工作目录有效。图像将从文件系统位置加载,在这种情况下相对于当前工作目录。所以,我们已将目录添加到classpath。同样,您也可以在XML中进行类路径配置。

<mvc:resources mapping="/resources/**"
               location="classpath:resources/images"
               cache-period="10000" />

<mvc:resources mapping="/resources/**"
               location="file:/root/webapp/resources/images"
               cache-period="10000" />

我们现在可以在JSP中检索图像,如下所示

<img src="${pageContext.request.contextPath}/resources/images/user.jpg"/>

以上EL ${pageContext.request.contextPath}可确保始终使用Context。

注意:在Spring 3.2.2中,the Context path is prepended automatically if not present.

答案 2 :(得分:0)

我能解决这个问题: 在Spring配置中添加了以下资源声明

<resources mapping="/resources/**" location="/resources/" />

和jsp

<img src="<c:url value="/resources/images/product1.jpg" />" alt="" />

谢谢大家的帮助,你的方向确实帮助我找到了解决这个问题的答案。