There are different ways of accessing servlet session in Spring MVC. But I think this one is the one that best suits your problem. You can create a session scoped bean, which holds your desired info:
@Component("myObjectHolder") @Scope(WebApplicationContext.SCOPE_SESSION) public class MyObjectHolderImpl implements MyObjectHolder { private long userId; private String username; private Theme theme; // Getters & Setter }
Then, you can access to it from other beans:
@Controller public class MyController { @Autowired private MyObjectHolder myObjectHolder; @RequestMapping public ModelAndView switchTheme(String themeId) { ... Theme newTheme = themeService.get(themeId); myObjectHolder.setTheme(newTheme); ... } }
You can access directly from your view too, but you must configure it:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> ... <property name="exposedContextBeanNames" value="myObjectHolder" /> </bean>
And in your JSP:
Hi ${myObjectHolder.username}, you switched application theme to ${myObjectHolder.theme.name}