程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JSP的內置對象——使用Cookie

JSP的內置對象——使用Cookie

編輯:關於JAVA

CookIE是服務器發送給客戶端浏覽器的體積較小的純文本信息,以後當用戶訪問同一個Web服務器時,浏覽器會把它們發送給服務器。通過讓服務器讀取原先保存在客戶端的信息,為浏覽者提供一系列的方便。例如在線交易過程中標識用戶身份,在安全要求不高的場合可避免用戶重復輸入名字和密碼、門戶網站的主頁定制、有針對性地投放廣告等。

  使用Cookie可以為用戶帶來方便,但在安全性要求較高的場合下,建議不要使用CookIE。此外,浏覽器中只允許存放300個Cookie,每個站點最多存放20個Cookie,每個Cookie的大小限制為4 kB,故不必擔心CookIE會過多地占用硬盤的空間。

  Cookie存放在客戶端,首先要新建一個Cookie,然後設置其屬性,再通過response對象的addCookie()方法將其放入客戶端,獲取Cookie對象可調用request對象的getcookIEs()方法。

  1.創建CookIE

  調用Cookie對象的構造函數可以創建CookIE,構造函數的語法格式如下:

  Cookie(String cookiename,String cookIEvalue)

  在函數中,第一個參數cookiename是新建的Cookie對象的名稱,第二個參數cookievalue是新建的CookIE對象的值。

   CookIE對象的名稱和值都不能包含空白字符以及下列字符:

  [ ] ( ) = , " / ? @ :

  2.設置與讀取CookIE屬性

  在把Cookie加入待發送的應答頭之前,可以查看或設置CookIE的各種屬性。

  getComment()/setComment():獲取/設置CookIE的注釋。

  getDomain()/setDomain():獲取/設置CookIE適用的域。

  使用這兩個方法可以指示浏覽器把Cookie返回給同一域內的其他服務器。注意域必須以點開始(例如.sitename.com),非國家類的域(如.com,.edu,.gov)必須包含兩個點,國家類的域(如.com.cn,.edu.uk)必須包含三個點,一般地,CookIE只返回給與發送它的服務器名稱完全相同的服務器。

  getMaxAge()/setMaxAge():獲取/設置Cookie過期之前的時間,以秒計。如果不設置該值,則CookIE只在當前會話內有效,即在用戶關閉浏覽器之前有效,而且這些CookIE不會保存到磁盤上。

  getName()/setName():獲取/設置Cookie的名稱。本質上,名稱和值是需要程序員始終關心的兩個部分。由於HttpServletRequest的getCookies方法返回的是一個CookIE對象的數組,因此通常要用循環語句來訪問這個數組並查找特定名稱,然後用getValue()檢查它的值。

  getPath()/setPath():獲取/設置Cookie適用的路徑。如果不指定路徑,Cookie將返回給當前頁面所在目錄及其子目錄下的所有頁面。這裡的方法可以用來設定一些條件。例如,someCookIE.setPath("/"),此時服務器上的所有頁面都可以接收到該CookIE。

  getSecure()/setSecure():獲取/設置一個boolean值,該值表示CookIE是否只能通過加密的連接(即SSL)發送。

  getValue()/setValue():獲取/設置CookIE的值。如前所述,名稱和值實際上是程序員始終關心的兩個方面。不過也有一些例外情況,比如把名稱作為邏輯標記(也就是說,如果該名稱存在,則表示true)。

  getVersion()/setVersion():獲取/設置CookIE所遵從的協議版本。默認版本0(遵從原先的Netscape規范);版本1遵從RFC 2109,但尚未得到廣泛的支持。

  3.將CookIE加入HTTP頭中

  可將addCookie()方法加入到Set-CookIE應答頭。如下所示:

  Cookie usernameCookie = new CookIE("username", "dzycsai");

  response.addCookie(userCookIE);

  4.讀取CookIE

  從客戶端讀取Cookie時調用的是request對象的getCookies()方法。該方法返回一個與HTTP請求頭中的內容對應的Cookie對象數組。得到這個數組之後,一般是用循環語句訪問其中的各個元素,並調用getName()檢查各個Cookie的名字,直至找到目標Cookie為止;然後對這個目標CookIE調用getValue(),根據獲得的結果進行其他處理。

 5.CookIE工具函數

  用request對象的getCookies()方法得到一個Cookie對象的數組,要找到指定的Cookie對象比較麻煩,這時可以編寫一個得到指定名稱的CookIE對象值的方法,這裡,提供一個這樣的函數。

  String getCookieValue(Cookie[] cookIEArray,

   String cookIEName,String defaultValue) {

   for(int i=0; i<cookIEs.length;i ={

   Cookie cookie = cookIEs[i];

   if (cookieName.equals(cookIE.getName()))

   return(cookIE.getValue());

   }

   return(defaultValue);

  }

  在此方法中,第一個參數是一個Cookies數組,可以用request.getCookies()方法得到;第二個參數cookieName,查找的Cookie對象的名稱;第三個參數defaultValue是在沒有找到指定的CookIE對象時返回的值。

《JSP網絡編程從實踐到實踐》原碼下載地址:http://shop.csai.cn/itbook/itbookinfo.ASP?lbbh=10051575

 

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