JSP容器下session失效的几种情况及应对
昨天同事说起一个OA的项目,总是出现session失效的情况,我总结了曾经遇到的几种情况供他参考:
1. 浏览器长时间没有请求到后台,超过了web.xml中 <session-timeout>规定的时间。
应对:这种情况是应用意料之中的,后台检查到session失效之后,引导用户到登陆界面。
2.cookie超出限制,导致jsessionId丢失,进而导致session失效
在浏览器默认设置下,session机制是以保存在cookie中的jsessionId,将无状态的http变通成了有状态的连接
但是多数浏览器的cookie实现对cookie个数及长度进行了限制,参考以下文章
http://www.nczonline.net/blog/2008/05/17/browser-cookie-restrictions/
当cookie超出限制, jsessionId作为一个普通的cookie被“挤”出去了,以jsessionId为接头暗号的session也就失效了。
利用cookie在前台保存大量数据是不明智的,代替的方法是可以使用js作为数据载体,当然js需要解决如何在页面之间共享的问题。
在我实施的项目中遇到的具体实例是:
使用Ext提供的利用cookie保存布局定制,即:Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
Ext对