之前也有介绍Cookie和Session,这里接着回顾+介绍
HTTP 协议自身是属于 "无状态" 协议.------->"无状态" 的含义指的是:默认情况下 HTTP 协议的客户端和服务器之间的这次通信, 和下次通信之间没有直接的联系.
但是实际开发中, 我们很多时候是需要知道请求之间的关联关系的.
例如登陆网站成功后, 第二次访问的时候服务器就能知道该请求是否是已经登陆过了.
图中的 "令牌" 通常就存储在 Cookie 字段中
像上面例子中此时在服务器这边就需要记录令牌信息, 以及令牌对应的用户信息, 这个就是 Session 机制(session叫理解会话机制)所做的工作.
服务器同一时刻受到的请求很多,服务器需要清楚的区分每个请求属于哪个用户,因此就需要在服务器这边记录每个用户令牌以及用户的信息的对应关系(就像上面的例子中,就诊卡就是一张令牌,要想让这个令牌能够生效,就需要医院通过系统记录每个就诊卡和患者信息之间的关联关系)
会话的本质是一个哈希表,存储了一些键值对结构,key就是令牌的ID(token/sessionId),value就是用户信息
sessionId是由服务器生成的一个"唯一性字符串",从session机制的角度来看,这个唯一性字符串成为"sessionId";但是站在整个登录流程中看待,也可以把这个唯一性字符串称为"token".token和sessionId可以理解为同一个东西,只不过是不同视角的不同叫法
注意:Servlet 的 Session 默认是保存在内存中的. 如果重启服务器则 Session 数据就会丢失.