HTTP會話的使用與管理
HTTP會話的使用與管理
一、會話簡介
http是無狀態協議,需要在http請求中添加一些額外的用於跟蹤客戶狀態的數據來區分不同的用戶。
會話機制是用來跟蹤客戶狀態的普遍解決方案。會話是指在一段時間內單位客戶與web應用的一連串相關的交互過程。
在購物網上,一個用戶從開始購物到最後結賬,整個過程為一個會話。
二、javax.servlet.http.HttpSession接口
會話開始,servlet創建一個HttpSession對象,該對象存放客戶狀態信息。每個HttpSession對象有一個唯一的標誌符。SessionID
會話運作流程
三、生命周期與會話範圍
註意區別一下三個範圍:
web應用範圍:共享數據作為ServletContext對象的屬性而存在
請求範圍:共享數據作為ServletRequest對象的屬性存在
會話範圍:瀏覽器端與一個web應用進行一次會話的過程,共享數據作為HttpSession對象的屬性存在
HttpSession接口常見方法
getId():返回sessionID
invalidate():銷毀當前的會話,Servlet容器會釋放HttpSession對象占用的資源
setAttribute(String name,Object value):將一對name/value屬性保存在httpSession對象中
getAttribute(String name):根據Name參數返回保存在HttpSession對象裏面的屬性值
getAttributeNames():以數組的方式返回HttpSession裏面的所有的屬性名
四、會話持久化
把內存中的HttpSession對象保存到文件系統或數據庫中。
好處:
節約內存空間---把處於不活動狀態的HttpSession對象轉移到文件系統或數據庫中,提高對內存資源的利用率。
確保服務器在重啟或單個web應用重啟後,能恢復重啟前的會話。
servelt對所有可以序列化的屬性進行持久化,確保存放在會話範圍內的共享數據不會丟失。----可序列化的屬性是指屬性所屬的類實現了java.io.Seralizable接口。
HTTP會話的使用與管理