日期:2014-05-17  浏览次数:20712 次

关于session认识的几个误区
1.浏览器窗口关闭,session就会随之过期了?

这种观点在不少web开发人员中非常流利,实际上是不对的。session是有一个过期时间的,只要是session的过期时间没到,session就不会过期。以tomcat为例。tomcat的默认的session的过期时间是30分钟,可以在项目的web.xml里面重新设置这个值:
<session-config>  
<session-timeout>20</session-timeout>  
</session-config>

2.服务器停掉了,session也就过期了?

还是那句话,只要是session的过期时间没到,session就不会过期。

还是以tomcat为例,服务器关掉的时候,tomcat会把当前还没失效的session存放到${TOMCAT_HOME}\work\Catalina\localhost\项目名\SESSIONS.ser文件里面。当下次tomcat启动的时候,tomcat会把这个文件里面的session重新读到内存。

因此:
(1)如果存到session里面的数据是不可序列化的,tomcat在把session写到文件的时候就会出错。
(2)只要你的session还没过期,期间tomcat重启了,是不会影响客户端的连接的。

总之,一句话:session是否过期只跟“到没到过期时间”有关,跟浏览器窗口和服务器是否关闭都没有关系。


欢迎继续补充!


------解决方案--------------------
感觉楼主说的不是很对,做项目用的是weblogic服务器,当服务区重启后,session会断开的!亲身体验。