Need to access HTTP
session for fetching as well storing some information.I am using Spring-MVC
for my application and i have 2 options here.
- User
Request/ Session
in my Controller method and do my work - Use
RequestContextHolde
to access Session information.
I am separating some calculation logic from Controller and want to access Session information in this new layer and for that i have 2 options
- Pass session or Request object to other method in other layer and perform my work.
- use
RequestContextHolder.currentRequestAttributes()
to accessrequest/ session
and perform my work.
I am not sure which is right way to go? with second approach, i can see that method calling will be more clean and i need not to pass request/ session
each time.
Best Answer
I would approach this problem a bit differently. Let's assume you need only an attribute "attr1" from the session. So what you actually should do is to get this attribute in @Controller pass it to your calculation logic class (@Service), return the result of the calculation back to @Controller and store it in session. Thanks to that your calculation logic will not be independent from a web layer (HttpSession), hence reusable.
E.g.: