论坛首页 Java版

请问怎样在普通类中获取session,可以使用Filter实现吗?

浏览 695 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
最后更新时间:2008-03-12 关键字: java
我的想法是实现一个SessionFilter,在doFilter方法中把request和response传给一个单例对象SessionService,SessionService的构造函数把request和response传递给成员变量(单例对象只执行一次构造函数),这样SessionService就可以返回session了。但测试了一下,发现会出现空值错误,是什么原因呢?
   
最后更新时间:2008-03-12
你这样用有问题的,单例对象的生命周期是这个web app的生命周期,request,response就在一次request里面有意义,在一次request之后,request,response就该被销毁了。这个时候,虽然你的单例对象拿到了引用,但是其中很多属性应该不能访问了,比如request.getSession().另外,一个web app里面是有很多session对象的,你的单例对象放哪个session对象?
   
0 请登录后投票
最后更新时间:2008-03-12
楼上说的对,request对象 生命周期都过了啊
我觉得你可以把值记录到你的单例对象中
你可以在session 销毁的时候清除 你的单例对象
   
0 请登录后投票
最后更新时间:2008-03-12
那应该怎样做呢,我记得dwr中有个WebContextFactory类,它就可以直接返回session等信息的。
   
0 请登录后投票
最后更新时间:2008-03-12
用threadLocal封装
   
0 请登录后投票
最后更新时间:2008-03-13
crossgrass 写道
用threadLocal封装

正解
   
0 请登录后投票
论坛首页 Java版

跳转论坛:
JavaEye推荐