Java中httpsession生命周期

HttpSession会话范围是某个用户从首次访问服务器开始,到该用户关闭浏览器结束,那么从用户访问到退出浏览器它的生命周期过程如下:

1. 当浏览器A向服务器发送会话请求,并且访问服务器端某个能和浏览器开启会话的servlet程序时,服务器为这次会话创建一个HttpSession对象,并会这次会话分配一个唯一标识号id。并且这个HttpSession对象和这个id唯一对应。 

2. HttpSession对象存储在服务器端,通过响应消息把会话标识id传给浏览器A端。 

3. 浏览器A只要记住这个会话标识id,并且在后续的访问请求中把这个id传递给服务器,服务器根据这个id就可以判断是哪个浏览器发出的请求,就可以选择它对应的HttpSession对象。 

4. 如果在特定时间内,浏览器都没有向服务器发出请求,则认为该浏览器已经关闭,服务器负责销毁这个浏览器对应的HttpSession对象。 

5. 当浏览再次向服务器发出请求,服务器重复第一步的操作。 

JSP创建session

1. 若当前的JSP是客户端访问的当前WEB应用的第一个资源,且JSP的page指定的session属性值为 false, 则服务器就不会为JSP创建一个 HttpSession对象。

2. 若当前JSP不是客户端访问的当前WEB应用的第一个资源,且其他页面已经创建一个HttpSession 对象,则服务器也不会为当前 JSP 页面创建一个HttpSession对象,而回会把和当前会话关联的那个HttpSession对象返回给当前的JSP页面.

Serlvet创建session

若Serlvet是客户端访问的第一个WEB应用的资源, 则只有调用了request.getSession()或request.getSession(true)才会创建 HttpSession对象。

销毁session

1. 程序调用HttpSession.invalidate()

2. 距离上一次收到客户端发送的session id时间间隔超过了session的最大有效时间

3. 服务器进程被停止

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