请教session中 MaxInactiveInterval 的值在什么时候得到通知?
大家都知道session有个超时时间
我的问题就是这个超时时间在什么时候被刷新 即 客户端向服务器请求期间的什么时间点?
我假想有下面两种可能:
1.是在服务器刚得到请求即立刻根据jsessionid获取到session并刷新超时时间
2.当在程序中显式的调用getSession后才刷新超时时间
如果是2那就好办了.
但如果结果为1.那么 我怎样通过程序指定session不接收此次的超时时间刷新 注:这种情况 监听器似乎是没有作用的.
另外我用的是JBOSS 这个应该跟具体实现的服务器有关吧.
[解决办法]
session死亡 发生在以下情况:
1.session的持有者(即客户端浏览器)在最大无活动等待时间(MaxInactiveInterval)内无任何响应或请求
2.session被调用invalidate()方法强制弊了
3.jsp服务器重起或发生中断(此时应该是所有session都当了)
是在服务器刚得到请求即立刻根据jsessionid获取到session并刷新超时时间
应该是这种情况
[解决办法]
我觉得不是这样的,MaxInactiveInterval是最大不活动时间,应该是每接受一次请求就重新起算,直到不活动时间到达销毁session,或超过session的timeout值自动被销毁。
[解决办法]
2.当在程序中显式的调用getSession后才刷新超时时间
Web服务器只有在程序显式调用getSession()/getSession(true)时候才会刷新最近访问时间
如果你在你的jsp中声明了<%@ session="false" %>,而且页面中没有调用getSession方法,那么你的页面无论访问多少次,你最后还是会超时的
[解决办法]
肯定是第二种情况的,只要你不尝试去getSession()/getSession(true)就肯定不会使得Session的最后访问时间刷新
只要访问JSP(没有声明session="false")的,则会自动刷新最后访问时间的。如果你想保持会话在IE没有关闭前都生效,只要定时刷新一个简单的JSP页面就可以。
我不明白你到底要做什么
[解决办法]