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

Max*_*kov 2 java tomcat spring-mvc static-content

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

<Context path="/ava" docBase="c:/avadir" debug="0" reloadable="true" crossContext="true" />
Run Code Online (Sandbox Code Playgroud)

我的下一个设置servlet-context.xml:

<resources mapping="/ava/**" location="/ava/" />
Run Code Online (Sandbox Code Playgroud)

设置完这个设置后,我仍然无法通过url localhost:8080/ava/file.jpg访问放在C:\ avadir\file.jpg中的文件.有没有遗漏的东西?

Rob*_*ake 6

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

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

其次,我会修改您当前的Spring MVC配置,以便将图像作为Spring MVC应用程序的一部分提供.使用您建议的路径,我会将您的<resources>定义更新为:

<mvc:resources mapping="/ava/**" location="file:///C:/avadir"/>
Run Code Online (Sandbox Code Playgroud)

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

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