JSP(頁面)(javaservlet pages)(cookie)

Cookie的用途:服務器可以從下次請求中,通過Cookie拿到上一次請求保存到Cookie的數據。

服務器使用Cookie來跟蹤客戶端狀態。服務器就是從檔次請求中通過Cookie拿到

上次請求保存到Cookie中的數據來查看客戶端狀態的。

 

保存購物車。購物車中的商品不能使用request對象保存,因爲一個請求對應一個request

對象,而購物車它時一個用戶(瀏覽器)向服務器發送的多次請求,所以可以利用下次請求

通過Cookie拿到上次請求保存到Cookie中歐冠的數據,來使用Cookie再次保存,以此來添加

購物車。

顯示上次登錄名。多次登錄也是一個用戶(瀏覽器)向服務器發送多次請求,所以也可以利用

下次請求通過Cookie拿到上次請求保存到Cookie中的用戶名,來獲取上次的登錄用戶名。

特點:

以上可知Cookie是保存在瀏覽器上的,且是同一(相同)瀏覽器多次請求服務器來操作Cookie

以獲得上次請求保存在Cookie中的數據的,所以Cookie是不能跨瀏覽器來操作的。

而且正因爲Cookie是保存在瀏覽器中的,所以它相對不安全。

3>JavaWeb中使用Cookie

原始方式:

>服務器使用response發送Set-Cookie響應頭向瀏覽器保存Cookie

response.addHeader("Set-Cookie","aaa=AAA");(多值)

aaa=AAA :aaa是名稱,等號後面是內容(只能這麼寫)

>服務器使用request獲取Cookie請求頭,來獲取當次請求發送的保存了上次請求

數據的Cookie。

Enumeration <String>  |  request.getHeaders("Cookie");(多值)

快捷方式:

>使用response.addCookie()方法向瀏覽器響應保存Cookie。

>使用request.getCookies()方法獲取當次請求發送的保存了上次請求數據的Cookie

4>Cookie的生命週期

Cookie除了name和value屬性外,還有一個maxAge:即Cookie的最大生命,

即Cookie可保存的最大時長,以秒爲單位。

1、maxAge>0:瀏覽器會把Cookie保存在客戶機硬盤上,有效時長由maxAge的值決定。

如,cookie.setMaxAge(60)表示Cookie會被瀏覽器保存在硬盤上60秒

2、maxAge<0:Cookie只在瀏覽器的運行內存中存在,當瀏覽器關閉,瀏覽器進程結束

內存銷燬時,同時Cookie被銷燬。(瀏覽器關閉時所有的相同瀏覽器關閉也就是如果你開了

三個谷歌瀏覽器,必須三個全部關掉纔算,本質上這個三個都是窗口關了只能算是關了一個

窗口)

   如,cookie.setMaxAge(-1)表示瀏覽器關閉則Cookie銷燬。

3、maxAge=0:瀏覽器會馬上刪除這個Cookie

    如,cookie.setMaxAge(0)瀏覽器則會立刻銷燬此Cookie。


注意:當沒有設置Cookie的maxAge屬性時默認是-1,Cookie默認只在瀏覽器內存
中存活,即瀏覽器關閉,Cookie銷燬。

5>Cookie的路徑(path屬性):

Cookie的path屬性並不是設置Cookie在客戶端的保存路徑,

而是當瀏覽器訪問服務器

的某個資源路徑時,決定是否需要給服務器歸還Cookie

當瀏覽器訪問請求服務器

的某個資源路徑時,如果次訪問路徑包含這個Cookie的path屬性設置的路徑部分時

那麼就向服務器歸還這個Cookie

Cookie的path屬性由服務器在創建Cookie時設置。

如:aCookie.setPath("/JspTest1/"); 
    bCookie.setPath("/JspTest1/jsps/");
    cCookie.setPath("/JspTest1/jsps/cookies/");

>瀏覽器訪問請求:/JspTest1/index.jsp,此訪問路徑包含了aCookie

的路徑,所以向服務器歸還aCookie

>瀏覽器訪問請求:/JspTest1/jsps/a.jsp,此訪問路徑把aCookie和

bCookie的路徑都包含所以向服務器歸還

aCookie和bCookie

>瀏覽器訪問請求:/JspTest1/jsps/cookies/b.jsp,此訪問路徑把
 aCookie和bCookie和cCookie的路徑都包含,所以向服務器歸還:
 aCookie、bCookie、 cCookie

意思就是說只要包含訪問請求路徑含有setpath中參數就返回調用者

如aCookie的的路徑(setpath),訪問路徑包含則歸還aCookie

創建的Cookie沒有設置path屬性時,此Cookie的默認路徑就是,當前請求

訪問路徑的父路徑。如,當請求訪問/JspTest1/cookies2/c.jsp,服務器創建並向瀏覽器

響應一個Cookie,那麼此Cookie的默認路徑就是/JspTest1/cookies2/

6>Cookie的域(domain屬性)

Cookie的domain用於指定Cookie的域名,當多個二級域之間共享同一Cookie時使用

例如:在www.baidu.com     
      zhidao.baidu.com     
      news.baidu.com  
      tieba.baidu.com  
      4個域請求之間共享同一Cookie

1>設置此Cookie的domain爲:cookie。setDomain(“.baidu.com”);

2>必須設置此Cookie的path:cookie.setPath("/");

可在同一應用服務器內共享設置爲/的話

因爲域名封裝了請求的項目路徑,所以使用域名請求服務器沒有項目名,

也就沒有辦法給Cookie設置具體的路徑,所以必須使用“/”通配所有請求路徑,否則多個域名

請求之間無法傳遞共享同一個Cookie

//創建Cookie

Cookie  ck -

//設置Cookie的域(domain屬性)爲“.baidu.com”;

ck.setDomain(".baid.com");

//設置Cookie路徑(path屬性)爲“/”

ck.setPath("/");

//向瀏覽器響應Cookie

response.addCookie(ck);向客戶端添加Cookie

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章