API: https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpSession.html
概念
HttpSession是Servlet用于识别用户并保存用户信息的一种机制,因为Http是无状态的,因此服务器需要建立会话来识别浏览器的状态。
工作原理
一个会话通常对应一个用户,在浏览器发出Http请求之后,服务器在调用HttpServletRequest.getSession(true);
语句时便实例化一个HttpSession对象来建立会话,并初始化一个SessionID。之后浏览器发出的Http请求头中会插入获取到的SessionID,这样服务器就能识别用户并保存会话中的对象了。
注意:一般来说,HttpSession的实例化、管理、销毁均在服务器,浏览器只是通过使用Cookie或者重写URL(禁用Cookie时)来传递SessionID。
生命周期
- 当距浏览器上一次请求时间超过HttpSession的超时设置后,HttpSession便被销毁;
- 当服务器调用
HttpSession.invalidate();
语句后,HttpSession便被销毁; - 当服务器进程停止后,非持久HttpSession便被销毁。