Session(会话)
(1)session是什么?
服务器为了保存用户状态而创建的一个特殊的对象,该对象一般称之为
session对象。
(2)session工作原理
当浏览器第一次访问服务器时,服务器会创建一个session对象
(该对象有一个唯一的id,一般称之为sessionId),接下来服务器
会将sessionId以cookie的方式发送给浏览器。
当浏览器再次访问服务器时,会将sessionId发送过来,服务器
就可以利用sessionId找到对应的session对象。
(3)如何获得session对象?
方式一:
HttpSession s = request.getSession(true);
注:
当flag为true时,先查看请求当中是否有sessionId,如果没有
sessionId,则创建一个session对象;如果有sessionId,则
依据该sessionId去查找对应的session对象,如果找到了,则
返回该session对象,如果没有找到,则创建一个新的session对象。
方式二:
HttpSession s = request.getSession(false);
注:
当flag为false,先查看请求当中是否有sessionId,如果没有,
返回null;如果有sessionId,则依据该sessionId去查找对应的
session对象,如果找到了,则返回该session对象,如果没有找到,
返回null。
方式三:
HttpSession s = request.getSession();
等价于 request.getSesion(true)。实际工作中一般常用这个。
(4)使用session进行状态管理
a.将数据绑订到session对象上:
session.setAttribute(String name,Object obj);
b.依据绑订名获得绑订值:
Object session.getAttribute(String name);
c.解除绑订:
session.removeAttribute(String name);
(5)session超时
a.什么是session超时?
服务器会把空闲时间过长的session对象从内存当中删除。
为了节省内存空间。
注:
空闲时间一般是半个小时。
b.如何修改超时时间长度?
方式一: 修改web.xml
<session-config>
<session-timeout>30</session-timeout>
</session-config>
注:
每一个web应用都有一个web.xml,另外,容器也有一个
web.xml。
方式二: session.setMaxInactiveInterval(int seconds);
注:
用于设置两次请求之间最大的间隔时间长度,如果超过这个
时间长度,服务器会将session删除。
(6)删除session
session.invalidate();