天天看点

Cookie - JavaWeb

创建Cookie

Cookie - JavaWeb
// 1. 创建Cookie对象
Cookie cookie = new Cookie("key1", "value1");
// 2. 通知客户端保存Cookie
resp.addCookie(cookie);

// 3. 创建多个Cookie并保存到客户端
Cookie cookie1 = new Cookie("key2", "value2");
resp.addCookie(cookie1);

resp.getWriter().write("Cookie创建成功")      

获取Cookie

Cookie[] cookies = req.getCookies();

for (Cookie cookie : cookie) {
    // getName(): 返回Cookie的key
    // getValue(): 返回Cookie的value值
    resp.getWrite().write("Cookie[" + cookie.getName() + "=" + cookie.getValue + "]<br/>")
}      

获取想要的cookie

Cookie getKey2_Cookie = null;

for (Cookie cookie : cookie) {
    if ("key2".equals(cookie.getName())) {
        getKey2_Cookie = cookie;
        break;
    }
}

// 如果不等于null, 说明已经赋值, 找到了需要的Cookie
if (getKey2_Cookie != null) {
    resp.getWriter().write("已找到需要的Cookie");
}      

修改Cookie

// 方案1
// 定义一个相同名的key, 赋不同的value重新添加即可
Cookie cookie = new Cookie("key1", "newValue1");
resp.addCookie(cookie);

resp.getWriter().write("key1的Cookie已经修改好");

// 方案2
// 找到需要修改的Cookie, 然后调用setValue()方法赋予新的Cookie值
//...获取cookie
Cookie cookie = 获取指定Cookie
if (cookie != null) {
    cookie.setValue("newValue2");
    resp.addCookie(cookie)
}      

Cookie存活时间

public void setMaxAge(int expiry) (默认为-1, 即关闭浏览器则删除)

设置 cookie 的最大生存时间,以秒为单位。 正值表示 cookie 将在经过该值表示的秒数后过期。注意,该值是 cookie 过期的最大 生存时间,不是 cookie 的当前生存时间。 负值意味着 cookie 不会被持久存储,将在 Web 浏览器退出时删除。0 值会导致删除 cookie。
Cookie cookie = 获取指定Cookie;
// 设置Cookie一小时之后删除
cookie.setMaxAge(60*60);
resp.addCookie(cookie);
resp.getWriter().write("已经将获取的Cookie设置为存活一小时")      

Cookie有效路径Path的设置

Cookie cookie = new Cookie("path1", "path1");
// getContextPath() -> 得到工程路径
cookie.setPath(req.getContextPath() + '/abc');
resp.addCookie(cookie);
resp.getWriter().write("创建了一个带有Path路径的Cookie");