【tomcat】sessionId學習(未完待續)
阿新 • • 發佈:2018-10-23
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學習(未完待續)