JSP Cookie 處理
JSP Cookie 處理
Cookie是存儲在客戶機的文本文件,它們保存了大量軌跡信息。在servlet技術基礎上,JSP顯然能夠提供對HTTP cookie的支持。
通常有三個步驟來識別回頭客:
- 服務器腳本發送一系列cookie至瀏覽器。比如名字,年齡,ID號碼等等。
- 瀏覽器在本地機中存儲這些信息,以備不時之需。
- 當下一次瀏覽器發送任何請求至服務器時,它會同時將這些cookie信息發送給服務器,然後服務器使用這些信息來識別用戶或者幹些其它事情。
本章節將會傳授您如何去設置或重設cookie的方法,還有如何訪問它們及如何刪除它們。
JSP Cookie 處理需要對中文進行編碼與解碼,方法如下:
String str = java.net.URLEncoder.encode("中文","UTF-8"); //編碼 String str = java.net.URLDecoder.decode("編碼後的字符串","UTF-8"); // 解碼
Cookie 剖析
Cookie通常在HTTP信息頭中設置(雖然JavaScript能夠直接在瀏覽器中設置cookie)。在JSP中,設置一個cookie需要發送如下的信息頭給服務器:
HTTP/1.1 200 OK
Date: Fri, 04 Feb 2015 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=runoob; expires=Friday, 04-Feb-07 22:03:38 GMT;
path=/; domain=runoob.com
Connection: close
Content-Type: text/html
正如您所見,Set-Cookie信息頭包含一個鍵值對,一個GMT(格林尼治標準)時間,一個路徑,一個域名。鍵值對會被編碼為URL。有效期域是個指令,告訴瀏覽器在什麽時候之後就可以清除這個cookie。
如果瀏覽器被配置成可存儲cookie,那麽它將會保存這些信息直到過期。如果用戶訪問的任何頁面匹配了cookie中的路徑和域名,那麽瀏覽器將會重新將這個cookie發回給服務器。瀏覽器端的信息頭長得就像下面這樣:
GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz
JSP腳本通過request對象中的getCookies()方法來訪問這些cookie,這個方法會返回一個Cookie對象的數組。
Servlet Cookie 方法
下表列出了Cookie對象中常用的方法:
序號 | 方法 & 描述 |
---|---|
1 | public void setDomain(String pattern)
設置cookie的域名,比如 runoob.com |
2 | public String getDomain()
獲取cookie的域名,比如 runoob.com |
3 | public void setMaxAge(int expiry)
設置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,還有此目錄下的所有子目錄 |
9 | public String getPath()
獲取cookie 的路徑 |
10 | public void setSecure(boolean flag)
指明cookie是否要加密傳輸 |
11 | public void setComment(String purpose)
設置註釋描述 cookie的目的。當瀏覽器將cookie展現給用戶時,註釋將會變得非常有用 |
12 | public String getComment()
返回描述cookie目的的註釋,若沒有則返回null |
使用JSP設置Cookie
使用JSP設置cookie包含三個步驟:
(1)創建一個Cookie對象: 調用Cookie的構造函數,使用一個cookie名稱和值做參數,它們都是字符串。
Cookie cookie = new Cookie("key","value");
請務必牢記,名稱和值中都不能包含空格或者如下的字符:
[ ] ( ) = , " / ? @ : ;
(2) 設置有效期:調用setMaxAge()函數表明cookie在多長時間(以秒為單位)內有效。下面的操作將有效期設為了24小時。
cookie.setMaxAge(60*60*24);
(3) 將cookie發送至HTTP響應頭中:調用response.addCookie()函數來向HTTP響應頭中添加cookie。
response.addCookie(cookie);
JSP Cookie 處理