服务器会话技术,将数据保存到服务器。
1.session基于cookie
服务器向客户端发送响应时,服务器会将会话id与响应数据一起发送给客户,这是通过Set-Cookie响应头来实现的,响应消息可能为:
HTTP/1.1 200 OK
Set - Cookie:JSESSIONID = 61C4F23521390E70993E5120263C6
Content - Type:text/html
...
这里的会话id,它是32位的十六进制数
当客户端再次向服务器发送请求时,会把该cookie头一起发送过去
2.获取session对象
HttpSession session = request.getSession();
//与此方法等价的是
HttpSession sessio = request.getSession(true);
3.HttpSession API的常用方法
- public String getId();返回会话的唯一标识符
- public long getCreationTime();返回创建时间,是1970到现在的秒数
- public long getLastAccessedTime();返回会话最后被访问的时间
- public boolean isNew();如果会话对象还没有被关联,返回true
- public ServletContext getServletContext();获取ServletContext对象
- public void setAttribute(String name,Object value);存一个值
- public Object getAttribute(String name);获取一个值
- public void removeAttribute(String name);删除一个值
- public Enumeration getAttributeNames();以枚举对象返回所有属性
- public void setMaxInactiveInterval(int interval);设置失效时间
- 整数,存活的秒数
- 0,永不失效
- 负数,永不失效
- public int getMaxInactiveInterval();获取存活时间
- public void invalidate();使对象失效并删除所有存在该对象的数据
4.会话超时与失效
可以在web.xml中配置会话超时时间
<session - config>
<session - timeout>10</session - timeout>
</session - config>
会话的默认超时时间是30分钟,上面的timeout单位是秒。