我有一个应该在某个目录中保存内容(用户头像)的应用程序,例如 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>的。 有什么错过了吗?
答案 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映射实际上会匹配