1. 程式人生 > >【tomcat】sessionId學習(未完待續)

【tomcat】sessionId學習(未完待續)

cookie 動態 logs ole get edi ioe class iter()

  這裏主要研究tomcat中session的管理方式以及sessionId的原理,下文將研究sessionid存到redis中以及基於redis以及redis實現session共享。

  平時也就是了解session是基於cookie實現的,cookie是保存在客戶端,而session是保存在服務端,對其原來也沒有深入理解。下面將深入理解。

1.什麽是session

  對Tomcat而言,Session是一塊在服務器開辟的內存空間,其存儲結構為ConcurrentHashMap;

2.Session的目的

Http協議是一種無狀態協議,即每次服務端接收到客戶端的請求時,都是一個全新的請求,服務器並不知道客戶端的歷史請求記錄;

Session的主要目的就是為了彌補Http的無狀態特性。簡單的說,就是服務器可以利用session存儲客戶端在同一個會話期間的一些操作記錄;

3.簡單的研究session的創建時機

  我們知道request.getSession(boolean create) 獲取session,並根據參數動態的獲取session,如果傳的參數是true的話不存在session就創建一個並返回一個session;如果傳false,不存在session也不會創建,如下代碼:

throws ServletException, IOException {
        HttpSession session 
= request.getSession(true);// 傳true會創建一個並返回,false不會創建 PrintWriter writer = response.getWriter(); if (session == null) { writer.write("null"); } else { writer.write(session.toString()); } }

查看grequest.etSession(boolean create)的源碼並分析:

參考:http://www.cnblogs.com/chenpi/p/5434537.html

【tomcat】sessionId學習(未完待續)