1. 獲取cookiehtml
request.getCookies(); // 返回Cookie[]web
2. 建立cookie瀏覽器
Cookie(String key, String value); // 經過構造器建立緩存
3. 返回cookie給用戶瀏覽器cookie
response.addCookie(Cookie cookie);dom
4. 設置cookie的有效期jsp
cookie.setMaxAge(int sec);ide
1) 單位: 秒測試
2) 默認cookie有效期爲一個會話, 存儲在瀏覽器緩存中, 即關閉瀏覽器cookie被刪除this
3) 設置了有效期的cookie, 即便關閉了瀏覽器, 也不會被刪除, 即存儲在硬盤上, 一般是在瀏覽器緩存目錄下
4) 將cookie的有效期設置爲0時, 表示刪除該cookie, 值得注意的是刪除cookie時的有效路徑應該與建立cookie時的有效路徑一致, 不然沒法刪除
5. 設置cookie的有效路徑
cookie.setPath(String path);
1) cookie的默認有效路徑: 建立該cookie的servlet所在的servlet映射路徑. 好比在CookieDemo1建立了cookie1, 並且知道CookieDemo1的映射路徑是/day01/servlet/CookieDemo1 (/day01爲Web工程根路徑) , 那麼cookie1的有效路徑就是/day01/servlet/CookieDemo1
2) 刪除cookie時設置的有效路徑與建立cookie時設置的有效路徑一致, 才能刪除cookie
3) 將cookie的有效目錄設置成/day01時, 則訪問/day01目錄下全部資源都會攜帶cookie. 若是將cookie的有效目錄設置成/day01/resource/, 那麼在訪問/day01/index.jsp時就不會攜帶cookie過去.
6. 設置cookie域
cookie.setDomain(string domain);
1) 什麼是域?
sina.com.cn是域名
www.sina.com.cn是主機名, 表示sina.com.cn域下有一臺www主機
同理也能夠是ftp, mail主機, ftp.sina.com.cn, 就相似咱們購買好域名以後能夠在域上搭建多臺主機
2) 舉個栗子
cookie.setDomain(".sina.com.cn"); // 之後去訪問sina.com.cn域時, 都會攜帶這個cookie過去, 注意sina.com.cn前有個點
7. support getter/setter for name and value
程序主要分紅兩個部分: 獲取上次訪問時間的cookie部分和返回最新訪問時間的cookie, 值得注意的是這兩部分使用的是同一個cookie
1 /** 2 * Created by IntelliJ IDEA. 3 * 4 * @Auther: ShaoHsiung 5 * @Date: 2018/8/28 08:22 6 * @Title: 獲取用戶上次訪問時間並返回最新的訪問時間 7 * @Description: 8 */ 9 public class CookieDemo1 extends HttpServlet { 10 @Override 11 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 12 13 // 設置瀏覽器編碼 14 response.setContentType("text/html; charset=utf-8"); 15 16 // 獲取輸出對象 17 Writer out = response.getWriter(); 18 out.write("上次訪問時間: "); 19 20 // 獲取訪問時間cookie 21 Cookie[] cookies = request.getCookies(); 22 for (int i = 0; cookies != null && i < cookies.length; i++) { 23 24 Cookie cookie = cookies[i]; 25 if (cookie.getName().equals("lastAccess")) { 26 String value = cookie.getValue(); 27 Date date = new Date(Long.parseLong(value)); 28 29 out.write(date.toLocaleString()); 30 } 31 } 32 33 // 設置最新的訪問時間cookie 34 Cookie cookie = new Cookie("lastAccess", System.currentTimeMillis() + ""); 35 // 設置cookie有效時間 單位:秒 36 cookie.setMaxAge(3600); 37 // 設置cookie有效路徑 38 cookie.setPath(request.getContextPath()); 39 //System.out.println(request.getContextPath()); 40 //System.out.println(this.getServletContext().getContextPath()); 41 response.addCookie(cookie); 42 } 43 44 @Override 45 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 46 doGet(req, resp); 47 } 48 }
1. 一個web站點能夠給用戶發送多個cookie
2. 不一樣瀏覽器cookie的個數和大小不一致
3. 每一個web站點最多給用戶發送20個cookie // 未測試