存储在服务端的会话跟踪技术
JavaEE提供HttpSession接口,Session类似于在服务端的一个域
基本使用:
创建Session对象:
HttpSession session = request.getSession()
session.setAttribute(String name,Object o) 存储到Session域中
session.getAttribute(String name) 根据键获取Session域中的数据
session.removeAttribute(String name) 删除Session域中数据
案例:
原理:
Session也是基于Cookie实现的,在程序中存在Session时,Tomcat会自动检测到,并创建对应的响应头 set-Cookie:JSSESSIONID = ... 发送给浏览器,浏览器想要访问Session域时会发出请求头 Cookie: JSSESSIONID = …,并非像Cookie一样直接发出数据。
细节:
Session的活化,钝化:
Session在服务器正常关闭后不会立刻消失,
钝化:
服务器正常关闭时,Session将数据储存在服务端硬盘中,target/work文件夹下
活化:
服务器再次启动时,Session重新提取硬盘中所存储的Session数据,创建Session域,删除硬盘上所存储的文件
Session存活时间:
默认为30分钟
可通过配置在Web.xml中配置存活时间
<session-config>
<session-timeout>90</session-timeout>
</session-config>
删除Session:
session.invalidate();
作用:退出账号