cookie技術(shù)
a, cookie是什么?
瀏覽器訪問服務(wù)器時(shí),服務(wù)器發(fā)送給瀏覽器
少量的數(shù)據(jù),這些數(shù)據(jù)以set-cookie消息頭的
方式發(fā)送給瀏覽器。瀏覽器會(huì)將set-cookie消
息頭設(shè)置的內(nèi)容保存下來(內(nèi)存或者是硬盤)。
當(dāng)瀏覽器再次訪問服務(wù)器時(shí),會(huì)將之前保存的數(shù)
據(jù)以cookie消息頭的方式發(fā)送給服務(wù)器,通過這
種機(jī)制,可以將瀏覽器與服務(wù)器之間交互的數(shù)據(jù)
保存下來。
b, 創(chuàng)建cookie
Cookie cookie = new Cookie(String name,
String value);
cookie.setMaxAge(int seconds);
response.addCookie(cookie);
c,查詢cookie
//如果沒有cookie,會(huì)返回null
Cookie[] request.getCookies();
String cookie.getName();
String cookie.getValue();
d,編碼問題
cookie的值只能是ascii字符,如果出現(xiàn)了非
ascii字符(比如中文),需要將中文轉(zhuǎn)換成
對應(yīng)的ascii字符表示。
可以使用URLEncoder.encode方法或者
BASE64Encoder.encode方法來實(shí)現(xiàn)轉(zhuǎn)換。
要注意:
在查詢時(shí),要使用對應(yīng)的方法來解碼。
e, 生存時(shí)間
cookie.setMaxAge(int seconds)
單位是秒。
seconds <0: 保存在內(nèi)存里(默認(rèn)值),只有
當(dāng)瀏覽器關(guān)閉,cookie才會(huì)刪除。
seconds > 0: 以文件的方式保存在硬盤上,
超過這個(gè)時(shí)間,瀏覽器會(huì)刪除cookie。
seconds = 0: 立即刪除cookie。
如果要?jiǎng)h除一個(gè)名叫"username"的cookie:
Cookie cookie = new Cookie("username","");
cookie.setMaxAge(0);
response.addCookie(cookie);
f, 路徑問題
瀏覽器在訪問服務(wù)器的某個(gè)路徑時(shí),會(huì)
先比較cookie的路徑與服務(wù)器的路徑,只有
符合條件的cookie才會(huì)發(fā)送給服務(wù)器。
cookie如果沒有調(diào)用setPath方法,則會(huì)
有一個(gè)默認(rèn)的路徑,這個(gè)默認(rèn)的路徑是
創(chuàng)建該cookie的組件的路徑。
比如: /web06_3/jsp01/addCookie.jsp
創(chuàng)建了某個(gè)cookie,則該cookie的路徑是:
/web06_3/jsp01
瀏覽器會(huì)比較cookie的路徑與要訪問的組件
的路徑,只有當(dāng)要訪問的組件的路徑是cookie
的路徑或者及子路徑時(shí),瀏覽器才會(huì)發(fā)送該
cookie組服務(wù)器。
//設(shè)置cookie的路徑
cookie.setPath(String str);
比如:
cookie.setPath("/web06_3");這樣設(shè)置的
作用是,該組件生成的cookie,可以被這個(gè)應(yīng)用
下所有的其它組件訪問到。
練習(xí):
寫一個(gè)Find_AddCookieServlet,該servlet
先查詢有沒有一個(gè)名叫 userProfile的cookie,如果有,則
顯示該cookie的值,如果沒有,則創(chuàng)建該cookie。
new Cookie("userProfile","abc")
g, cookie的限制
cookie可以被禁止。
cookie的大小有限制(大約4k左右,跟
瀏覽器有關(guān)系),數(shù)量也有限制,瀏覽器
在本地大約能保存300個(gè)左右的cookie。
cookie不安全
cookie的值只能是字符串
2015年全國職稱計(jì)算機(jī)考試教材(2007模 .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書籍 | |
全國職稱計(jì)算機(jī)考試速成過關(guān)系列套裝:W .. 定價(jià):¥133 優(yōu)惠價(jià):¥133.0 更多書籍 |