Cookie簡介及JSP處理Cookie的方法
一.什麼是cookies?
大家都知道,瀏覽器與WEB伺服器之間是使用HTTP協議進行通訊的,當某個使用者發出頁面請求時,WEB伺服器只是簡單的進行響
應,然後就關閉與該使用者的串連。 因此當一個請求發送到WEB伺服器時,無論其是否是第一次來訪,伺服器都會把它當作第一次來
對待,這樣的不好之處可想而知。為了彌補這個缺陷,Netscape開發出了cookie這個有效工具來儲存某個使用者的識別資訊,因此
人們暱稱為"小甜餅"。cookies是一種WEB伺服器通過瀏覽器在訪問者的硬碟上儲存資訊的手段:Netscape Navigator使用一個名
為cookies.txt本地檔案儲存從所有網站接收的Cookie資訊;而IE瀏覽器把Cookie資訊儲存在類似於C:\windows\cookies的目錄下。
當使用者再次訪問某個網站時,服務端將要求瀏覽器尋找並返回先前發送的Cookie資訊,來識別這個使用者。
cookies給網站和使用者帶來的好處非常多:
1、Cookie能使網站跟蹤特定訪問者的訪問次數、最後訪問時間和訪問者進入網站的路徑
2、Cookie能告訴線上廣告商廣告被點擊的次數 ,從而可以更精確的投放廣告
3、Cookie有效期間限未到時,Cookie能使使用者在不鍵入密碼和使用者名稱的情況下進入曾經瀏覽過的一些網站
4、Cookie能協助網站統計使用者設定檔以實現各種各樣的個人化服務
在JSP中,我們也可以使用Cookie,來編寫一些功能強大的應用程式。
下面,我想介紹一下如何用JSP建立和處理Cookie。
二.如何建立Cookie
說了這麼多,大家一定很想知道JSP是如何建立cookie了。JSP是使用如下的文法格式來建立cookie的:
Cookie cookie_name =new Cookie("Parameter","Value");
例如:Cookie newCookie =new Cookie("username","waynezheng"); response.addCookie(newCookie);
解釋:JSP是調用Cookie對象相應的建構函式Cookie(name,value)用合適的名字和值來建立Cookie,然後 Cookie可以通過
HttpServletResponse的addCookie方法加入到Set-Cookie應答頭,本例中Cookie對象有兩個字串參數:username,waynezheng。注
意,名字和值都不能包含空白字元以及下列字元: @ : ;? , " / [ ] ( ) =
處理Cookie的屬性
看到這裡,有的朋友又要問了:我光知道如何建立Cookie有什麼用呀?是呀,光知道如何建立Cookie而不知道怎麼使用是不夠
的。在JSP中,程式是通過cookie.setXXX設定各種屬性,用cookie.getXXX讀出cookie的屬性,現把Cookie的主要屬性,及其方法列
於下,供大家參考:
讀取用戶端的Cookie
在Cookie發送到用戶端前,先要建立一個Cookie,然後用addCookie方法發送一個HTTP Header。 JSP將調用
request.getCookies()從用戶端讀入Cookie,getCookies()方法返回一個HTTP要求標頭中的內容對應的Cookie對象數組。 你只需要用
逐一查看該數組的各個元素,調用getName方法檢查各個Cookie的名字,直至找到目標Cookie,然後對該Cookie調用getValue方法取
得與指定名字關聯的值 。
例如
<%
String userName=request.getParameter("username");//從提交的HTML表單中擷取,使用者名稱
Cookie theUsername=new Cookie("username",userName);//以"username",userName值/對建立一個Cookie
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 在JSP中,使用setMaxAge(int expiry)方法來設定Cookie的存在時間,參數expiry應是
一個整數。正值表示cookie將在這麼多秒以後失效。 注意這個值是cookie將要存在的最大時間,而不是cookie現在的存在時間。
負值表示當瀏覽器關閉時,Cookie將會被刪除。零值則是要刪除該Cookie。 如:
<%
Cookie deleteNewCookie=new Cookie("newcookie",null);
deleteNewCookie.setMaxAge(0);
deleteNewCookie.setPath("/");
response.addCookie(deleteNewCookie);
%>