关于会话(session),你应该了解这些

关于会话(session),你应该了解这些一 什么是会话 会话 Session 代表的是客户端与服务器的一次交互过程 这个过程可以是连续也可以是时断时续的 在 Servlet 中 jsp 一旦用户与服务端交互 服务器 tomcat 就会为用户创建一个 session 同时前端会有一个 jsessionid 每次交互都会携带 如此一来

大家好,我是讯享网,很高兴认识大家。
一、什么是会话

会话Session代表的是客户端与服务器的一次交互过程,这个过程可以是连续也可以是时断时续的。在Servlet中(jsp),一旦用户与服务端交互,服务器tomcat就会为用户创建一个session,同时前端会有一个jsessionid,每次交互都会携带。如此一来,服务器只要在接到用户请求时候,就可以拿到jsessionid,并根据这个ID在内存中找到对应的会话session,当拿到session会话后,那么我们就可以操作会话了。会话存活期间,我们就能认为用户一直处于正在使用着网站的状态,一旦session超期过时,那么就可以认为用户已经离开网站,停止交互了。用户的身份信息,我们也是通过session来判断的,在session中可以保存不同用户的信息。

二,会话种类
无状态会话
有状态会话


讯享网

  • 注:tomcat会话可以通过手段实现多系统之间的状态同步,但是会损耗一定的时间,一旦发生同步那么用户请求就会等待,这种做法不可
三,在不同类型系统中改如何存储会话
Tomcat会话

tomcat自带一套会话管理机制, 如果项目部署到单tomcat中的话,用户首次访问服务端,这个时候会话产生,并且会设置jsessionid放入cookie中,后续每次请求都会携带jsessionid以保持用户状态。
在这里插入图片描述

动静分离会话

动静分类前后端不在同一台服务器上,这样就导致了用户请求服务端是通过http请求的,前面也说了http请求是无状态的,服务器是拿不到session,这样怎么办呢?我们可以利用一些cookie+中间件来存储session,例如cookie+redis,当用户第一次请求以后,我们手动设置一个token,作为用户会话,放入redis中,如此作为redis-session,并且这个token设置后放入前端cookie中(app或小程序可以放入本地缓存),如此后续交互过程中,前端只需要传递token给后端,后端就能识别这个用户请求来自谁了。
在这里插入图片描述

集群分布式下的会话

集群或分布式系统本质都是多个系统,假设这个里有两个服务器节点,分别是AB系统,他们可以是集群,也可以是分布式系统,一开始用户和A系统交互,那么这个时候的用户状态,我们可以保存到redis中,作为A系统的会话信息,随后用户的请求进入到了B系统,那么B系统中的会话我也同样和redis关联,如此AB系统的session就统一了。当然cookie是会随着用户的访问携带过来的。那么这个其实就是分布式会话,通过redis来保存用户的状态。
在这里插入图片描述

小讯
上一篇 2025-03-29 16:56
下一篇 2025-01-25 09:24

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/54231.html