Spring 3 MVC, доступ к HttpRequest от controllerа

Я хотел бы обрабатывать атрибуты запроса и сеанса, а затем оставлять его на @SessionAttributes , @SessionAttributes , для входа в систему обработки файлов cookie.

Я просто не могу понять, как я могу получить доступ к HttpRequest из controllerа, мне нужен способ сделать слой выше @RequestAttribute и получить доступ к самому HttpRequest . С помощью Stripes в этом используется реализация ApplicationContext и вызов getAttribute() .

Кроме того, передача параметра HttpServletRequest качестве параметра, похоже, не работает:

 @RequestMapping(value="/") public String home(HttpServletRequest request){ System.out.println(""+request.getSession().getCreationTime()); return "home"; } 

Вышеуказанный метод ничего не печатает.

У вас есть какие-либо советы по этому поводу?

    Spring MVC предоставит вам HttpRequest, если вы просто добавите его в подпись своего controllerа:

    Например:

     /** * Generate a PDF report... */ @RequestMapping(value = "/report/{objectId}", method = RequestMethod.GET) public @ResponseBody void generateReport( @PathVariable("objectId") Long objectId, HttpServletRequest request, HttpServletResponse response) { // ... // Here you can use the request and response objects like: // response.setContentType("application/pdf"); // response.getOutputStream().write(...); } 

    Как вы видите, просто добавление объектов HttpServletRequest и HttpServletResponse к подписи делает Spring MVC передачей этих объектов вашему методу controllerа. Вам также понадобится объект HttpSession .

    EDIT: Кажется, что HttpServletRequest / Response не работают для некоторых людей под Spring 3. Попробуйте использовать объекты Spring WebRequest / WebResponse, как отметил Эдуардо Зола.

    Я настоятельно рекомендую вам взглянуть на список поддерживаемых аргументов, которые Spring MVC умеет автоматически вводить вашим методам обработчика.

    Я знаю, что это старый вопрос, но …

    Вы также можете использовать это в своем classе:

     @Autowired private HttpServletRequest context; 

    И это предоставит текущий экземпляр HttpServletRequest для использования в вашем методе.

    Давайте будем гением компьютера.