Я знаю, что этот вопрос очень похож на this один, но я чувствую, что он отличается от других и достаточно конкретным, чтобы гарантировать свой собственный вопрос здесь.Добавление заголовков в Пружинные контроллеры
Я только что унаследовал проект веб-приложений Java от единственного разработчика, который не оставил документации. Его приложение Spring MVC с основной структурой пакета следующим образом:
com.ourOrg.app.controllers
ImageController
ProgramController
UserController
com.ourOrg.app.otherPackages
Каждый Controller
класс просто POJO с аннотацией @Controller
и @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
}
}
Я попросил, чтобы добавить следующие заголовки HTTP в Спринг конфигурации, так что мы отключить кэширование браузера:
Pragma: нет-кэша
Cache-Control: нет кэша
не Expires: -1
The A связанная с вышеприведенной ссылкой, звучит так, как будто наши контроллеры должны расширять этот класс WebContentGenerator
. К сожалению, существуют десятки контроллеров с огромным количеством методов, поэтому рефакторинг каждого из них для расширения или наследования какого-то базового типа на самом деле не является жизнеспособным вариантом (кроме его только)!
Я также видел статьи, которые звучат так, как будто вы должны настроить Spring для использования перехватчиков AOP, которые изменяют ваши заголовки ответов, но теперь я действительно попадаю в незнакомую территорию.
Учитывая нашу настройку и реализацию Spring MVC, самый простой способ добавить эти три простых заголовка к каждому отклику, отправленному сервером (независимо от того, какой контроллер или метод выполняется)?
Заранее благодарен!
Возможно, я ошибаюсь, но вы не можете установить их в объекте HttpServletResponse перед выходом контроллера? Ваши контроллеры должны иметь доступ к этому объекту. – jmort253
Как? Только аннотации делают их контроллерами, но они только расширяют «Object» ... – IAmYourFaja