1. 程式人生 > >HTTP會話的使用與管理

HTTP會話的使用與管理

進行 所有 共享 OS 不同的 序列 方式 servlet容器 info

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會話的使用與管理