cookie保存在瀏覽器客戶端
session保存在服務器端
Cookie類:保存會話數據
1)創建Cookie對象,用于保存會話數據
new Cookie(java.lang.String name,java.lang.String value)
2)設置Cookie對象
void setPath(java.lang.String uri) 設置cookie有效路徑
voidsetMaxAge(int expiry) 設置cookie的有效時長
voidsetValue(java.lang.String newValue) 設置cookie的值
3)發送Cookie數據到瀏覽器保存
response.addCookie(cookie);
4)接收瀏覽器發送的Cookie數據
Cookie[] request.getCookies()
1)服務器端創建Cookie數據,然后通過set-cookie的響應頭把cookie數據發送給瀏覽器保存
響應頭:例如: set-cookie: name=eric
2)瀏覽器得到服務器發送cookie數據,保存在瀏覽器目錄中。
3)瀏覽器在下次訪問服務器時,會帶著cookie數據訪問服務器。通過cookie的請求頭把cookie數據發送給服務器端
請求頭:例如: cookie: name=eric
4)服務器可以接受瀏覽器發送的cookie數據
request.getCookies();
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1,創建cookie對象,保存會話數據 //如果要發送中文,必須先使用URLEncoder進行加密 String n = URLEncoder.encode("張三","utf-8"); Cookie c = new Cookie("name", "zdh"); Cookie c1 = new Cookie("email", "[email protected]"); //設置有效路徑,默認情況下,設置當前項目的根目錄下 //c.setPath("/day11"); /*設置cookie的有效時長 * 正整數: 表示超過了正整數的數值的時間,cookie就會丟失!!(cookie保存瀏覽器的緩存 目錄)單位:秒 負整數: 表示如果瀏覽器關閉了,cookie就會丟失!(cookie保存瀏覽器內存) (默認情況) 0 : 表示刪除同名的cookie */ //c.setMaxAge(10);//10秒后cookie消失 c.setMaxAge(-1); //關閉瀏覽器cookie消失。也是默認情況 c1.setMaxAge(50); //2,把cookie數據發送給瀏覽器,通過響應頭攜帶cookie數據給瀏覽器(set-cookie) //response.setHeader("set-cookie", "name=zzz"); //簡化版本 response.addCookie(c); response.addCookie(c1); //3,瀏覽器在下次訪問的時候攜帶了cookie數據,通過請求頭發送給服務器(cookie) //4,瀏覽器獲取瀏覽器發送的cookie數據,// String name = request.getHeader("cookie");// System.out.PRintln(name); Cookie[] cookie = request.getCookies(); if(cookie!=null){ for(Cookie ck:cookie){ String name = ck.getName(); String value = ck.getValue(); System.out.println(name+"="+value); } }else{ System.out.println("沒有cookie 信息!!"); } }
需要注意:
1)設置cookie有效路徑: setPath(uri) 。如果cookie在有效路徑下,那么瀏覽器在下次訪問該有效路徑時就會帶著cookie數據到服務器。
2)設置cookie的有效時長: setMaxAge(整數)
正整數:cookie數據保存在瀏覽器的緩存目錄中(硬盤中)。例如10。10秒之后就cookie 就會丟失。(從最后一次訪問cookie開始計算)
負整數: cookie數據保存在瀏覽器的內存中,瀏覽器關閉cookie數據就會丟失。
零: 刪除同名的cookie
3)可以同時往瀏覽器發送多個cookie數據,必須是字符串類型的。瀏覽器一般只允許存放300個Cookie,每個站點最多存放20個Cookie,每個Cookie的大小限制為4KB。
新聞熱點
疑難解答