8.会话跟踪(Cookie和Session)
发布时间
阅读量:
阅读量
0.1概述
会话跟踪是一种在Web程序中常用的追踪技术, 用于追踪用户的整个交互流程. 常见的实现手段包括使用cookie和session这两种技术.
0.2Cookie
Cookie被视为一段文本数据。当客户端发起对服务器的请求时,在服务器需记录用户状态的情况下,则会通过response发送一个Cookie给客户端浏览器,并将其保存。
在浏览器再次访问该网站的时候,在线会将请求的网址与伴随生成的cookie一并发送给服务器处理。
服务器检测Cookie以判断用户的使用状态;同时也可以更新Cookie的内容。
//创建cookie对象
Cookie cookie=new Cookie("key1","value1");
Cookie cookie2=new Cookie("key2","value2");
resp.addCookie(cookie); //客户端保存cookie
//获取cookie
Cookie[] cookies=req.getCookie();
cookie的销毁时机:
1.在默认情况下,只要浏览器关闭,Cookie对象就被销毁掉。
2.可以手动设置cookie的有效时间
void setMaxAge(int expiry) 设置cookie的有效期,以秒为单位
//正值表示cookie将在该值表示的秒数后过期
//负值表示cookie不会被持久化,将在浏览器退出时删除(默认为-1)
//0表示删除cookie
0.3Session
session是另一种记录客户状态的机制。
当客户端浏览器访问服务器时, 服务器会将客户端信息通过某种方式存储在服务器上
当客户端浏览器在再次访问时,则无需在该session中查找用户的当前状态即可
//创建Session。第一次调用时会创建Session会话;第二次调用都是获取前面创建好的Session会话对象
HttpSession session=request.getSession();
boolean isNew(); 判断是不是当前创建的Session。true代表刚创建;false表示获取之前
session.getId(); 获取Session的会话id。这个id是唯一的
存取数据
setAttribute("key1","value1");
getAttribute("key1");
HttpSession的的销毁时机:
1.当创建session时会附带着创建一个cookie,该cookie存在浏览器中
2.当浏览器关闭时,只清除了与之相关的cookie
3.而session只有当默认到期时间30分钟到了后才会被销毁
4.可以设置session的到期时间
<!--配置全局的HttpSession的超时时间为5分钟-->
<session-config>
<session-timeout>5</session-timeout>
</session-config>
//配置单个HttpSession的销毁时间
public void setMaxInactiveInterval(int interval);设置session的超时时间,超过指定时间,session就会被销毁,以秒为单位。默认为30分钟
public void getMaxInactiveInterval();获取session的超时时间
0.4HttpSession与Cookie的区别
相同点:都是跟踪用户的会话技术
不同点:
cookie数据保存在客户端;session保存在服务端。
cookie存储的数据不能超过4k,session没有对数据存储的限制。
cookie不是很安全,别人可以分析本地的cookie进行cookie欺骗。
session会在一定时间内保存在服务器上,会比较占用服务器性能。
session可以保存复杂的数据类型。
全部评论 (0)
还没有任何评论哟~
