Cookie和Session

  1. http请求:

HTTP 遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待直到收到服务器端响应。HTTP 是无状态协议,这意味着服务器不会在两个请求之间保留任何数据(状态)。此时就需要一种可以进行请求间数据传递的回话跟踪技术,这时Cookie和Session就上场了。

  1. Cookie

HTTP Cookie(也叫 Web Cookie 或浏览器 Cookie)是服务器生成的,然后发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie 使基于无状态的HTTP协议记录稳定的状态信息成为了可能。

  1. Session

Session,即会话,当然,Cookie也是会话跟踪技术,不同的是Cookie保存在了客户端,而Session则是将会话状态保存在了服务器端。什么是"会话"?当服务器打来浏览器,从发出第一次请求开始,一直到最终关闭浏览器,就表示一次会话的完成。

3.1 Session工作原理
在服务器(Tomcat)系统中会为每个会话维护一个Session,不同的会话,对应不同的Session。那么,系统是如何各个Session对象呢?即是如何做到在同一会话过程中,一直使用的是同一个Session对象呢?
每个Session都是以Map形式管理的,这个Map称为Session列表。key值为一个32位的随机字符串,称为JSessionID,value为Session对象的引用。如下图所示:

在这里插入图片描述

3.2. 开始访问
当服务端第一次请求时,服务端会自动生成一个Map.Entry对象,key为某种算法生成的JSessionID,value为新创建的对象。

3.3.服务器生成并发送Cookie

当用户第一次请求时,服务器包装了一个Cookie,Cookie的name是JSessionID,value就是这32位长度的字符串。服务器使用 Set-Cookie 响应头部向用户代理(一般是浏览器)发送 Cookie信息。一个简单的 Cookie 可能像这样:

在这里插入图片描述

3.4.客户端接收并发送Cookie
客户端收到这个Cookie后将将其保存在缓存中,只要浏览器不关闭,就不会消失。
当用户第二次提交时,就将缓存中的Cookie伴随着请求头部的信息,一起发送到服务器。

在这里插入图片描述

3.5.从Session列表中查找
服务器通过读取请求头中的Cookie信息,获取名称为JSESSIONID的值,从Map中查找响应的key对应的value,即Session对象。然后,对Session对象的域属性 读写操作。

参考:
Cookie
Session

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值