紧急求助:HttpSessionListener监听session销毁的问题

yuzt_003 2007-09-27 01:52:14
因为,项目中要使用HttpSessionListener监听session的销毁事件,因此,今天作了几个实验验证HttpSessionListener的sessionCreated和sessionDestroyed方法的行为方式,

1,配置了session listener并正常工作。
2,在一个简单的jsp文件里面加入<%session.setMaxInactiveInternal(60*1)%>,即设置最大的不活动时间为1分钟,调用这个jsp的时候,等待一分钟,然后再关闭浏览器,此时,过了好大一会,destroyed方法才调用到,不知道其中的事件处理是怎样的一个过程。
3。在上面,如果,我设置的时间时60*200,即200分钟,然后启动后,等待,等很长时间都没有看到destroyed方法的调用?why??

那位达人解析一下?不胜感谢。
...全文
1391 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChDw 2007-09-29
  • 打赏
  • 举报
回复
通过关闭浏览器,并没有看到sessionlitender的destroy方法调用?这是何故?

------------------
错误!关闭浏览器并不会触发Session的销毁,因为服务器根本不知道你浏览器关闭的事件(除非你在body上有onunload事件,并且在此事件的响应函数中想办法通知服务器)

所以你关闭浏览器不影响会话超时!
lcllcl987 2007-09-29
  • 打赏
  • 举报
回复
楼上正解.
给你个参考
判断session是否过期:
http://blog.csdn.net/lcllcl987/archive/2005/02/25/301260.aspx

lsj19830812 2007-09-27
  • 打赏
  • 举报
回复
很好理解
1.服务器每隔xxx长时间检查当前应该销毁的session
2.每个session隔yyy长时间不操作就处于"可被销毁"的状态

那么一个session在不操作yyy长时间后,此时服务器刚好检查到这个session了那它立刻被清除了,如果一个session在不操作yyy长时间后此时服务器刚好休息了,那就需要等xxx长时间后才回被清楚

差不多就这个意思
yuzt_003 2007-09-27
  • 打赏
  • 举报
回复
关闭浏览器也是使session实效的一个方法啊,我把session设置的足够长,
通过关闭浏览器,并没有看到sessionlitender的destroy方法调用?这是何故?
许飘大叔 2007-09-27
  • 打赏
  • 举报
回复
web服务器是在一定条件下才销毁session的,
时间是必备的条件之一,但不是唯一的,所以不可能那么及时的.

你可到网查下,有这样的资料的.
ChDw 2007-09-27
  • 打赏
  • 举报
回复
setMaxInactiveInternal为一分钟,并不意味Web服务器在一分钟之后就一定销毁这个会话,因为Web服务器一般都是采用定时器的方式, 每过若干分钟才扫描一次过时的会话,所以可能会3~4分钟,甚至更长时间才触发。



200分钟要3小时半小时啊,你确定你等待超过了3个半小时?

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧