java - 使用 spring 重新映射 Web 应用程序 (tomcat) 中的图像请求以获得绝对路径

标签 java model-view-controller spring web-applications tomcat

我正在尝试找到一种将路径重新映射到绝对路径的方法,以便检索存储在服务器文件系统中的图像,我也在使用 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/

相关文章:

java - Spring 与 Guice 实例化对象

java - JVM 在没有指定帧的情况下崩溃,只有 "timer expired, abort"

java - 如何让安卓应用程序在一天中的特定时间做某事

python - 使用 CRUD 的 AJAX 表单提交

model-view-controller - 在 squeak 中编写 GUI

java - 如何在validation-text.properties 文件中使用通配符?

java - 如何从类路径中的 Java 包中读取所有类?

基于Java的WS用户授权

php - 这是如何在 PHP OO 中使用 MVC 模式

java - 处理图像无法渲染的情况