Cookie 和 Session 的工作流程

目录

一、为什么要有Cookie

二.Cookie的基本概念

 三、为什么要有session

四.session的基本概念

 所以总的来说


一、为什么要有Cookie

因为http协议在进行通信是无状态协议,简单来说,就是通信一次之后,就把用户数据抹除,下一次通信重新建立连接

为了方便进行通信,所以我们进入了一种名为Cookie的机制,来保证客户端在每次进行请求的时候,不用每次都重新建立关联,而保证有一种持续的关联性

举个例子

Cookie就好比去医院,我们每个人做的第一件事情是办一张就诊卡

只要有了这张就诊卡,不管你以后去多少次医院,就可以直接用就诊卡进行挂号和诊疗

就诊卡就是Cookie

当然,如果程序结束,就意味着Cookie注销,就好比医院倒闭,那么重新启动程序就好比新的医院开张,还是需要新办一张就诊卡

二.Cookie的基本概念

1.Cookie是HTTP协议中的一个字段,同时也是浏览器在客户端这边保存数据的一种方式。
2.Cookie是服务器产生的,通过HTTP响应的Set-Cookie字段来进行设置返回给浏览器的。3.Cookie在浏览器这边存储,浏览器会根据域名/地址来分别存储Cookie,并与下一个请求一起发送到服务器,通常,它用于判断两个请求是否来自同一用户,来决定返回什么样的页面。比如不同用户的购物车,游戏得分信息都是不一样的
4.Cookie存的是键值对结构的字符串,此处的键值对都是程序员自定义的。

 三、为什么要有session

简单来说,医院肯定不是为了你一个人开的(氪佬除外),一家医院在一天是同时接待上万人,为了能够保证能对每个病人对症下药,每当你使用你的就诊卡进行诊疗,那么医院的数据库就会查找出你对应的病症,让医生给你开药

这个医院的数据库就好比session

每次使用就诊卡(Cookie),就会有一个对应的session给你返回响应

四.session的基本概念

1.Session的本质就是一个 “哈希表”,存储了一些键值对结构。key 就是令牌的ID(token/sessionId),value 就是用户信息(用户信息可以根据需求灵活设计)。
2.sessionId 是由服务器生成的一个 “唯一性字符串”,从 session机制的角度来看,这个唯一性字符串称为 “sessionId”。但是站在整个登录流程中看待,也可以把这个唯一性字符串称为 “token”.
3.sessionId 和token就可以理解成是同一个东西的不同叫法(不同视角的叫法)
当用户登陆的时候, 服务器在Session中新增一个新记录, 并把 sessionId / token 通过Set-Cookie字段返回给客户端客户端后续再给服务器发送请求的时候,需要在请求中带上 sessionId/ token(例如通过HTTP请求中的 Cookie 字段带上).
4.服务器收到请求之后,根据请求中的sessionId / token在 Session信息中获取到对应的用户信息后再进行后续操作
5.Servlet 的Session默认是保存在内存中的,如果重启服务器则Session数据就会丢失
 

 所以总的来说

Cookie往往和session配合使用

Cookie往往作用于客户端

session往往作用于服务端

你可能感兴趣的:(java)