会话跟踪技术
会话跟踪技术实现
客户端: Cookie
服务端: Session
Cookie
Cookie 使用
发送 Cookie
Tomcat可以获取reponse响应中的Cookie返回到客户端浏览器
查看 Cookie
获取 Cookie
客户端所有Cookie
获取所有Cookie封装到Cookie数组中
并进行遍历
做判断需要获取的Cookie键的名
访问bddServlet,获取addServlet的Cookie
控制台输出:
一次会话两次请求共享数据
Cookie 原理
通过reqonse.addCookie()设置了set-cookie响应头 发送数据
在通过request.getCookie()获取cookie请求头
响应头:Set-Cookie
请求头: Cookie
Cookie 使用细节
Cookie 存活时间
Cookie 存储中文
URL编码 使用URLEncoder.encode(“XXX”,”UTF-8”);
发送中文的URL编码Cookie
接受中文的URL编码Cookie
使用URLDecoder.decode(xxx,”UTF-8”);解码
Session
Session 使用
- 获取Session对象
- 调用Session对象使用方法和request一致
- 使用setAttribute和getAttribute 存储和获取对象
存储Session
获取Session
Session 原理
Session是基于Cookie的
多个浏览器访问服务端,Tomcat为进行区分是不是一个会话会给session加上一个id
id 是和cookie绑定的 : set-cookie:JESSIONID = ?
客户端访问服务器时候会携带这个带id的cookie去访问。
当该cookie的id值匹配的时候就可以共享数据
访问存储session的servlet响应头携带 set-cookie
访问获取Session的servlet请求头会有Cookie
Session 使用细节
Session 钝化、活化
服务器和客户端的Session存储在本地
钝化:服务器重启,将sesiion数据存入本地
活化:服务器启动后,客户端依然可以访问硬盘中的session
Tips:虽然可以访问Session本地数据,但是服务器存储本地的Session会重新序列化和上一个不一致Session销毁
web.xml中设置时间,默认30分钟
调用session的invalidate
小结