JSP session的生命周期详解

Session存储在服务器端,当客户端关闭浏览器,并不意味着Session对象的销毁,它的销毁如果不是显式调用invalidate()去销毁session,那么它的生命周期由web.xml中session超时设置,web服务器(tomcat等)控制session的失效。

生命周期

1. 当客户端第一次访问某个jsp或者servlet时候,服务器会为当前会话创建一个SessionId,每次客户端向服务器发送请求时,都会将此SessionId携带过去,服务端会对此SessionId进行校验。

2. 某次会话当中通过超链接打开的新页面属于同一次会话;只要当前会话页面没有全部关闭,重新打开的浏览器窗口访问同一个项目资源时属于同一次会话;除非本次会话的所有页面都关闭后在重新访问某个JSP或者servlet将会创建新的会话(原有会话还存在,只是这个旧的Session仍然存在于服务端,只不过再也没有客户端会携带它然后交予服务端校验)

3. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。Tomcat中Session的默认失效时间为20分钟。

失效session

1. 调用session.invalidate()方法来使整个session无效。

2. 调用setMaxInactiveInterval(int interval)方法来设置session超时。

3. 配置web.xml文件<session-config>    <session-timeout>15</session-timeout>  </session-config>,Tomcat根据配置的时间自动失效。

4. 服务器重新启动

总结

1. Session存储在服务器端,一般为了防止在服务器的内存中(为了高速存取),Sessinon在用户访问第一次访问服务器时创建,需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session,可调用request.getSession(true)强制生成Session。

2. Session对象对客户端浏览器进行绑定,只要不关闭浏览器,在超时时间内该session都会有效。关闭浏览器,重开一个浏览器,则服务器会分配置新的Session对象。

3. Session是放置在服务器端的对象。所以当客户端关闭浏览器,并不意味着Session对象的销毁。所以到一定时间,一定要对Session对象进行销毁,以释放服务器内存资源。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。