Tomcat的Session管理機制
阿新 • • 發佈:2019-01-01
一、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); } }