我正在尝试找到一种将路径重新映射到绝对路径的方法,以便检索存储在服务器文件系统中的图像,我也在使用 spring mvc 但 <mvc:resource>
无法映射绝对路径,而且我找不到使用 spring Controller 执行此操作的好方法
即我需要将所有图像请求从/images/** 映射到/root/var/img/**,这样当客户端浏览器尝试加载页面图像时,每个图像都保留在上面提到的路径中
最佳答案
您可以使用 docBase
引用您的文件夹 ( /root/var/img
) 创建一个新上下文,它应该如下所示:
<Context path=”/images” docBase=”/root/var/img/” ... >
</Context>
有关更多详细信息,请参阅 Tomcat 上下文配置文档(例如,对于 Tomcat 6:Apache Tomcat Configuration Reference: The Context Container)。
本文档的简介列出了可以定义 context 元素的可能位置。
编辑
正如我在评论中提到的,在不创建任何新上下文的情况下执行此操作的特定于 Spring 的方法似乎是使用 RedirectView(链接到 Spring v2.5 JavaDoc)。根据 JavaDoc:
"View that redirects to an absolute, context relative, or current request relative URL, by default exposing all model attributes as HTTP query parameters."
编辑2
看来我误解了 RedirectView 的用途,这是一个很好的旧 URL 重定向。因此,@Jens 的回答应该更合适(+1)。我仍然想知道在 Spring 中是否有一个现有的标准解决方案(我最初认为 RedirectView 会做的..)它不像有太多代码要写,但仍然:)
编辑3
在阅读了有关该主题的更多信息后,我发现 <mvc:resources>
能够做到这一点(即,不仅使用相对路径或类路径映射资源),您只需要使用 正确配置 location文件:前缀。事实上,已经有关于 SO 的答案可以准确解释你需要做什么:Spring : serving static resources outside context root
关于java - 使用 spring 重新映射 Web 应用程序 (tomcat) 中的图像请求以获得绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7057083/