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分鐘