1. 程式人生 > >JSP中的Cookie

JSP中的Cookie

esp lag 瀏覽器 方法 過期 詳細 uri pos true

如何創建Cookie

先引包:

import="javax.servlet.http.Cookie"

JSP是使用如下的語法格式來創建cookie的:

Cookie cookie_name =new Cookie("Parameter","Value");

例如:
Cookie username_Cookie =new Cookie("username","SMN");

cookie.setMaxAge(10); //存活期為10秒

response.addCookie(username_Cookie);

  解釋:JSP是調用Cookie對象相應的構造函數Cookie(name,value)用合適的名字和值來創建Cookie,然後Cookie可以通過HttpServletResponse的addCookie方法加入到Set-Cookie應答頭,本例中Cookie對象有兩個字符串參數:username,SMN。註意,名字和值都不能包含空白字符以及下列字符:@ : ;? , " / [ ] ( ) =

處理Cookie的屬性

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

讀取客戶端的Cookie

JSP將調用request.getCookies()從客戶端讀入Cookie,getCookies()方法返回一個HTTP請求頭中的內容對應的Cookie對象數組。你只需要用循環訪問該數組的各個元素,調用getName方法檢查各個Cookie的名字,直至找到目標Cookie,然後對該Cookie調用getValue方法取得與指定名字關聯的值。

例如:

<%
   //從提交的HTML表單中獲取,用戶名
   String userName=request.getParameter("username");

   //以"username", userName 值/對 創建一個Cookie
   Cookie theUsername=new Cookie("username",userName);

   response.addCookie(theUsername);
  %>
  ..............
  <%
   Cookie myCookie[]=request.getCookies();//創建一個Cookie對象數組

   for(int n=0;n=cookie.length-1;i++){//設立一個循環,來訪問Cookie對象數組的每一個元素

   Cookie newCookie= myCookie[n];

   if(newCookie.getName().equals("username")); //判斷元素的值是否為username中的值
    {%>
     你好,<%=newCookie.getValue()%>!//如果找到後,向他問好
    <%}
  }   %
>

設置Cookie的存在時間,及刪除Cookie

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

<%
   Cookie deleteNewCookie=new Cookie("newcookie",null); //newcookie是要刪除的cookie的名字
   deleteNewCookie.setMaxAge(0); //刪除該Cookie
   response.addCookie(deleteNewCookie);
%>

JSP中的Cookie