1.Http協(xié)議與Cookie(了解)
Cookie是Http協(xié)議制定的。先有服務(wù)器保存Cookie到瀏覽器,再下次瀏覽器請(qǐng)求服務(wù)器時(shí)把上一次請(qǐng)求得到的Cookie歸還給服務(wù)器。
由服務(wù)器創(chuàng)建保存到客戶端的一個(gè)鍵值對(duì)。服務(wù)器保存Cookie的響應(yīng)頭,使用response發(fā)送響應(yīng)頭:Set-Cookie:aaa=AAA;Set-Cookie:bbb=BBB;例如:
response.addHeader("Set-Cookie","aaa=AAA");response.addHeader("Set-Cookie","bbb=BBB");當(dāng)瀏覽器請(qǐng)求服務(wù)器時(shí),會(huì)把該服務(wù)器保存的Cookie隨請(qǐng)求發(fā)送給服務(wù)器。瀏覽器歸還Cookie的請(qǐng)求頭:Cookie:aaa=AAA;bbb=BBB。多個(gè)鍵值對(duì)間用分號(hào)隔開。
Http協(xié)議規(guī)定(為了不給瀏覽器太大壓力)1個(gè)Cookie最大4KB
1個(gè)服務(wù)器最多向1個(gè)瀏覽器保存20個(gè)Cookie
1個(gè)瀏覽器最多可以保存300個(gè)Cookie
2.Cookie的用途
- 服務(wù)器使用Cookie來跟蹤客戶端狀態(tài)。
- 保存購物車(購物車中的商品不能使用request域來保存,因?yàn)樗且粋€(gè)用戶向服務(wù)器發(fā)送的多個(gè)請(qǐng)求信息)
- 顯示上次登錄用戶名(并記住密碼)
3.Java Web中使用Cookie
原始的方式:使用response發(fā)送Set-Cookie響應(yīng)頭。
使用request獲取請(qǐng)求頭。便捷方式:使用response.addCookie()方法向?yàn)g覽器保存Cookie。
使用request.getCookies()方法獲取瀏覽器歸還的Cookie,返回的對(duì)象為Cookie數(shù)組。若沒有Cookie則返回NULL。
4.Cookie詳解
- Cookie不只有name和value兩個(gè)屬性。
- Cookie的maxAge:指Cookie的最大生命,即Cookie可保存在客戶端中的最大時(shí)長,以秒為單位。
- maxAge>0:瀏覽器會(huì)把Cookie保存到客戶端硬盤上,有效時(shí)長為maxAge的值決定,例如:cookie.setMaxAge(60)表示這個(gè)Cookie會(huì)被瀏覽器保存到硬盤上60秒。
- maxAge<0:Cookie只會(huì)在瀏覽器內(nèi)存中存在,當(dāng)用戶關(guān)閉瀏覽器時(shí)瀏覽器進(jìn)程結(jié)束,同時(shí)Cookie也就死亡了。
- maxAge=0:瀏覽器會(huì)馬上刪除這個(gè)Cookie。