I would like to handle request and session attributes myself rather then leave it to spring @SessionAttributes
, for login of cookies handling for example.
I just cant figure out how could I access the HttpRequest
from within a controller, I need a way to go a layer above the @RequestAttribute
and access the HttpRequest
itself. With Stripes in used to do this by implementing an ApplicationContext
and calling getAttribute()
.
Also, passing the HttpServletRequest
as parameter seems not to be working:
@RequestMapping(value="/") public String home(HttpServletRequest request){
System.out.println(""+request.getSession().getCreationTime());
return "home";
}
The above method does not print anything.
Do you have any advice on this?
Spring MVC will give you the HttpRequest if you just add it to your controller method signature:
For instance:
As you see, simply adding the
HttpServletRequest
andHttpServletResponse
objects to the signature makes Spring MVC to pass those objects to your controller method. You'll want theHttpSession
object too.EDIT: It seems that HttpServletRequest/Response are not working for some people under Spring 3. Try using Spring WebRequest/WebResponse objects as Eduardo Zola pointed out.
I strongly recommend you to have a look at the list of supported arguments that Spring MVC is able to auto-magically inject to your handler methods.
I know that is a old question, but...
You can also use this in your class:
And this will provide the current instance of
HttpServletRequest
for you use on your method.