天天看點

Jsp&Servlet之Cookie

聲明:此篇文章為我從網上下載下傳的doc文檔裡面的一部分内容,具體作者不知。

Cookie簡介:Cookie是伺服器儲存在用戶端上的一組資料。例如,一些登陸網站時會提示是否儲存密碼,或是選擇登陸有效期(浏覽器程序、一天、一個月等等),這些都可以使用Cookie來實作。

Cookie類

javax.servlet.http.Cookie

構造方法

Cookie(String name,String value)

伺服器向用戶端設定cookie

<b>addCookie(Cookie cookie)</b>

<b>由response</b><b>調用,</b>可反複使用該方法設定多個Cookie

伺服器從用戶端取回之前保留在用戶端上的cookie

<b>Cookie[]</b> <b>getCookies()</b>

<b>由request</b><b>調用</b>

設定cookie在本地留存的時間

<b>setMaxAge</b><b>(int expiry)</b>

<b>由cookie</b><b>對象調用</b>

l示例:設定Cookie

cookie01.jsp à 伺服器響應客戶的請求時,設定cookie到用戶端:

²先準備好cookie對象

然後利用 response.addCookie(Cookie cookie)進行設定

&lt;%    

          //構造Cookie對象,構造方法:Cookie(String name,String value) 

          Cookie c1= new Cookie("name","Jerry"); 

          Cookie c2= new Cookie("password","1234"); 

          Cookie c3= new Cookie("access_time",new Date().toString()); 

          //将Cookie設定給用戶端 

          //伺服器向用戶端傳遞資料,使用response對象 

          //方法:reponse.addCookie(Cookie cookie) 

          response.addCookie(c1); 

          response.addCookie(c2); 

          response.addCookie(c3); 

%&gt; 

【注】浏覽器視窗中看不到Cookie的資訊

Cookie02.jsp à 如果需要,伺服器可以從用戶端取回cookie,這是從用戶端傳資料到伺服器,故要使用request的方法:<b>Cookie[]</b> <b>request.getCookies()</b>。

²利用request.getCookies()取得cookie數組

周遊數組,取得其中每一個cookie

&lt;% 

          //Cookie[] request.getCookies()方法 

          Cookie[] cs = request.getCookies(); 

          for(int i=0;i&lt;cs.length;i++){             

            Cookie tmp = cs[i];     

            //每一個Cookie由 name--value構成 

            //可以使用 String getName() 和 String getValue() 獲得各成分的值 

        %&gt;    

          &lt;h1&gt; &lt;%= tmp.getName() %&gt; &lt;%=tmp.getValue() %&gt; &lt;/h1&gt; 

        &lt;%    

          }        

          //JSESSIONID ACCE027387AADBD63525E4446F1DFD83是伺服器自動設定的 

          //代表這個用戶端在伺服器上的一個唯一編号 

【注】:每一個cookie都是由 name – value構成(由構造方法可知),Cookie類提供了如下2個方法擷取cookie的name和value的值:

<b>String getName()</b>

<b>String getValue()</b>

l設定Cookie的儲存時間

(在一個視窗中先運作 cookie01.jsp實作設定cookie,然後仍然在這個視窗中運作 cookie02.jsp 取回cookie 并顯示是可以實作。但,如果在另外的浏覽器視窗中直接運作 cookie02.jsp ,則無法再取回之前設定的cookie了)

²如果希望cookie能在本地留存一段時間,使得在一段時間之内都可以取回cookie,則可以利用Cookie類的<b>setMaxAge(int expiry)</b> 方法,expiry表多少秒後cookie過期。

修改cookie01.jsp 為 cookie03.jsp ,增加cookie留存時間的設定,仍然使用cookie02.jsp取回cookie

&lt;h1&gt;利用Cookie類的setMaxAge(int expiry)可是設定cookie在本地計算機上留存一段時間,機關是秒&lt;/h1&gt; 

    &lt;% 

              //構造Cookie對象,構造方法:Cookie(String name,String value) 

              Cookie c1= new Cookie("name","Jerry"); 

              Cookie c2=new Cookie("password","1234"); 

              Cookie c3=new Cookie("access_time",new Date().toString()); 

              //設定留存時間30秒 

              c1.setMaxAge(30); 

              c2.setMaxAge(30); 

              c3.setMaxAge(30); 

              //将Cookie設定給用戶端 

              //伺服器向用戶端傳遞資料,使用response對象 

              //方法:reponse.addCookie(Cookie cookie) 

              response.addCookie(c1); 

              response.addCookie(c2); 

              response.addCookie(c3); 

    %&gt; 

則運作 cookie03.jsp完成設定cookie後,即使另開一個浏覽器視窗,直接運作 cookie02.jsp 仍然可以取回cookie, 但時限到了之後cookie還是會失效。

但是,伺服器自動設定的JSESSIONID還在。

我的備注:一個servlet/jsp設定的路徑能夠被同一路徑或子路徑下的servlet/jsp通路到,其它路徑不能通路到。

本文轉自 yzzh9 51CTO部落格,原文連結:http://blog.51cto.com/java999/163701,如需轉載請自行聯系原作者