会话技术
会话技术
从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话。会 话技术就是记录这次会话中客户端态的状与数据的。
因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并 不知道该客户端是谁,所以需要会话技术识别客户端的状态。会话技术是帮助服务器 记住客户端状态(区分客户端)
会话技术分为Cookie和Session:
其中Cookie数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端 可以清除cookie
服务器端向客户端发送一个Cookie
1.创建Cookie
Cookie cookie=new Cookie(键,值);
不能存中文,以Set-Cookie响应头的形式发送给客户端
2.设置持久化时间
cookie.setMaxAge(秒数);
如果不设置持久化时间,cookie会存储在浏览器的内存中,浏览器关闭cookie信息销毁,如果设置持久化时间,cookie信息会被持久化到浏览器的磁盘文件里,过了设置的持久化时间cookie才会被销毁
3.设置携带路径
cookie.setPath(路径);
如果不设置携带路径,那么该cookie信息会在访问产生该cookie的 web资源所在的路径都携带cookie信息
4.向客户端发送cookie
response.addCookie(创建的cookie);
5.删除cookie
不能直接删除,只能用同名同路径的cookie设置持久化时间为0进行覆盖
服务器接收客户端携带的Cookie
1.获取Cookie
Cookie[] cookies=request.getCookies();
2.遍历并根据名称选择所需要的
for(Cookie cookie : cookies){
if(cookie.getName().equal(cookieName)){
String cookieValue = cookie.getValue();
}
}
Session:将数据存储到服务器端,安全性相对好,增加服务器的压力
获取
HttpSession session = request.getSession();
如果服务器中没有该session就创建,如果有就获取
存取数据
Session为域对象,直接使用域对象的通用方法,
session.setAttribute();
session.getAttribute();
session.removeAttribute();、
生命周期
创建:第一次执行request.getSession()时创建
销毁:
1.服务器关闭时
2.session过期/失效(默认30分钟)
计时是从客户端没有任何操作后开始,如果中途出现操作,操作结束后再重新开始计时
时间可以在web.xml文件的
<session-config>
<session-timeout>30</session-timeout>
</session-config>
标签中设置
强行手动销毁
session.invalidate();

浙公网安备 33010602011771号