1. 程式人生 > >Tomcat的Session管理機制

Tomcat的Session管理機制

一、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);
    }

}