一、基本使用
1.1 响应cookie
服务端返回客户端cookie
@RequestMapping(value = "testCookie")
public String testCookie(HttpServletResponse resp) {
Cookie cookie = new Cookie("k1", "v1");
resp.addCookie(cookie);
System.out.println("testCookie");
return "success";
}
效果
1.2 返回多个cookie
返回多个cookie,相同键的cookie直接覆盖值
Cookie cookie1 = new Cookie("k1", "v1-1");
Cookie cookie2 = new Cookie("k2", "v2");
Cookie cookie3 = new Cookie("k3", "v3");
resp.addCookie(cookie1);
resp.addCookie(cookie2);
resp.addCookie(cookie3);
1.3 响应文本格式
resp.setContentType("text/html;charset=utf-8");
1.4 查找特定的键
for (Cookie cookiekv:cookies) {
if ("k1".equals(cookiekv.getName())) {
WantCookie=cookiekv;
break;
}
//说明找到了需要的cookie
if (iWantCookie!=null) {
resp.getWriter().write("cookie已经赋值");
break;
}
}
1.5 修改cookie值
本质都是通过resp.addCookie(cookie);覆盖
- 直接覆盖
- 通过1.4 找到相应cookie
//找到相应cookie,直接修改
cookie.setValue("k1-updata");
//通知客户端
resp.addCookie(cookie);
cookie值不能使用中文空格等,具体参照jdk文档
返回中文cookie值需要base64编码
1.6 浏览器删除cookie
- chrome
- 火狐
右键删除
二、生命周期
2.1 生命周期
- 正数:指定时间(CMT 秒)
- 负数:浏览器关闭就销毁(默认值-1),session级别
- 0:立即销毁,1970
cookiekv.setMaxAge(1);
2.2 设置配置url
可以设置必须匹配的前缀(过滤路径),匹配正确返回cookie否则不返回
路径:http://ip:port/工程路径/资源/param
//获取工程路径
String path = req.getContextPath();
cookiekv.setPath(path+"/abc");
2.3 jstl隐含对象cookie
${cookie.username.value}