【发布时间】:2012-05-23 09:03:46
【问题描述】:
我知道这个问题与this 的问题非常相似,但我觉得它的不同和具体足以保证在这里提出自己的问题。
我刚刚从一个没有留下任何文档的唯一开发人员那里继承了一个 Java Web 应用程序项目。它是一个 Spring MVC 应用,基本包结构如下:
com.ourOrg.app.controllers
ImageController
ProgramController
UserController
com.ourOrg.app.otherPackages
每个Controller 类只是一个带有@Controller 和@RequestMapping("/blah") 注释的POJO。例如:
@Controller
@RequestMapping("/images")
public class ImageController() {
@RequestMapping(value="/saveImage", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<String> saveImage(@RequestParam(value="imageData", required=true) String imageXML, HttpServletRequest request){
// This method gets executed whenever the:
// http://ourSite.com/images/saveImage
// URL is hit
}
}
我被要求将以下 HTTP 标头添加到 Spring 配置中,以便我们禁用浏览器缓存:
编译指示:无缓存
缓存控制:无缓存
过期:-1
我上面链接的文章听起来我们的控制器应该扩展这个WebContentGenerator 类。不幸的是,有数十个控制器具有大量方法,因此重构每个控制器以扩展或继承某些基本类型并不是一个真正可行的选择(除非它是 only 选项!)。
我还看过一些文章,听起来您必须配置 Spring 以使用修改响应标头的 AOP 拦截器,但现在我真的进入了陌生的领域。
鉴于我们对 Spring MVC 的设置和实现,我将这三个简单的标头添加到服务器发回的每个响应中最简单的方法是什么(无论执行哪个控制器或方法)?
提前致谢!
【问题讨论】:
-
也许我弄错了,但你不能在退出控制器之前在 HttpServletResponse 对象中设置这些吗?您的控制器应该有权访问该对象。
-
怎么样?只有注释使它们成为控制器,但它们仅扩展
Object...
标签: caching spring-mvc http-headers