我有以下问题,我配置了以下应该存储在会话中的类。Spring MVC 3.0访问会话变量
<bean id="Users" class="com.doolloop.DlUser" scope="session">
<aop:scoped-proxy/>
</bean>
然后我在调度员的servlet我想访问该类用户并设置
@RequestMapping(value="/authenticate.do",method = RequestMethod.POST)
public String sampleAuthentication(@Valid Person person, BindingResult result,
Map model,HttpServletRequest request){
...... /some code
HttpSession session = request.getSession();
DlUser user = (DlUser) session.getAttribute("Users");
/// some uses for user object
}
的问题是,我一直都想与用户对象的空值。
我在做什么错?
第二个问题,我在文章中看到,访问HttpSession
不是线程安全的,它怎么能做到安全呢?应该是种Singleton?为什么这不是线程安全操作?
预先感谢您。
Danny。
这是否意味着这个bean将存在与Http会话存在相同的时间? – 2010-10-23 23:17:14
是的,这是正确的,但请阅读Bozho的答案。如果你将这个bean注入一个更长寿的bean,效果将不会像你期望的那样。你最好使用session.getAttribute()来获取对象,或者使用AOP为会话对象进行代理 - 请看这里的例子以获取更多细节:http://wheelersoftware.com/articles/spring-session-scoped -beans.html。本质上,这个链接解释了如何为会话范围的bean创建一个代理,所以代理就是获得匹配会话内容的正确实例的代理 – 2010-10-24 00:42:27