會話技術的概述
- 用戶打開一個瀏覽器,點擊多個超鏈接訪問服務器的web資源,然後關閉瀏覽器,整個過程成爲一次會話。
- 每個用戶和服務器進行交互過程中,產生一些各自的數據,程序想要把這些數據進行保存,就需要使用會話技術。
會話技術的實現原理
- cookie:cookie是客戶端技術,程序把每個用戶的數據以cookie的形式存到各自的瀏覽器中。當用戶使用瀏覽器再次訪問服務器中的web資源的時候,就會帶着各自的數據過去。這樣,web資源處理的就是用戶各自的數據了。
- session:session是服務器端技術,利用這個技術,服務器在運行的時候爲每一個用戶創建一個獨享的session對象。由於session爲用戶瀏覽器獨享,所有用戶在訪問服務器的時候,可以把各自的數據放在各自的session中,當用戶再次訪問服務器中的web資源時,其他web資源再從用戶各自的session中取出數據爲用戶服務。
Cookie分類
-
默認級別的Cookie
指沒有設置有效時間的Cookie,默認的情況下只要關閉了瀏覽器,Cookie也會被銷燬。(Cookie存在於瀏覽器的內存中,當關閉了瀏覽器Cookie就銷燬了。) -
持久級別的Cookie
指有有效時間的Cookie,這種Cookie的內容不是保存在瀏覽器的內存中,而是保存在本地硬盤上。 -
Cookie的使用細節
- 一個cookie只用標識一種信息,至少含有一個標識該信息的名稱和值;
- 一個web站點可以給一個瀏覽器發送多個Cookie,一個瀏覽器可以存儲多個web站點的Cookie;
- 瀏覽器存放的cookie的大小和個數是有限制的;
- 默認被創建的cookie是會話級別的,關閉瀏覽器則摧毀;
- 需要手動刪除持久性的Cookie,可以將有效時長改爲0,注意:path需一致,否則無法刪除。
Session概述
- Session與cookie的區別
-
Session沒有個數和大小的限制
-
數據是保存在服務器上的(相對安全)
-
- Session如何保存用戶數據
Session對象由服務器創建,開發人員可以調用request對象的getSession方法得到Session對象。
- Session的實現原理
是基於Cookie的,基與Cookie回寫了一個Session的id。
- Session做爲域對象存取數據
- 存入:SetAttribute
- 取出:GetAttribute
- 移除:RemoveAttribute
- 作用範圍:一次會話。指的是用戶打開瀏覽器訪問服務器資源,到最後關閉瀏覽器的過程。
Servlet的數據訪問範圍的總結
- Servlet域對象的總結
- 請求範圍(ServletRequest)
- 何時創建和銷燬的:請求創建,響應銷燬。
- 如何存取數據:傳值類型爲object。
- 作用範圍:一次請求。
- 會話範圍(HttpSession)
- 何時創建和銷燬的:服務器端第一次調用getSession()方法即創建。銷燬:①Session過期,默認過期時間爲30分鐘;②非正常關閉服務器;③手動調用session.invalidate()。
- 如何存取數據:傳值類型爲object。
- 作用範圍:一次會話。
- 應用範圍(ServletContext)
- 何時創建和銷燬的:服務器啓動時創建,爲每個web項目創建一個單獨的ServletContext對象。銷燬:服務器關閉時,或者項目從服務器中移除。
- 如何存取數據:傳值類型爲object。
- 作用範圍:整個web項目。
- 請求範圍(ServletRequest)