Cookie屬性
了解這幾個屬性之後,就知道如何進行Cookie的操作了。
name
Cookie的名稱。
value
Cookie的值。
maxAge
Cookie的失效時間,有以下幾種值,預設為-1

path
Cookie的有效路徑,
/
表示這個路徑即該工程下都可以通路該cookie 如果不設定路徑,那麼隻有設定該cookie路徑及其子路徑可以通路。
擷取所有Cookie
public static Cookie[] getCookies(HttpServletRequest request) {
return request.getCookies();
}
擷取cookie很簡單,直接從request中擷取即可。
根據名稱擷取指定Cookie
public static Cookie getCookieByName(HttpServletRequest request, String name) {
if (StringUtils.isBlank(name)) {
return null;
}
Cookie[] cookies = getCookies(request);
if (null != cookies) {
for (Cookie cookie : cookies) {
if (name.equals(cookie.getName())) {
return cookie;
}
}
}
return null;
}
從所有cookie中循環判斷進行擷取指定cookie。
添加Cookie
public static boolean addCookie(HttpServletResponse response, String name, String value,
int maxAge) {
if (StringUtils.isBlank(name) || StringUtils.isBlank(value)) {
return false;
}
Cookie cookie = new Cookie(name.trim(), value.trim());
if (maxAge <= 0) {
maxAge = Integer.MAX_VALUE;
}
cookie.setMaxAge(maxAge);
cookie.setPath("/");
response.addCookie(cookie);
return true;
}
這個添加很簡單。
删除Cookie
public static boolean removeCookie(HttpServletRequest request, HttpServletResponse response,
String name) {
if (StringUtils.isBlank(name)) {
return false;
}
Cookie[] cookies = getCookies(request);
if (null != cookies) {
for (Cookie cookie : cookies) {
if (name.equals(cookie.getName())) {
cookie.setValue(null);
cookie.setMaxAge(0);
cookie.setPath("/");
response.addCookie(cookie);
return true;
}
}
}
return false;
}
删除cookie,把value設定為null,把max-age設定為0就行了。
注意
編輯操作和删除操作一樣,但是需要注意的是修改、删除Cookie時,除value、maxAge之外的所有屬性,例如name、path、domain等,都要與原Cookie完全一樣。否則,浏覽器将視為兩個不同的Cookie不予覆寫,導緻修改、删除失敗。