一、创建上传cookie
@GetMapping("/insert")
public Cookie a(HttpServletResponse response) {
Cookie cookie = new Cookie("name", "value");
cookie.setHttpOnly(true); //不能被js访问的Cookie
cookie.setMaxAge(7*24*60*60);//设置cookie生命周期
response.addCookie(cookie);
return cookie;
}
二、获取cookie的数据
注意:1.在路径少层的无法查看多层的cookie
2.路径不同也无法查看双方的cookie
如:
1、URL:localhost:8012/info与URL:localhost:8012/a/info中
localhost:8012/a/info中可以查看localhost:8012/info创建的路径
localhost:8012/info无法查看localhost:8012/a/info的路径
2、URL:localhost:8012/a/info与URL:localhost:8012/b/info中
localhost:8012/a/info无法查看localhost:8012/b/info创建的路径
localhost:8012/a/info无法查看localhost:8012/b/info创建的路径
2.1、获取指定cookie的值
一般不使用有局限性
//获取cookie对象数据
@GetMapping("/info")
//获取cookie名为1的值
public void b(@CookieValue(value = "name") String username){
System.out.println(username);
}
2.2、获取所有cookie的值
@GetMapping("/infos")
public void c(HttpServletRequest request) {
//获取所有cookie对象
Cookie[] cookies = request.getCookies();
//遍历所有cookie对象
for (Cookie cookie:cookies) {
//取出cookie的名
String name = cookie.getName();
//取出cookie的值
String value = cookie.getValue();
System.out.println(name+":"+value);
}
}
三、修改删除cookie的值
3.1、修改cookie的值
主要cookie中属性Domain(域名)与path(路径)要一样
//特别注意
//修改的cookie路径除最后一个路径其余要与创建的cookie路径对应
// 如:
// http://localhost:8012/a/insert
// 与
// http://localhost:8012/a/update
// 多一层或不同则是不同的cookie的path属性无法修改
// 如:
// http://localhost:8012/a/insert
// 与
// http://localhost:8012/a/b/update
@GetMapping("/update")
public void d(HttpServletRequest request,HttpServletResponse response) {
//获取所有的cookie
Cookie[] cookies=request.getCookies();
for (Cookie cookie:cookies){
String c = cookie.getName();
//创建一个与原cookie的值不同其他相同的cookie
cookie = new Cookie(c, "要修改的值");
//将原cookie覆盖,注意上面的要求有没有做到在同一层
response.addCookie(cookie);
}
}
3.2、删除cookie
如果删除不了看上面修改的注意事项
@GetMapping("/updates")
public void e(HttpServletRequest request,HttpServletResponse response) {
Cookie[] cookies=request.getCookies();
for (Cookie cookie:cookies){
String c = cookie.getName();
//创建一个与原cookie的名相同值为空的cookie
cookie = new Cookie(c, "");
//将`Max-Age`设置为0,不能是其他的
cookie.setMaxAge(0);
//覆盖删除原cookie
response.addCookie(cookie);
}
}