Cookie

創建Cookie

Cookie cookie = new Cookie("cookieName","cookieValue");
其中cookieName爲Cookie對象的名稱,未來獲取Cookie的時候需要使用。cookieValue爲Cookie對象的值也就是儲存用戶的信息如用戶名、 密碼等。
這步完成了只是實例化了對象,之後需要用到response.addCookie();將cookie加入到HTTP頭中

讀取Cookie

Cookie cookies[] = request.getCookies();
注意或得到的是所有Cookie的數組對象,需要循環遍歷使用
for(int i=0;i<cookies.length;i++)
System.out.println(cookies[i].getValue());

Cookie中的方法  

類型 方法名 方法解釋
String getName() 返回Cookie的名字。
String getValue() 返回Cookie的值。
void setValue(String newValue) cookie創建後設置一個新的值。
void setMaxAge(int expiry) 以秒計算,設置Cookie過期時間。
int getMaxAge() 返回Cookie過期之前的最大時間,以秒計算。
void setComment(String purpose) 設置cookie中註釋。
String getComment() 返回cookie中註釋,如果沒有註釋的話將返回空值.
String getDomain() 返回cookie中Cookie適用的域名. 使用getDomain() 方法可以指示瀏覽器把Cookie返回給同 一域內的其他服務器,而通常Cookie只返回給與發送它的服務器名字完全相同的服務器。注意域名必須以點開始(例如.yesky.com)
String getPath() 返回Cookie適用的路徑。如果不指定路徑,Cookie將返回給當前頁面所在目錄及其子目錄下 的所有頁面。
boolean getSecure() 如果瀏覽器通過安全協議發送cookies將返回true值,如果瀏覽器使用標準協議則返回false值。
int getVersion() 返回Cookie所遵從的協議版本。
void setDomain(String pattern) 設置cookie中Cookie適用的域名
void setPath(String uri) 指定Cookie適用的路徑。
void setSecure(boolean flag) 指出瀏覽器使用的安全協議,例如HTTPS或SSL。
void setVersion(int v) 設置Cookie所遵從的協議版本。   
   
設置Cookie的存在時間,及刪除Cookie

  在JSP中,使用setMaxAge(int expiry)方法來設置Cookie的存在時間,參數expiry應是一個整數。正值表示cookie將在這麼多秒以後失效。注意這個值是cookie 將要存在的最大時間,而不是cookie現在的存在時間。負值表示當瀏覽器關閉時,Cookie將會被刪除。零值則是要刪除該Cookie。如:  
  

<%
   Cookie deleteNewCookie=new Cookie("newcookie",null);
   deleteNewCookie.setMaxAge(0); //刪除該Cookie
   deleteNewCookie.setPath("/");
   response.addCookie(deleteNewCookie);
%>

需要注意的一些問題

  1. Cookie的兼容性問題

Cookie 的格式有2個不同的版本,第一個版本,我們稱爲Cookie Version 0,是最初由Netscape公司制定的,也被幾乎所有的瀏覽器支持。而較新的版本,Cookie Version 1,則是根據RFC 2109文檔制定的。爲了確保兼容性,JAVA規定,前面所提到的涉及Cookie的操作都是針對舊版本的Cookie進行的。而新版本的Cookie目 前還不被Javax.servlet.http.Cookie包所支持。

  1. Cookie的內容

同樣的Cookie的 內容的字符限制針對不同的Cookie版本也有不同。在Cookie Version 0中,某些特殊的字符,例如:空格,方括號,圓括號,等於號(=),逗號,雙引號,斜槓,問號,@符號,冒號,分號都不能作爲Cookie的內容。這也就 是爲什麼我們在例子中設定Cookie的內容爲"Test_Content"的原因。
雖然在Cookie Version 1規定中放寬了限制,可以使用這些字符,但是考慮到新版本的Cookie規範目前仍然沒有爲所有的瀏覽器所支持,因而爲保險起見,我們應該在Cookie的內容中儘量避免使用這些字符


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章