因为,项目中要使用HttpSessionListener监听session的销毁事件,因此,今天作了几个实验验证HttpSessionListener的sessionCreated和sessionDestroyed方法的行为方式,1,配置了session listener并正常工作。
2,在一个简单的jsp文件里面加入<%session.setMaxInactiveInternal(60*1)%>,即设置最大的不活动时间为1分钟,调用这个jsp的时候,等待一分钟,然后再关闭浏览器,此时,过了好大一会,destroyed方法才调用到,不知道其中的事件处理是怎样的一个过程。
3。在上面,如果,我设置的时间时60*200,即200分钟,然后启动后,等待,等很长时间都没有看到destroyed方法的调用?why??那位达人解析一下?不胜感谢。
2,在一个简单的jsp文件里面加入<%session.setMaxInactiveInternal(60*1)%>,即设置最大的不活动时间为1分钟,调用这个jsp的时候,等待一分钟,然后再关闭浏览器,此时,过了好大一会,destroyed方法才调用到,不知道其中的事件处理是怎样的一个过程。
3。在上面,如果,我设置的时间时60*200,即200分钟,然后启动后,等待,等很长时间都没有看到destroyed方法的调用?why??那位达人解析一下?不胜感谢。
时间是必备的条件之一,但不是唯一的,所以不可能那么及时的.你可到网查下,有这样的资料的.
通过关闭浏览器,并没有看到sessionlitender的destroy方法调用?这是何故?
1.服务器每隔xxx长时间检查当前应该销毁的session
2.每个session隔yyy长时间不操作就处于"可被销毁"的状态那么一个session在不操作yyy长时间后,此时服务器刚好检查到这个session了那它立刻被清除了,如果一个session在不操作yyy长时间后此时服务器刚好休息了,那就需要等xxx长时间后才回被清楚差不多就这个意思
错误!关闭浏览器并不会触发Session的销毁,因为服务器根本不知道你浏览器关闭的事件(除非你在body上有onunload事件,并且在此事件的响应函数中想办法通知服务器)所以你关闭浏览器不影响会话超时!
给你个参考
判断session是否过期:
http://blog.csdn.net/lcllcl987/archive/2005/02/25/301260.aspx