图解:(概念解释) 访问浏览器时,点击设置➡隐私和安全性设置➡Cookie 及其他网站数据➡查看所有的Cookie和网站数据➡搜索localhost
何为会话状态
客户端与服务端通讯过程中产生的状态信息(类似会议记录),称之为会话状态.
会话状态如何存储(Cookie和Session)
客户端和服务端通讯时,使用的时http协议,这个协议本身是无状态协议,也就是说通过此协议,无法存储会话状态,此时就在服务端与客户端采用了Cookie和Session的方式记录会话状态
有状态的会话技术分析
一:Cookie:是由服务端创建,客户端存储会话状态的一个对象,此对象分为俩种类型,一种为会话Cookie,一种为持久Cookie,浏览器在访问具体的某个域名时,会携带这个域的有效Cookie到服务端
- 会话Cookie: 浏览器关闭Cookie生命周期结束(一般默认都是会话Cookie)
- 持久Cookie: 持久Cookie是在Cookie对象创建时指定了生命周期,例如一周时间,即便浏览器关闭,持久Cookie依旧有效
二:Session:有服务端创建,并在服务端存储的一个会话状态的对象,当Session对象创建时,还会创建一个Cookie对象,并且会通过这个会话Cookie将Sessionid写到客户端,客户端下次访问服务端会携带这个会话Cookie,并且通过JsessionId找到Session对象,进而获取Session对象中存储的数据.Cookie默认的生命周期为30分钟
无状态会话技术分析
有状态的会话实现,在分布式架构中可能会存在很多问题,例如浏览器默认不支持携带其它域的Cookie信息进行资源访问,同时服务端的Session默认不能共享,当然我们有一种方式可以将session持久化到到一些数据库,例如Redis,下次请求到其它服务器(例如tomcat)时,可以直接从redis中获取登录信息,但是假如并发比较大,数据库的访问压力就会剧增,压力太大有可能会导致系统宕机.所以现在还有一种方案就是将用户的登录状态信息都存储在客户端,服务端不记录任何状态,服务端只负责对客户端传递过来的状态信息进行解析,基于此方式进行用户登录状态的判断,这样的会话过程称之为无状态会话.
如果在并发量高(访问数据库次数多)的情况下,以上的图就不适用,这时就需要把登录的状态信息存储在客户端,具体概念和实现可查看https://blog.csdn.net/m0_56773332/article/details/119006721?spm=1001.2014.3001.5502
做详细解释