带有SpringMVC的Tomcat中带有静态内容的外部目录

时间:2013-08-21 16:09:09

标签: java tomcat spring-mvc static-content

我有一个应该在某个目录中保存内容(用户头像)的应用程序,例如 C:\ avadir 。在我的应用程序中,我正在使用 SpringMVC 。我需要显示用户定义的头像。为此,我必须配置Tomcat以使用此外部目录。 我在 ROOT.xml 中有这样的操作,放在%CATALINA_HOME%\ conf \ Catalina \ localhost 中:

<Context path="/ava" docBase="c:/avadir" debug="0" reloadable="true" crossContext="true" />

以及servlet-context.xml中的下一个设置:

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

设置此设置后,我仍然无法访问位于 C:\ avadir \ file.jpg 中的文件,其位置为url localhost:8080 / ava / file.jpg < / em>的。 有什么错过了吗?

1 个答案:

答案 0 :(得分:6)

您可以在不修改ROOT.xml文件的情况下实现您想要的目标,这样可以使您的应用程序更容易管理。

首先,我将从ROOT.xml中删除Context定义。

其次,我会修改您当前的Spring MVC配置,以便将图像作为Spring MVC应用程序的一部分提供。使用您建议的路径,我会更新您的&lt;资源&gt;定义为:

<mvc:resources mapping="/ava/**" location="file:///C:/avadir"/>

这实质上是将Spring MVC实现配置为直接从文件系统提供资源,而不是依赖于您在Tomcat中配置的第二个上下文。

您还需要记住,Spring MVC资源映射将与Web应用程序的上下文相关。例如:如果您的应用程序部署在http://example.com:8080/myApp,那么当使用URL http://example.com:8080/myApp/ava/file.jpeg

访问时,/ ava映射实际上会匹配