初学JSP中九大内置对象,了解到session对象,看到很多关于session对象的生命周期的讨论。想必这一定是一个重要的知识点。在今后的学习和工作中,一定会有极其重要的地位。为了便于以后的深入了解和回顾,经过老师的讲解和网上资料的补充,特在此整理一下当前关于session对象的生命周期的理解。有什么错误,望各位大神不吝,积极指正和补充。
Web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。需要注意的是,一个Session的概念需要包括特定的客户端,特定的服务器端以及不中断的操作时间。A用户和C服务器建立连接时所处的Session同B用户和C服务器建立连接时所处的Session是两个不同的Session。
当以下4种情况发生其一时,session以及其中的数据就会清空:
1、用户关闭正在使用的浏览器;
2、关闭网页服务器;
3、用户未向服务器提出请求超过预设的时间,Tomcat服务器的预设时间为30分钟;
4、运行程序结束了session。
注意,当浏览器关闭时,不会向服务器发送消息,这次会话关联的所有会话数据并不会马上被清除,直到该会话超过预设时间才会被删除。当用户再次打开浏览器时,服务器无法将新的请求与以前的会话关联起来,因此会创建一个新的session对象。
Session的超时时间为maxInactiveInterval属性,可以通过对应的getMaxInactiveInterval()获取,通过 setMaxInactiveInterval(longinterval)修改。
Session的超时时间也可以在web.xml中修改。另外,通过调用Session的invalidate()方法可以使Session失效。
<session-config>
<session-timeout>60</session-timeout> <!--单位:分钟-->
</session-config>
注意:<session-timeout>参数的单位为分钟,而 setMaxInactiveInterval(int s) 单位为秒。
web.config里设置<sessionState timeout="30"></sessionState>
注意:新开的浏览器窗口会生成新的Session,但子窗口除外。子窗口会共用父窗口的Session。例如,在链接上右 击,在弹出的快捷菜单中选择"在新窗口中打开"时,子窗口便可以访问父窗口的Session。