JSP中的Cookie
如何創建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