什么是session?
定义
HTTP协议使用的是无状态的连接,对容器而言,每一个请求都来自于一个新的客户。
所以服务器可以为客户端创建并维护一个Session对象,用于存放数据、跟踪用户话信息。
交互方式
在创建Session对象的同时,服务器将会为该 Session对象产生一个唯一编号,这个编号称之为SessionID。服务器以Cookie的方式将SessionID存放在客户端。
当浏览器再次访问该服务器时,会将SessionID作为Cookie信息带到服务器,服务器可以通过该SessionID检索到以前的Session对象,并对其进行访问。
工作步骤
1:发送请求
2:服务器端创建session对象
3:发送保存了SessionId的cookie存储于客户端
4:再次请求的时候就携带了SessionId
5:通过令牌sessionId找到相对应的session对象
session常用方法
方法名 | 解释 |
---|
setAttribute(java.lang.String, java.lang.Object) | 在Session对象中用一个名字绑定一个对象 |
getAttribute(java.lang.String) | 通过名字获取Session对象中保存的对象 |
removeAttribute(java.lang.String) | 在Session中删除与一个名字对应的对象 |
getCreationTime() | 返回第一次创建会话的时间 |
getLastAccessedTime() | 返回容器最后一次得到该会话ID的请求时间 |
setMaxInactiveInterval(int interval) | 对于会话指定客户请求的最大间隔时间,以秒为单位。-1表示永不过期 |
getMaxInactiveInterval(int interval) | 返回客户请求的最大间隔时间 |
invalidate() | 会话结束,当前存在在会话中的所有会话属性也会解除绑定 |
getId() | 此方法返回每个session唯一的标识 |
销毁sessio
设置会话超时。
在Session对象上调用invalidate()方法。
服务器重启。
设置session生命周期
<session-config>
<session-timeout>15</session-timeout>
</session-config>