Spring 3 MVC accédant à HttpRequest depuis le contrôleur

Je voudrais gérer moi-même les atsortingbuts de requête et de session plutôt que de laisser @SessionAtsortingbutes , pour la connexion de la gestion des cookies par exemple.

Je n’arrive pas à comprendre comment accéder à HttpRequest depuis un contrôleur, j’ai besoin d’un moyen d’aller au-dessus de @RequestAtsortingbute et d’accéder à HttpRequest lui-même. Avec Ssortingpes, vous pouvez le faire en implémentant ApplicationContext et en appelant getAtsortingbute() .

En outre, le passage du paramètre HttpServletRequest ne semble pas fonctionner:

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

La méthode ci-dessus n’imprime rien.

Avez-vous des conseils à ce sujet?

Spring MVC vous donnera le HttpRequest si vous l’ajoutez simplement à la signature de votre méthode de contrôleur:

Par exemple:

 /** * 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(...); } 

Comme vous le voyez, il suffit d’append les objects HttpServletRequest et HttpServletResponse à la signature pour que Spring MVC transmette ces objects à votre méthode de contrôleur. Vous voudrez aussi l’object HttpSession .

EDIT: Il semble que HttpServletRequest / Response ne fonctionne pas pour certaines personnes sous Spring 3. Essayez d’utiliser les objects Spring WebRequest / WebResponse comme Eduardo Zola l’a souligné.

Je vous recommande fortement de consulter la liste des arguments pris en charge que Spring MVC est capable d’injecter comme par magie dans vos méthodes de gestionnaire.

Je sais que c’est une vieille question, mais …

Vous pouvez également l’utiliser dans votre classe:

 @Autowired private HttpServletRequest context; 

Et cela fournira l’instance actuelle de HttpServletRequest pour votre méthode.