程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Servlet之cookie處理

Servlet之cookie處理

編輯:C++入門知識

Servlet之cookie處理


Cookies 通常設置在 HTTP 頭信息中(雖然JavaScript 也可以直接在浏覽器上設置一個 Cookie)。設置 Cookie 的 Servlet 會發送如下的頭信息:

HTTP/1.1 200 OK
Date: Fri, 04Feb 2000 21:03:38 GMT
Server:Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=xyz; expires=Friday, 04-Feb-0722:03:38 GMT;
path=/;
domain=w3cschool.cc
Connection:close
Content-Type:text/html

Set-Cookie 頭包含了一個名稱值對、一個GMT 日期、一個路徑和一個域。名稱和值會被 URL 編碼。expires 字段是一個指令,告訴浏覽器在給定的時間和日期之後"忘記"該 Cookie

以下是在 Servlet 中操作 Cookies 時可使用的有用的方法列表。

1 public void setDomain(String pattern)

該方法設置 cookie 適用的域,例如w3cschool.cc。

2 public String getDomain()

該方法獲取 cookie 適用的域,例如w3cschool.cc。

3 public void setMaxAge(int expiry)

該方法設置 cookie 過期的時間(以秒為單位)。如果不這樣設置,cookie 只會在當前 session 會話中持續有效。

4 public int getMaxAge()

該方法返回 cookie 的最大生存周期(以秒為單位),默認情況下,-1 表示 cookie 將持續下去,直到浏覽器關閉。

5 public String getName()

該方法返回 cookie 的名稱。名稱在創建後不能改變。

6 public void setValue(String newValue)

該方法設置與 cookie 關聯的值。

7 public String getValue()

該方法獲取與 cookie 關聯的值。

8 public void setPath(String uri)

該方法設置 cookie 適用的路徑。如果您不指定路徑,與當前頁面相同目錄下的(包括子目錄下的)所有 URL 都會返回 cookie。

9 public String getPath()

該方法獲取 cookie 適用的路徑。

10 public void setSecure(boolean flag)

該方法設置布爾值,表示 cookie 是否應該只在加密的(即SSL)連接上發送。

11 public void setComment(String purpose)

該方法規定了描述 cookie 目的的注釋。該注釋在浏覽器向用戶呈現 cookie 時非常有用。

12 public String getComment()

該方法返回了描述 cookie 目的的注釋,如果cookie 沒有注釋則返回 null。

創建一個 Cookie 對象:

Cookie cookie = newCookie("key","value");

無論是名字還是值,都不應該包含空格或以下任何字符:

[ ] ( ) = ," / ? @ : ;

設置最大生存周期:

cookie.setMaxAge(60*60*24); //以秒為單位

添加Cookies:

response.addCookie(cookie);

刪除Cookie就是把生命周期設置為0

cookie.setMaxAge(0);

設置Cookie的使用路徑

cookie.setPath(“/sessionWeb/”); //只有contextPath為”/ sessionWeb”的程序才能訪問該cookie,參數必須以”/”結尾

設置Cookie的訪問域名

cookie.setDomain(“.google.com”); //所有以”.google.com”結尾的域名都可訪問該cookie

中文屬於Unicode編碼,在內存中占四個字符,而英文屬於ASCII字符,內存中只占兩個字符,cookie中使用Unicode字符時需要對Unicode字符進行編碼,否則會出現亂碼,編碼可以使用java.net.URLEncoder類中的方法

Cookie cookie =new Cookie(
      URLEncoder.encode("姓名","UTF-8"),
      URLEncoder.encode("張三","UTF-8")
      );
response.addCookie(cookie);
 
if(request.getCookies()!= null){
      for(Cookie cookie : request.getCookies()){
             String name = URLEncoder.decode(cookie.getName(),"UTF-8");
             String name =URLEncoder.decode(cookie.getValue(),"UTF-8");
             }
      }


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved