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