Cookie
概述
1、Cookie 是服务器通知客户端保存键值对的一种技术
2、客户端若有 Cookie,每次请求都发送 Cookie 到服务器
3、每个 Cookie 大小不能超过 4KB
4、客户端收到响应后,存在 set-cookie 响应头,查找客户端是否存在该 Cookie,存在,则修改值;不存在,则创建新 Cookie
5、值不应包含空格、[]、()、=、,、""、//、?、@、:、:、空值、中文,若需要,使用 BASE64 编码
创建
//创建Cookie对象
Cookie cookie = new Cookie("key","value");
//通知客户端保存Cookie
resp.addCookie(cookie);
获取
Cookie[] cookies = req.getCookies();
修改值
1、方案一
//1、创建一个要修改的同名的Cookie对象
//2、在构造器,同时赋于新的Cookie值
Cookie cookie = new Cookie("key","value");
//3、调用addCookie(Cookie)
resp.addCookie(cookie);
2、方案二
//1、查找需要修改的Cookie对象
Cookie[] cookies = req.getCookies();
Cookie updateCookie;
for (Cookie cookie : cookies) {
    if (cookie.getName().equals("待修改Cookie名字")){
        updateCookie = cookie;
    }
}
//2、调用setValue()赋于Cookie新值
if (updateCookie != null){
    updateCookie.setValue("新值");
}
//3、调用addCookie()
resp.addCookie(updateCookie);
控制生命周期
1、正数,表示在指定的秒数后过期;负数,表示浏览器关闭,就删除该 Cookie(默认);零,表示立刻删除该 Cookie
public void setMaxAge(int expiry) {
    maxAge = expiry;
}
2、该 Cookie 必须调用 addCookie(),才会生效
设置有效路径 path
1、Cookie 的 path 属性可以有效的过滤,选择性发送哪些 Cookie 到服务器
2、path 属性是通过请求的地址来进行有效的过滤
3、示例
Cookie cookie = new Cookie("key", "value");
//工程路径/资源路径,必须访问指定的path,该Cookie才会发送到服务器
cookie.setPath(req.getContextPath() + "/资源路径");
//使path生效
resp.addCookie(cookie);
                    
                
                
            
        
浙公网安备 33010602011771号