javaweb-cookie

一、基本使用

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 生命周期

  1. 正数:指定时间(CMT 秒)
  2. 负数:浏览器关闭就销毁(默认值-1),session级别
  3. 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}

 

版权声明:本文为GodPluto原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/GodPluto/article/details/105932022