如何使用

  1. 从请求中拿到 Cookie 信息
  2. 服务器返回响应给客户端 Cookie

常用方法

1. 获得 Cookie

  1. //这里返回的是数组,说明 Cookie 可能有多个
  2. Cookie[] cookies = req.getCookies();

2. 获得 Cookie 中的 key

  1. cookie.getName();

3. 获得 Cookie 中的 value

  1. cookie.getValue();

4. 新建一个 Cookie

  1. Cookie cookie = new Cookie(String name,String value);

5. 设置 Cookie 的有效期

  1. /*
  2. 设置这个Cookie的最大年龄(以秒为单位)。
  3. 如果是正值,则表示cookie将在过了那么多秒之后过期。注意,这个值是cookie将过期的最大年龄,而不是cookie的当前年龄。
  4. 如果为负值,则表示cookie不会被持久存储,并且会在Web浏览器退出时被删除。零值会导致cookie被删除。
  5. */
  6. cookie.setMaxAge(int expiry);

6. 响应给客户端一个 Cookie

  1. resp.addCookie(cookie);

失效条件

  1. 设置过期时间失效
    1. 只要设置了过期时间 cookie 就会存储在硬盘里面
  2. 当会话结束时失效,即关闭浏览器窗口
    1. 如果没有设置 Expires,cookie 就会存储在内存里面)
  3. 手动删除 cookie 失效
    1. 即设置同名同路径的持久化时间为 0 的 cookie 进行覆盖


删除 Cookie

  1. // 创建一个新 Cookie,名字必须和要删除的 Cookie 的名字一致
  2. Cookie cookie = new Cookie("lastLoginTime", System.currentTimeMillis() + "");
  3. // 设置持久化时间为0,即立刻删除
  4. cookie.setMaxAge(0);
  5. resp.addCookie(cookie);

注意:覆盖cookie的内容随意,名字一定要相同。如果设置之前的cookie是明确了携带路径,这里覆盖cookie时一定要设置跟之前一样的携带路径,否则可能出现无效覆盖

注意点

  1. 一个 Cookie 只能保存一个信息
  2. 一个 web 站点可以给浏览器发送多个 cookie ,最多存放20个 cookie
  3. Cookie 大小有限制 4kb
  4. 浏览器存放 Cookie 的上限为 300