1. 程式人生 > >JavaWeb學習筆記 (七) Cookie與Session

JavaWeb學習筆記 (七) Cookie與Session

一. Cookie

1.什麼是Cookie

餅乾,其實是一份小資料,在伺服器生成,然後給客戶端,並且存放在客戶端上

2.應用場景

(1) 自動登陸 會記住我們的賬號密碼
(2) 瀏覽記錄
(3) 購物車

3.為什麼要有Cookie

(1)http請求是無狀態協議,其實就是在客戶端在訪問伺服器的時候,伺服器根本不知道,這個客戶端之前有沒有訪問過自己,即客戶端的每次請求都是獨立的。
(2)使使用者有更好的體驗
(3)對公司來說,可以收集使用者的習慣

4.Cookie的簡單使用

程式碼
在這裡插入圖片描述

第一次請求的請求頭和響應頭
在這裡插入圖片描述


新增Cookie後,在響應頭裡多了set-cookie這條訊息,此時的請求頭中沒有cookie資料

第二次請求的請求頭和響應頭
在這裡插入圖片描述
第二次請求中,請求頭中包含cookie資料

由於第一次請求時,客戶端沒有cookie,程式碼裡此時的cookie陣列為空,請求結束後,伺服器傳送cookie資料給客戶端,再次請求時,客戶端的請求頭中就會攜帶cookie的資料進行請求,此時cookie陣列中就能拿到請求頭中cookie攜帶的資料,列印至控制檯。

5.cookie的有效期

預設情況下,關閉瀏覽器就沒有cookie了。
但可以通過cookie.setMaxAge()來設定cookie的有效期。
其中時間以秒為單位,正值代表這個數字過後cookie就會失效;負值代表關閉瀏覽器就會失效,預設值是-1,0代表立馬刪除cookie

6.cookie的安全問題

(1) cookie的資料儲存在客戶端,有安全隱患問題
(2) 客戶端儲存的cookie資料有限(瀏覽器總共有300個cookie)

二. Session

1.什麼是Session

session是基於Cookie的一種會話機制。為了解決cookie的安全問題,將資料放至伺服器端。

2.Session的範圍

  • 何時建立

在servlet裡面呼叫以下程式碼,session建立。
HttpSession sessiom = request.getSession();

  • 何時銷燬

session是存放在伺服器的記憶體的一份資料,可以持久化。即使關閉瀏覽器,seesion依然存在。
(1) 關閉伺服器,session銷燬
(2) session會話時間過期,一般預設有效期:30分鐘