前言
WEB應用程序使用HTTP協議通信,而HTTP協議是"無狀態"協議,即服務器一旦響應完客戶的請求之后,就斷開連接,而同一個客戶的下一次請求將重新建立網絡連接,服務器應用程序有時是需要判斷是否為同一個客戶發出的請求,比如客戶的多次選購商品,,因此,有必要跟蹤同一個客戶發出的請求
狀態管理
將客戶端(瀏覽器)與服務器之間多次交互(一次請求,一次響應)當做一個整體來看待,並且將多次交互所涉及的數據即狀態保存下來 狀態指的是數據 管理指得是多次交互時對數據的修改
由此產生了兩種狀態管理的常見模式
客戶端狀態管理技術: 將狀態保存在客戶端,.代表性的是Cookie技術
服務器端狀態管理技術: 將狀態保存在服務器端,代表性的是Session技術
什么是cookie
因為http協議是一種無狀態協議,,服務器一旦響應完客戶端的請求后就會斷開連接,同一個客戶的下一次請求將重新建立網絡連接,而服務器應用程序有時候是需要判斷是否為同一個客戶發出的請求,,這時候就需要將客戶端與服務端之間的交互當做整體記錄下來進行管理
具體:
瀏覽器向WEB服務器發送請求時,服務器會將少量的數據以set_Cookie消息頭的方式發送給瀏覽器,瀏覽器將這些數據保存下來;
客戶端發送請求:
服務端處理:
key只能自己定義用來區分不同的Cookie的名字
當瀏覽器再次訪問服務器時,會將這些數據以Cookie消息頭的方式發送給服務器
服務器的處理
修改Cookie
Cookie的生存空間
默認情況下,瀏覽器會將Cookie保存在內存中,只要瀏覽器不關閉,Cookie就一直存在
如果希望關閉瀏覽器后Cookie仍在,可以通過設置過期時間
void Cookie.setMaxAge(int seconds); 注seconds單位是秒,精度不是很高
Cookie的生存時間
seconds>0:
瀏覽器要保存Cookie的最長時間為設置的參數值,如果超過指定的時間,瀏覽器會刪除這個Cookie.此時Cookie保存早硬盤上.
seconds=0:
刪除Cookie,在修改Cookie的生存時間為0后,隨着response發送回客戶端,替換原有Cookie,因生命周期到了即將該Cookie刪除
seconds<0:
缺省值,瀏覽器會將Cookie保存到內存中
Cookie編碼
Cookie解碼
Cookie的路徑
發送Cookie的條件
可以修改Cookie的路徑
Cookie的限制