1.cookie.setMaxAge(maxAge);
这个属性没有设置,则这个cookie即随着浏览器的关闭即消失
2.cookie.setPath("/");
//设置路径,这个路径即该工程下都可以访问该cookie 如果不设置路径,那么只有设置该cookie路径及其子路径可以访问 |
Java例子:
增加cookie:
public static void addCookie(HttpServletResponse response,String name,String value, int maxAge){ |
Cookie cookie = new Cookie(name,value); |
cookie.setPath( "/" ); |
if (maxAge> 0 ) cookie.setMaxAge(maxAge); |
response.addCookie(cookie); |
} |
获取cookie的值:
public String getCookieValueByKey(HttpServletRequest request, String key) {
Cookie[] cookies = request.getCookies();
Map cookieMap = getCookiesMap(cookies);
if (cookieMap.containsKey(key)) {
return (String) cookieMap.get(key);
}
return "";
}
Cookie[] cookies = request.getCookies();
Map cookieMap = getCookiesMap(cookies);
if (cookieMap.containsKey(key)) {
return (String) cookieMap.get(key);
}
return "";
}
public Map getCookiesMap(Cookie[] cookies) {
Map cookieMap = new HashMap();
if (cookies != null && cookies.length > 0) {
for (int i = 0; i < cookies.length; i++) {
cookieMap.put(cookies[i].getName(), cookies[i].getValue());
}
}
Map cookieMap = new HashMap();
if (cookies != null && cookies.length > 0) {
for (int i = 0; i < cookies.length; i++) {
cookieMap.put(cookies[i].getName(), cookies[i].getValue());
}
}
在设置cookie值和获取Cookie的值时,注意编码:
设值时:
public String encodeValue(String value) throws Exception {
if (value != null && !"".equals(value)) {
return URLEncoder.encode(value, "utf-8");
}
return "";
}
if (value != null && !"".equals(value)) {
return URLEncoder.encode(value, "utf-8");
}
return "";
}
取值时:
public String decodeValue(String value) throws Exception {
if (value != null && !"".equals(value)) {
return URLDecoder.decode(value, "utf-8");
}
return "";
}
if (value != null && !"".equals(value)) {
return URLDecoder.decode(value, "utf-8");
}
return "";
}