Session机制

一、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为文件名,例如:

<Context path="/helloapp" docBase="helloapp" debug="0" reloadable="true">
    <Manager className="org.apache.catalina.session.StandardManager" debug="0" 
      maxActiveSessions="-1" checkInterval="60"
 />
</Context>

PersistentManager -提供了更加灵活的管理方式,具有容错能力,可以及时把Session备份到Session Store中,可以控制内存中Session的数量。
小猫还提供了实现持久化Session Store的接口,org.apache.catalina.Store,目前提供了两个具体实现类:org.apache.catalina.FileStore和org.apache.catalina.JDBCStore。


 

你可能感兴趣的:(apache,tomcat,应用服务器,Web,浏览器)