2

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

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

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

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

请让我知道如何实现这一目标。

4

3 回答 3

3

在 JSP 中使用表达式语言 (EL) :

<img src="${pageContext.request.contextPath}/resources/images/product1.jpg"/>
于 2013-10-19T05:42:27.740 回答
0

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

在 Spring MVC 中,您可以通过在 URL 资源前加上“file:”前缀来强制使用绝对路径(相对于系统的根目录) :

// 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");

这相对于当前工作目录起作用。图像将从文件系统位置加载,在这种情况下相对于当前工作目录。因此,我们已将目录添加到类路径中。同样,您也可以在 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 中,如果不存在上下文路径,则会自动添加它。

于 2013-10-19T06:16:25.040 回答
0

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

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

并在jsp中

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

感谢大家的帮助,您的指导确实帮助我找到了这个问题的答案。

于 2013-10-19T15:22:01.820 回答