0

我正在使用它在我的控制器中保存上传的图像

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/" />
4

3 回答 3

0

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

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

于 2014-02-03T11:39:39.223 回答
0

路径

主页/用户/工作空间/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/SpringMVCTest/resources/image.jpg

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

而是将图像放在公共网络区域并给出相对路径,例如

/contextofyourweb/images/1.jpeg

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

有关的:

于 2012-08-10T07:55:48.090 回答
0

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

我的弹簧 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 的人会发现这很有帮助。

于 2013-03-14T18:43:14.387 回答