向 Spring 控制器添加标头

IAm*_*aja 6 caching spring-mvc http-headers

我知道这个问题很相似,一个,但我觉得它的不同和具体,足以在这里保证其自身的问题。

我刚刚从一个没有留下任何文档的唯一开发人员那里继承了一个 Java Web 应用程序项目。它是一个具有基本包结构的 Spring MVC 应用程序,如下所示:

com.ourOrg.app.controllers
    ImageController
    ProgramController
    UserController
com.ourOrg.app.otherPackages
Run Code Online (Sandbox Code Playgroud)

每个Controller类只是一个用@Controllerand注释的 POJO @RequestMapping("/blah")。例如:

@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
    }
}
Run Code Online (Sandbox Code Playgroud)

我被要求将以下 HTTP 标头添加到 Spring 配置中,以便我们禁用浏览器缓存:

编译指示:无缓存

缓存控制:无缓存

过期时间:-1

我上面链接的文章听起来像是我们的控制器应该扩展这个WebContentGenerator类。不幸的是,有几十个控制器具有大量的方法,因此重构每个控制器以扩展或继承某些基本类型并不是一个真正可行的选择(除非它是唯一的选择!)。

我还看过一些文章,这些文章听起来好像您必须配置 Spring 以使用 AOP 拦截器来修改您的响应标头,但现在我真的进入了一个不熟悉的领域。

鉴于我们对 Spring MVC 的设置和实现,我将这三个简单的标头添加到服务器发回的每个响应中的最简单方法是什么(无论执行哪个控制器或方法)?

提前致谢!

dig*_*oel 3

希望您使用 Spring 3,您可以查看拦截器,然后您将不必修改所有控制器(因为您说您有很多控制器)。看起来他们可能已经实现了一个可供您使用的功能。查看 Bozho 对这个问题的回答:如何通过注释在 spring mvc 3 中设置标头无缓存