如何使用
- 从请求中拿到 Cookie 信息
- 服务器返回响应给客户端 Cookie
常用方法
1. 获得 Cookie
//这里返回的是数组,说明 Cookie 可能有多个
Cookie[] cookies = req.getCookies();
2. 获得 Cookie 中的 key
cookie.getName();
3. 获得 Cookie 中的 value
cookie.getValue();
4. 新建一个 Cookie
Cookie cookie = new Cookie(String name,String value);
5. 设置 Cookie 的有效期
/*
设置这个Cookie的最大年龄(以秒为单位)。
如果是正值,则表示cookie将在过了那么多秒之后过期。注意,这个值是cookie将过期的最大年龄,而不是cookie的当前年龄。
如果为负值,则表示cookie不会被持久存储,并且会在Web浏览器退出时被删除。零值会导致cookie被删除。
*/
cookie.setMaxAge(int expiry);
6. 响应给客户端一个 Cookie
resp.addCookie(cookie);
失效条件
- 设置过期时间失效
- 只要设置了过期时间 cookie 就会存储在硬盘里面
- 当会话结束时失效,即关闭浏览器窗口
- 如果没有设置 Expires,cookie 就会存储在内存里面)
- 手动删除 cookie 失效
- 即设置同名同路径的持久化时间为 0 的 cookie 进行覆盖
删除 Cookie
// 创建一个新 Cookie,名字必须和要删除的 Cookie 的名字一致
Cookie cookie = new Cookie("lastLoginTime", System.currentTimeMillis() + "");
// 设置持久化时间为0,即立刻删除
cookie.setMaxAge(0);
resp.addCookie(cookie);
注意:覆盖cookie的内容随意,名字一定要相同。如果设置之前的cookie是明确了携带路径,这里覆盖cookie时一定要设置跟之前一样的携带路径,否则可能出现无效覆盖
注意点
- 一个 Cookie 只能保存一个信息
- 一个 web 站点可以给浏览器发送多个 cookie ,最多存放20个 cookie
- Cookie 大小有限制 4kb
- 浏览器存放 Cookie 的上限为 300 个