Session定义

Session技术是指使用HTTPSession对象事先会话跟踪的技术,是一种在服务端保持会话跟踪的解决方案。

HttpSession对象会在用户第一次访问服务器的时候由容器创建(注意只有访问JSP、Servlet等程序的时候才会创建,访问HTML、IMAGE等静态资源的时候不会创建)。当用户调用其失效方法(invalidate())或超过其最大不活动时间时会失效,再次期间用户和服务器之间的多次请求都属于一个会话

Session如何实现识别用户

服务器在创建会话对象时,会为其分配一个唯一的惠华表示:SessionId,以“JSESSIONID”为属性名保存在客户端的Cookie中,在用户的随后请求中,服务器通过这个ID来识别不同的用户,从而实现对每个用户的会话跟踪。这也是为什么我们说Session依赖于Cookie技术,所当我们使用Session的时候记得搞清楚本地浏览器是否接受Cookie,并且设置Cookie的存活时间(这个我不怎么确定)

Session对象获取

前面提到过Session对象是容器帮我们创建的,我们获取是通过

HttpSession session=request.getSession();
//或者
HttpSession session=request.getSession(true);

存取会话域属性

//存取会话域属性
session.setAttribute("username","QST");
//通过属性名“username”从会话域中获取属性值
String name=(String)session.getAttribute("username");
//通过属性名将属性从会话中移除
session.reMoveAttribute("name");

获取和设置会话的最大不活动时间

获取
int time=session.getMaxInactiveInterval();

以秒为单位,默认时间为1800秒

可以在web.xml 中配置会话最大不活动时间

 <session-config>
 <session-time>10</session-time>
 </session-config>

或者在代码中设置

session.setMaxInactiveInterval(600);

设置会话失效

 session.invalidate();