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