版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Michaeles/article/details/84800723
一、Session使用原理
请求过程中的session操作:
(1)首先要解析请求中的sessionId信息,然后将sessionId存储到request的参数列表中。
(2)然后再从 request获取session的时候,如果存在sessionId那么就根据Id从session池中获取session,如果sessionId不存在或者session失效,那么则新建session并且将session信息放入session池,供下次使用。
二、重写session
1.在默认的情况下Tomcat的Session管理,如果不进行设置的话是由Tomcat自带的StandardManager类进行控制的。
2.通过自定义Manager, 重写的就是org.apache.catalina.session.ManagerBase(StandardManager)里边的具体写的操作,比如add、findSession、createEmptySession、remove等方法,并将对session的增删改查操作指向了对Redis数据存储的操作。
三、代码实例
public class RedisManager extends StandardManager {
@Override
//调用request.getSession()时,先调用findSession,如果没有获取session信息,调用createSession创建session
public Session findSession(String id) throws IOException {
if (id == null)
return null;
return SessionUtil.getSessionFromRedis(sessions, id, this);
}
@Override
public Session createEmptySession() {
return SessionUtil.createEmptySession(this);
}
}