JspServlet之Cookie
生活随笔
收集整理的這篇文章主要介紹了
JspServlet之Cookie
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Cookie簡介:Cookie是服務器保存在客戶端上的一組數據。例如,一些登陸網站時會提示是否保存密碼,或是選擇登陸有效期(瀏覽器進程、一天、一個月等等),這些都可以使用Cookie來實現。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
??????????//構造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);
%>
【注】瀏覽器窗口中看不到Cookie的信息
??????????//Cookie[] request.getCookies()方法
??????????Cookie[] cs = request.getCookies();
????????????
??????????for(int i=0;i<cs.length;i++){????????????
????????????Cookie tmp = cs[i];????
????????????//每一個Cookie由 name--value構成
????????????//可以使用 String getName() 和 String getValue() 獲得各成分的值
????????????????????
????????%>????
????????????
??????????<h1> <%= tmp.getName() %> <%=tmp.getValue() %> </h1>
????????<%????
??????????}????????
????????????
??????????//JSESSIONID ACCE027387AADBD63525E4446F1DFD83是服務器自動設置的
??????????//代表這個客戶端在服務器上的一個唯一編號
%>
【注】:每一個cookie都是由 name – value構成(由構造方法可知),Cookie類提供了如下2個方法獲取cookie的name和value的值: String getName() String getValue()
????<%
??????????????//構造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);
????%>
則運行 cookie03.jsp完成設置cookie后,即使另開一個瀏覽器窗口,直接運行 cookie02.jsp 仍然可以取回cookie, 但時限到了之后cookie還是會失效。 但是,服務器自動設置的JSESSIONID還在。
?
| Cookie類 | javax.servlet.http.Cookie |
| 構造方法 | Cookie(String name,String value) |
| 服務器向客戶端設置cookie | addCookie(Cookie cookie) 由response調用,可反復使用該方法設置多個Cookie |
| 服務器從客戶端取回之前保留在客戶端上的cookie | Cookie[] getCookies() 由request調用 |
| 設置cookie在本地留存的時間 | setMaxAge(int?expiry) 由cookie對象調用 |
?
l示例:設置Cookie cookie01.jsp à 服務器響應客戶的請求時,設置cookie到客戶端: 2先準備好cookie對象 然后利用 response.addCookie(Cookie cookie)進行設置 <%??????????????//構造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);
%>
【注】瀏覽器窗口中看不到Cookie的信息
?
Cookie02.jsp à 如果需要,服務器可以從客戶端取回cookie,這是從客戶端傳數據到服務器,故要使用request的方法:Cookie[] request.getCookies()。 2利用request.getCookies()取得cookie數組 遍歷數組,取得其中每一個cookie <%??????????//Cookie[] request.getCookies()方法
??????????Cookie[] cs = request.getCookies();
????????????
??????????for(int i=0;i<cs.length;i++){????????????
????????????Cookie tmp = cs[i];????
????????????//每一個Cookie由 name--value構成
????????????//可以使用 String getName() 和 String getValue() 獲得各成分的值
????????????????????
????????%>????
????????????
??????????<h1> <%= tmp.getName() %> <%=tmp.getValue() %> </h1>
????????<%????
??????????}????????
????????????
??????????//JSESSIONID ACCE027387AADBD63525E4446F1DFD83是服務器自動設置的
??????????//代表這個客戶端在服務器上的一個唯一編號
%>
【注】:每一個cookie都是由 name – value構成(由構造方法可知),Cookie類提供了如下2個方法獲取cookie的name和value的值: String getName() String getValue()
?
l設置Cookie的保存時間 2默認情況下:cookie是僅在瀏覽器進程中有效。 (在一個窗口中先運行 cookie01.jsp實現設置cookie,然后仍然在這個窗口中運行 cookie02.jsp 取回cookie 并顯示 是可以實現。但,如果在另外的瀏覽器窗口中直接運行 cookie02.jsp ,則無法再取回之前設置的cookie了)?
2如果希望cookie能在本地留存一段時間,使得在一段時間之內都可以取回cookie,則可以利用Cookie類的setMaxAge(int expiry) 方法,expiry表多少秒后cookie過期。?
修改cookie01.jsp 為 cookie03.jsp ,增加cookie留存時間的設置,仍然使用cookie02.jsp取回cookie <h1>利用Cookie類的setMaxAge(int expiry)可是設置cookie在本地計算機上留存一段時間,單位是秒</h1>????<%
??????????????//構造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);
????%>
則運行 cookie03.jsp完成設置cookie后,即使另開一個瀏覽器窗口,直接運行 cookie02.jsp 仍然可以取回cookie, 但時限到了之后cookie還是會失效。 但是,服務器自動設置的JSESSIONID還在。
?
?
我的備注:一個servlet/jsp設置的路徑能夠被同一路徑或子路徑下的servlet/jsp訪問到,其它路徑不能訪問到。本文出自 51CTO.COM技術博客轉載于:https://blog.51cto.com/13867166557/405322
總結
以上是生活随笔為你收集整理的JspServlet之Cookie的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ollydbg 常用快捷键
- 下一篇: 天命