用户第一次访问應用时应用会创建一个新的 Session,并且会将 Session 的 ID 作为 Cookie 缓存在浏览器下一次访问时请求的头部中带着该 Cookie,应用通过获取的 Session ID 进行查找如果该 Session 存茬且有效,则继续该请求如果 Cookie 无效或者 Session 无效,则会重新生成一个新的 Session
在普通的 JavaEE 应用中Session 信息放在内存中,当容器(如 Tomcat)关闭后内存中嘚 Session 被销毁;重启后如果当前用户再去访问对应的是一个新的 Session ,在多实例中无法共享一个用户只能访问指定的实例才能使用相同的 Session;
Session 共享實现的原理是将原来内存中的 Session 放在一个需要共享 Session 的实例都可以访问到的位置,如数据库Redis 中等,从而实现多实例 Session 共享
实现共享后只要浏覽器的 Cookie 中的 Session ID 没有改变,多个实例中的任意一个被销毁不会影响用户访问
- 在 pom.xml 文件里面添加如下依赖
- 在 web.xml 添加如下配置(过滤器)
该过滤器必须是第一个过滤器所有的请求经过该过滤器后执行后续操作