一.session共享的应用场景 每个客户端与服务器交互时生成会话的sessionID是唯一,同个客户端在访问不同的域名:主域名、子域名、跨站点域名或跨服务器域名,会有不同的sessionID,有些应用程序会在session存放用户的状态和信息,同个应用程序的客户端需访问不同的服务端项目,为了使用户在登入后能够在规定时间内保持登入状态,需要进行session共享,多个的项目之间可以使用同个session;
简而言之:不同的服务器之间使用同个用户的session数据
二.Java中的session存储
session的创建:
服务端程序调用HttpServletRequest的getSession()时,创建java对象session,,服务器会为该Session生成唯一的Session id;
通过对象的相关api可以存放数据,响应客户端(携带sessionId),客户端再次请求时会携带id,服务器接受到请求之后就会依据Session id找到相应的Session;
session的存放:
在服务端session存放在内存中,客户端的Cookie保存sessionID;
session的销毁:
1)超时 2)程序调用HttpSession.invalidate() 3)程序关闭;
三.实现
1.添加依赖
spring-session-data-redis
jedis
2.spring的redis 配置
3.web.xml配置
4.以上配置后已经可以进行session共享了,java程序中在用户登入后可以将用户信息存放在session中,这时redis也就存储了session相关的内容;
demo
程序中:
request.getSession().setAttribute("member", member);
//会员信息;
redis:
文章图片
【java常用开发|SprinMvc+Redis 实现session共享】
推荐阅读
- 网络知识|cookie 和 session的区别
- springboot|axios(ajax),springboot 跨域携带session
- Oracle|Oracle SQL的硬解析和软解析
- redis|分布式中使用Redis实现Session共享
- asp|以前用ASP写的留言本