天天看點

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");