2

我有一个应用程序应该将内容(用户头像)保存在某个目录中,例如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/" />

设置此设置后,我仍然无法访问通过 url localhost:8080/ava/file.jpg放置在C:\avadir\file.jpg中的文件。有什么遗漏吗?

4

1 回答 1

6

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

所以首先我会从 ROOT.xml 中删除上下文定义。

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

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

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

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

于 2013-08-21T16:27:07.700 回答