本文共 1555 字,大约阅读时间需要 5 分钟。
session(会话)
a,session是服务器端的状态管理技术
b,当浏览器访问服务器时,服务器会创建一个session对象(该对象有一个唯一的id号,称之为sessionId),接下来,服务器在默认情况下,会使用set-cookie消息头将这个sessionId发送给浏览器;浏览器会将这个sessionId保存下来(内存);当浏览器再次访问服务器时,会将sessionId使用cookie消息头发送给服务器,服务器依据这个sessionId就可以找到之前创建的session对象。
1)方式一
//HttpSession是一个接口
HttpSession s = request.getSession(boolean flag);
当flag = true时:
先查看请求当中有没有sessionId,如果没有,则创建一个session对象;如果有sessionId,则依据该sessionId查找对应的session对象,如果找到了,则返回,找不到,则创建一个新的session对象。
当flag = false:
先查看请求当中有没有sessionId,如果没有,返回null;如果有sessionId,则依据该sessionId查找对应的session对象,如果找到了,则返回,找不到,返回null。
2)方式二
HttpSession s = request.getSession();等价于 request.getSession(true);
String getId()
//绑定一个对象到session对象上setAttribute(String name,Object obj);
//获得绑定对象,如果不存在,返回nullObject getAttribute(String name);
//解除绑订removeAttribute(String name);
服务器会将空闲时间过长的session对象删除掉。
b.缺省的超时时间服务器缺省的时间限制一般是30分钟。
<session-config> <session-timeout>30</session-timeout></session-config>
修改之后需要重启服务器。c. setMaxInactiveInterval(int seconds);
比如,只有登录成功之后,才能访问main.jsp
step1,登录成功之后,绑定一些数据到session对象上。比如,session.setAttribute("user",user);
step2,对于需要保护的资源,添加session验证的代码。
比如,Object obj = session.getAttribute("user");
if(obj == null){ //没有登录成功或者session超时 response.sendRedirect("login.jsp");}
相对于cookie,session的优点是安全,可以保存大量的数据,可以保存的数据类型更丰富。
cookie是将状态(即数据)保存在浏览器端,而session保存在服务器端,如果访问量很大,使用session机制会占用大量的内存空间。
转载地址:http://kzrws.baihongyu.com/