目录
Session是面向连接的状态信息,是对Http无状态协议的补充。浏览器有个Cookie,在一段时间内这个Cookie都存在,然后每次发请求过来都带上一个特殊的jsessionid cookie
,就根据这个东西,在服务端可以维护一个对应的Session域,里面可以放数据。一般的话只要没关掉浏览器,Cookie还在,那么对应的那个Session就在,如果Cookie没了,Session也就没了。常见于什么购物车、登录状态保存。单体系统的时候可以这么用Session,但是分布式系统那么多的服务,Session状态在哪儿维护呢,常见常用的方法:
JWT Token
完全不用Session,使用JWT Token储存用户身份,然后再从数据库或者cache中获取其他的信息。这样无论请求分配到哪个服务器都无所谓。
Tomcat + Redis
使用Session的代码,基于Tomcat原生的Session支持即可,然后就是用一个叫做Tomcat RedisSessionManager
的东西,所有部署的Tomcat都将Session数据存储到Redis即可。在Tomcat的配置文件中配置:
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.R