1. 默認情況下,cookie數據保存到內存里,當瀏覽器關閉后,Cookie數據被銷毀
2. 持久化存儲:
setMaxAge(int seconds)
1. 正數:將Cookie數據寫到硬盤的文件中,持久化存儲。並指定cookie存活時間,時間到后,cookie文件自動失效。
2. 負數:默認值,即關閉瀏覽器后,cookie即失效
3. 零:刪除cookie信息
setMaxAge為正數時的情況如下:
重啟瀏覽器 | 不關閉瀏覽器 | |
cookie時間未到 | 能訪問cookie | 能訪問cookie |
cookie時間到 | 不能訪問cookie | 能訪問cookie |
代碼如下:
第一個servlet【比如是CookieDemo01】中的代碼如下:
1 import javax.servlet.http.Cookie; 2 //--------省略若干代碼----------- 3 protected void doGet(HttpServletRequest request, HttpServletResponse response) 4 throws ServletException, IOException { 5 //1.創建Cookie對象,綁定數據【name是"msg",value是"hello"】 6 Cookie c = new Cookie("msg", "hello"); 7 //2.設置Cookie存活時間 8 c.setMaxAge(300);//(1).將Cookie持久化到硬盤,300秒后會自動刪除 9 //c.setMaxAge(-1);//(2).默認值,一次瀏覽器會話 10 //c.setMaxAge(0);//(3).刪除Cookie 11 //3.發送Cookie對象【只有發送Cookie的瀏覽器可以獲取Cookie】 12 response.addCookie(c); 13 } 14 //--------省略若干代碼-----------
第二個servlet【比如是CookieDemo02】中的代碼如下:
1 import javax.servlet.http.Cookie; 2 //--------省略若干代碼----------- 3 protected void doGet(HttpServletRequest request, HttpServletResponse response) 4 throws ServletException, IOException { 5 //3.獲取Cookie 6 Cookie[] cs = request.getCookies(); 7 //4.遍歷Cookies 8 if(cs!=null){ 9 for(Cookie c:cs){ 10 String name = c.getName(); 11 String value = c.getValue(); 12 System.out.println(name+":"+value); 13 } 14 } 15 } 16 //--------省略若干代碼-----------
驗證:
打開Tomcat服務器,先運行第一個servlet【創建Cookie,聲明Cookie生命周期,發送Cookie】,再運行第二個servlet【獲取並遍歷Cookie】,發現控制台上輸出Cookie的name和value【即msg:hello】。
代碼說明:
第一個servlet中:
(1).如果【c.setMaxAge(300)】,cookie會持久化到硬盤300秒,在這300秒內,關閉瀏覽器后再打開瀏覽器,也能訪問到cookie。如果一直不關閉瀏覽器,300秒后也能訪問。
(2).如果【c.setMaxAge(-1)】,只要瀏覽器不關閉,cookie不會失效。
(3).如果【c.setMaxAge(0)】,刪除cookie信息。
說明:
日期:2019-03-07 08:39:31