狀態管理 Cookie

2021-08-28 13:15:02 字數 2865 閱讀 6165

狀態管理

1) 什麼是狀態管理

- 將瀏覽器與web伺服器之間多次互動當作乙個整體來看待,並且將多次互動涉及到的資料(即狀態)儲存下來.

2) 如何進行狀態管理?

- 將狀態儲存在瀏覽器端(cookie)

- 將狀態儲存在伺服器端(session)

(1)什麼是cookie?

- 伺服器臨時存在瀏覽器端的少量資料,用於跟蹤使用者的狀態

(2) cookie的工作原理

- 當瀏覽器訪問伺服器時,伺服器會將少量資料以`set-cookie`訊息頭的方式傳送給瀏覽器,瀏覽器會將這些資料臨時儲存下來,當瀏覽器再次訪問伺服器時,會將這些資料以`cookie`訊息頭的方式傳送給伺服器.

(3) cookie的新增(伺服器將cookie傳送給瀏覽器,response響應物件的方法)

cookie cookie = new cookie(string name , string value);//name:value只能存放字串,名字:值;

response.addcookie(cookie);//將cookie物件作為引數

(4) cookie的獲取(request請求物件的方法)

cookie cookies = request.getcookies();

//首先進行判斷,不為空的時候才可以進行遍歷操作,因為可能乙個cookie也沒有

string name = cookie.getname();

string value = cookie.getvalue();

(5) cookie的生存時間    

- 預設情況下,瀏覽器會將cookie儲存在記憶體中,瀏覽器關閉,則cookie會被刪除.

cookie.setmaxage(int seconds);

注:    

a:單位是s;

b:當seconds>0,瀏覽器將cookie儲存在硬碟上,當超時,cookie刪除

當seconds<0,瀏覽器會將cookie儲存在記憶體中,預設值

sun公司提供的cookie的api中沒有提供直接刪除cookie的方法

比如:要刪除乙個名稱為"username"的cookie:

練習:- 寫乙個servlet,該servlet先檢視有沒有乙個名稱為"cart"的cookie,如果有,則顯示該cookie的值,如果沒有,則新增該cookie

response.setcontenttype("text/html;charset=utf-8");

printwriter out = response.getwriter();

cookie cookies = request.getcookies();

if(cookies != null)

}if(!flag)

}else

(6) cookie的編碼問題

- 什麼是cookie的編碼問題?

cookie只能存放合法的ascii碼字元,中文需要轉換成合法的ascii碼字元形式才能存放!(tomcat高本版已經經過處理)

設定cookie的時候url編碼

string urlencoder.encode(string str , string charset);
讀取cookie的時候url解碼

string urldecoder.decode(string str , string charset);
建議:不管是否為中文,最好統一進行編碼,避免不合法的ascii碼字元

(7) cookie的路徑問題

- 什麼是cookie的路徑

瀏覽器訪問伺服器會比較請求位址是否與cookie的路徑匹配,只有匹配的cookie才會被傳送出去.

- cooki的預設路徑

cookie的預設路徑 = 新增該cookie的元件(servlet/jsp)路徑

比如:/day06/biz01/addcookie.jsp新增了乙個cookie,則該cookie的路徑為/day06/biz01

匹配規則:請求路徑(位址)必須等於cookie的路徑或者是cookie的子路徑

比如,cookie的路徑是"/day06/biz01",則訪問如下位址

- 修改cookie的路徑

cookie.setpath(string path);//預設路徑為web元件所在路徑

狀態管理之Cookie

一 cookie 工作流程 如果在使用者請求站點中不僅僅是乙個頁面,還有乙個包含過期時間的 cookie 使用者的瀏覽器在獲得頁面的同時還獲得了該 cookie 並將它儲存在使用者硬碟上的某個資料夾中。以後,如果該使用者再次請求該站點,瀏覽器便會在本地硬碟上查詢與之關聯 cookie 如果該 coo...

認識Cookie和狀態管理

cookie session 構造方法 public cookie string name,string value getname方法 setvalue與getvalue方法 setmaxage與getmaxage方法 setpath與getpath方法 1.建立cookie物件 2.設定最大時效...

HTTP狀態管理機制之Cookie

cookie 最早是網景公司的雇員 lou montulli 在1993年3月發明,後被 w3c 採納,目前 cookie 已經成為標準,所有的主流瀏覽器如 ie chrome firefox opera 等都支援。cookie 的誕生是由於 http 協議的天生缺陷,http 是一種無狀態的協議,...