【问题标题】:How to get to /public outside WEB-INF when using Spring MVC使用 Spring MVC 时如何在 WEB-INF 之外访问 /public
【发布时间】:2012-02-29 23:01:00
【问题描述】:

我很难将图像上传到公用文件夹。公用文件夹是 Webapp 文件夹内的 WEB-INF 的兄弟。

尝试像 this.getClass().getResource("/images/16x16").toString() 返回空指针异常。

我已将图片文件夹添加为资源

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

有没有办法做到这一点?感谢您阅读本文

【问题讨论】:

    标签: jakarta-ee web-applications tomcat spring-mvc document-root


    【解决方案1】:

    首先,你不应该认为 webapp 的文件夹是可以访问写入文件的。该应用程序可以部署为一个战争文件,如果您重新部署该应用程序,您将丢失所有上传的文件。将上传的文件存储在别处。

    其次,Class.getResource() 从类路径加载资源。它不会从文件系统或 webapp 的上下文中加载。 Class.getResource() 只会查找存储在 WEB-INF/classes、WEB-INF/lib 的 jar 之一或容器类路径的 jar 中的资源。

    如果您需要从 web 应用的上下文中加载某些内容(在这种情况下您不应该这样做),请使用 ServletContext.getResource()(或 getResourceAsStream()

    【讨论】:

    • 我明白了。假设我的应用程序在 /usr/local/tomcat/myaqpp 下运行。如果我将图像存储在 /home/myaccountname/images 下,在文件中显示它们将被加载他们从他们的绝对路径。我说的对吗?
    • 是的,您将使用文件 IO 来加载图像。
    猜你喜欢
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 2023-03-14
    • 2021-06-30
    • 2020-12-23
    • 2014-09-08
    • 2015-06-29
    相关资源
    最近更新 更多