Java小技巧:關(guān)于Java中Cookie的操作
Java中的Cookie操作是每個Java Web開發(fā)人員必備的只是,本文將向您介紹Java中Cookie操作的四個小技巧。
測試環(huán)境:JDK1.5、Tomcat5.5
一、設(shè)置Cookie
1)Cookie cookie = new Cookie("key", "value");
2)cookie.setMaxAge(60); //設(shè)置60秒生存期,如果設(shè)置為負(fù)值的話,則為瀏覽器進程Cookie(內(nèi)存中保存),關(guān)閉瀏覽器就失效。
3)cookie.setPath("/test/test2"); //設(shè)置Cookie路徑,不設(shè)置的話為當(dāng)前路徑(對于Servlet來說為request.getContextPath() + web.xml里配置的該Servlet的url-pattern路徑部分)
4)response.addCookie(cookie);
二、讀取Cookie
11//該方法可以讀取當(dāng)前路徑以及“直接父路徑”的所有Cookie對象,如果沒有任何Cookie的話,則返回null
22Cookie[] cookies = request.getCookies();
三、刪除Cookie
1Cookie cookie = new Cookie("key", null);
2cookie.setMaxAge(0); //設(shè)置為0為立即刪除該Cookie
3cookie.setPath("/test/test2"); //刪除指定路徑上的Cookie,不設(shè)置該路徑,默認(rèn)為刪除當(dāng)前路徑Cookie
4response.addCookie(cookie);
四、注意:假設(shè)路徑結(jié)構(gòu)如下
/
/test
/test/test2
/test345
/test555/test666
a.相同鍵名的Cookie(值可以相同或不同)可以存在于不同的路徑下。
b. 刪除時,如果當(dāng)前路徑下沒有鍵為"key"的Cookie,則查詢?nèi)扛嘎窂?,檢索到就執(zhí)行刪除操作(每次只能刪除一個與自己最近的父路徑Cookie)
FF.必須指定與設(shè)定cookie時使用的相同路徑來刪除改cookie,而且cookie的鍵名不論大寫、小寫或大小混合都要指定路徑。
IE.鍵名小寫時,如果當(dāng)前路徑為/test/test2,如果找不到再向上查詢/test、/test555、/test345,如果還找不到就查詢/ 。(/test555/test666不查詢)
鍵名大小寫混合或大寫時,不指定路徑則默認(rèn)刪除當(dāng)前路徑,并且不向上查詢。
c.讀取Cookie時只能讀取直接父路徑的Cookie。
如果當(dāng)前路徑為/test/test2,要讀取的鍵為"key"。當(dāng)前路徑讀取后,還要讀取/test,/test讀取后,還要讀取/
d.在做Java的web項目時,由于一般的Web服務(wù)器(如Tomcat或Jetty)都用Context來管理不同的Web Application,這樣對于每個Context有不同的Path,
在一個Server中有多個Web Application時要特別小心,不要設(shè)置Path為/的Cookie,容易誤操作。(當(dāng)然前提是域名相同)
【編輯推薦】