初学JSP中九大内置对象,了解到session对象,看到很多关于session对象的生命周期的讨论。想必这一定是一个重要的知识点。在今后的学习和工作中,一定会有极其重要的地位。为了便于以后的深入了解和回顾,经过老师的讲解和网上资料的补充,特在此整理一下当前关于session对象的生命周期的理解。有什么错误,望各位大神不吝,积极指正和补充。

需要注意的是,一个Session的概念需要包括特定的客户端,特定的服务器端以及不中断的操作时间。A用户和C服务器建立连接时所处的Session同B用户和C服务器建立连接时所处的Session是两个不同的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。