一:會話技術簡介web
二:cookie技術瀏覽器
cookie是將用戶的信息保存在客戶端的會話技術tomcat
建立cookie的條件:安全
圖解cookie的存儲過程服務器
三:session技術cookie
session出現的緣由是:服務端返回給客戶端的cookie過多,服務端和客戶端的進行傳輸通訊增長,影響性能,session的出現就是爲了解決這一問題。在客戶端域服務端進行交互的時候,沒必要要每次都返回cookie,只須要給客戶端一個惟一標識的id便可(JSESSIONID),這個ID值就是name爲JSESSIONID的cookie。session
session會話技術是存儲在服務端的會話技術。客戶端每次訪問時,會在服務端建立一小塊內存,用來保存客戶端的信息,要求客戶端攜帶JSESSOIONID去尋找屬於本身的一小塊內存。session須要藉助cookie存儲的JSESSIONID值。問題是:若是存儲的session過多,形成服務端的壓力過大,效率下降。分佈式
1.獲取session 性能
HttpSession session = request.getSession();編碼
這句話是得到屬於當前會話的session對象。若是該session對象已經存在,就直接返回;若是不存在,就會建立新的session對象返回(原理是:根據客戶端攜帶的JSESSIONID尋找服務端是否有該session)
2.向session對象中存取數據
由於session是域對象,全部有通用的三個方法
session.setAttribute(String ,string)
session.getAttribute(String)
session. removeAttribute(String)
3.session對象的生命週期
建立:執行request.getSession()開始建立session對象
銷燬:
(1)session過時,默認30分鐘,
(2)在服務器(非正常)關閉時銷燬。
(3)手動銷燬session:使用session.invalidate();
做用範圍:默認在一次會話中,也即在一次會話中的全部資源共用一個session對象
瀏覽器關閉不等於session銷燬!!! 由於session技術是基於cookie技術實現,重啓瀏覽器在次訪問原來的鏈接依然會建立新的session對象。由於cookie默認在瀏覽器關閉時消失,也就意味着JSESSIONID找不到了。可是原來的session對象還在服務端存儲,只是再也找不到了(沒有了JSESSIONID),只有等到session自動銷燬。
圖解session的存儲過程
總結:session和cookie都是爲了保持(記錄)用戶的訪問狀態,一方面是爲了業務功能的簡單實現,另外一方面是爲了簡化服務端程序設計。
分佈式session:解決的是session共享的問題。例如在tomcat下有兩個應用:web1和web2,訪問web1會建立一個session對象session1,訪問web2會建立session對象session2,在不一樣的應用中session是不共享的,要想解決session共享,就須要考慮使用分佈式session解決。