一、Session机制
跟踪用户的状态
二、Session跟踪的机制:
1、把SessionID保存到客户端Cookie中
2、若浏览器禁止了cookie,可以在每个URL中加上SessionID[HttpServletResponse接口提供了重写URL的方法:
public String encodeURL(String url) 这个方法在原有的URL加上了SessionID在后面
如:response.encodeURL("xxx.jsp");]
三、Session的持久化
1、为什么要持久化?
1) 假设有一万个不同的用户在访问同一个Web应用,那么服务器内存中将有一万个Session,显然不行。
所以,可以把处于不活动状态的HttpSession对象转移到文件系统或数据库中。
2) 如果客户在访问一个Web应用的时候,服务器重启了,那么如果Session是保存在内存中的,服务器重启之后原来保存
在Session中的数据就丢失了
2、怎么持久化?
Session的持久化是由Session Manager管理的。有两种方式:
StandardManager -是默认的方法,当Tomcat服务器重启或重载的时候,会把Session对象保存到<%CATALINA_HOME%>/work/Catalina/honstname/applicatonname/SESSIONS.ser(默认值)文件中,每个对象对应一个文件,以Session ID为文件名,例如:
<Manager className="org.apache.catalina.session.StandardManager" debug="0"
maxActiveSessions="-1" checkInterval="60" />
</Context>
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
小猫还提供了实现持久化Session Store的接口,org.apache.catalina.Store,目前提供了两个具体实现类:org.apache.catalina.FileStore和org.apache.catalina.JDBCStore。