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





