会话跟踪技术

image.png
image.pngimage.png
一个浏览器是一个会话 三个会话
image.png
image.png
image.png

会话跟踪技术实现

image.png

客户端: Cookie

image.png

服务端: Session

image.png

Cookie

Cookie 使用

image.pngimage.pngimage.png

发送 Cookie

image.png
Tomcat可以获取reponse响应中的Cookie返回到客户端浏览器
image.png

查看 Cookie

image.png

获取 Cookie

image.png
客户端所有Cookie
image.png
获取所有Cookie封装到Cookie数组中
并进行遍历
做判断需要获取的Cookie键的名
image.png
访问bddServlet,获取addServlet的Cookie
控制台输出:
image.png
一次会话两次请求共享数据

Cookie 原理

image.png
通过reqonse.addCookie()设置了set-cookie响应头 发送数据
在通过request.getCookie()获取cookie请求头

响应头:Set-Cookie

image.png

请求头: Cookie

image.png

Cookie 使用细节

Cookie 存活时间

image.png
调用setMaxAge(int seconds)设置为一周
image.png
image.png

Cookie 存储中文

image.png
URL编码 使用URLEncoder.encode(“XXX”,”UTF-8”);
image.png
发送中文的URL编码Cookie
image.png
接受中文的URL编码Cookie
image.png
使用URLDecoder.decode(xxx,”UTF-8”);解码
image.png
image.png

Session

Session 使用

image.png
image.png

  1. 获取Session对象
  2. 调用Session对象使用方法和request一致
  3. 使用setAttribute和getAttribute 存储和获取对象

    存储Session

    image.png

    获取Session

    image.png

    Session 原理

    Session是基于Cookie的
    多个浏览器访问服务端,Tomcat为进行区分是不是一个会话会给session加上一个id
    id 是和cookie绑定的 : set-cookie:JESSIONID = ?
    image.png
    客户端访问服务器时候会携带这个带id的cookie去访问。
    当该cookie的id值匹配的时候就可以共享数据
    访问存储session的servlet响应头携带 set-cookie
    image.png
    访问获取Session的servlet请求头会有Cookie
    image.png

    Session 使用细节

    Session 钝化、活化

    image.png
    服务器和客户端的Session存储在本地
    钝化:服务器重启,将sesiion数据存入本地
    活化:服务器启动后,客户端依然可以访问硬盘中的session
    Tips:虽然可以访问Session本地数据,但是服务器存储本地的Session会重新序列化和上一个不一致

    Session销毁

    image.png
    web.xml中设置时间,默认30分钟
    image.png
    调用session的invalidate
    image.png

    小结

    image.png
    image.png