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();