Cookie详解
# 什么是Cookie
Cookie是服务器通知客户端保存键值对的一种技术
Cookie是servlet发送到Web浏览器的少量信息,这些信息由浏览器保存,然后每次请求都发送回服务器
每个Cookie的大小不能超过4kb
# 如何创建Cookie
// 1 创建Cookie对象
Cookie cookie = new Cookie("key1", "value");
// 2 通知客户端保存Cookie,可以同时添加多个
response.addCookie(cookie);
1
2
3
4
2
3
4
# 服务器如何获取Cookie
服务器获取客户端的Cookie只需要一行代码:
Cookie[] cookies = request.getCookies();
// 获取Cookie的key
cookie.getName();
// 获取Cookie的value
cookie.getValue();
1
2
3
4
5
6
2
3
4
5
6
# Cookie值的修改
方案1:创建同名Cookie对象覆盖之前的Cookie对象
Cookie cookie = new Cookie("key1", "newValue1");
response.addCookie(cookie);
1
2
2
方案2:先查找到需要修改的Cookie对象,调用setValue()
方法赋予新的Cookie值,最后调用response.addCookie()
通知客户端保存修改
Cookie cookie = CookieUtils.findCookie("key2", request.getCookies());
cookie.setValue("newValue2");
response.addCookie(cookie);
1
2
3
2
3
tips:Cookie不支持空格、中文等特殊字符,如果非要使用,需要base64编码
# Cookie生命控制
管理Cookie什么时候被销毁(删除)
主要方法:setMaxAge()
,默认值为-1,即Session级别
正数表示在指定的秒数后过期
负数表示浏览器关闭删除Cookie
0表示马上删除Cookie
# Cookie有效路径path的设置
Cookie的path属性可以有效地过滤哪些Cookie可以发送给服务器,哪些不发。path属性是通过请求的地址来进行有效的过滤。
例:
CookieA:path=/工程路径
CookieB:path=/工程路径/abc
请求地址http://ip:port/工程路径/a.html
这个时候CookieA会发送,CookieB不发送
请求地址http://ip:port/工程路径/abc/a.html
这个时候CookieA发送,CookieB也发送
# 实际使用:免输入用户名登录
编辑 (opens new window)
上次更新: 2024/05/30, 07:49:34