无法使用spring url标记加载保存到文件系统的图像

时间:2012-08-10 07:52:48

标签: java jsp url spring-mvc image

我正在使用此

在控制器中保存上传的图像
saveImage(context.getRealPath("/resources/image.jpg"), image);

然后尝试使用此

在JSP中加载图像
<img src="<c:url value="/resources/image.jpg"/>" />

我可以在浏览器地址栏中使用此功能访问图像

home/user/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/SpringMVCTest/resources/image.jpg

但图像不会加载到jsp中,只会加载损坏的链接图像。

我也在使用<mvc:resources mapping="/resources/**" location="/resources" />来提供静态内容。

为什么这不起作用?

琐碎的回答。一切都是正确的,除了我错过了

上的“/”
<mvc:resources mapping="/resources/**" location="/resources" />

应该是

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

3 个答案:

答案 0 :(得分:0)

路径

  

家/用户/工作区/ .metadata / .plugins / org.eclipse.wst.server.core / TMP1 / wtpwebapps / SpringMVCTest /资源/ image.jpg的

是您服务器的文件系统路径,您的客户端将无法访问它,

而是将图像放在公共网站区域中并提供相对路径,例如

/contextofyourweb/images/1.jpeg

或创建一个ImageServlet,它从服务器文件系统中读取文件并将其放入servlet响应

相关:

答案 1 :(得分:0)

我有同样的问题。我的要求是视图的Html5和Jquery,没有JSP。我有Spring MVC应用程序,它模拟用C编写的服务器。

我的春季MVC配置:

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

由于我无法使用标签,我找到了一个有效的jQuery解决方案:

    $(function(){
        var ctxRoot = window.location.pathname;
        var imgBtn1Url="/"+ctxRoot.split("/")[1]+"/resources/img/glyphs/glyphicons_173_play.png";
        alert(imgBtn1Url)
        $('#imgBtn1').attr('src', imgBtn1Url);
    });

HTML:<img id="imgBtn1" alt="" data-src="holder.js/300x200" class="thumbnail" />

在我的情况下ctxRoot = / viper / config,因为Spring Dispatcher Servlet的url模式。在你的情况下,location.pathname可能就足够了。

   <servlet-mapping>
        <servlet-name>conf</servlet-name>
        <url-pattern>/config/*</url-pattern>
   </servlet-mapping>

我希望使用Spring MVC的其他人会觉得有帮助。

答案 2 :(得分:0)

您应该将图像保存在应该不在项目文件中的文件夹中,因为一旦重新部署它,您肯定会丢失解压缩目录中的文件。

更好的是,将图像保存在某个保存位置,我确信,您正在保存数据库中的路径,这些图像需要独立于您的部署和webcontent文件夹中的目录。