Cookie: 服务器发送给浏览器的一个标记,通过Response Header中的Set-Cookie头发送。 浏览器请求的时候,会通过Request Header中的Cookie头把它发送回给服务器。
主要属性:
- name-value对:不言自明
- Expires:过期时间
- Path:cookie在哪个路径下生效。比如www.abc.com/a/index.html设置了一个cookie,那么www.abc.com/a/下面的其他页面也可以访问该cookie,www.abc.com/b/下面的页面就不能访问。如果要突破这个限制,可以设置path为“/”
- Domain:表示cookie可以被访问的域,缺省为请求的地址。比如,属于www.abc.com的cookie只能在这个域名的访问中被使用。可以设置这个属性,指定cookie的生效域。如果要设置通用的,可以这样:.abc.com
注:
- 如果不设置MaxAge,则浏览器关闭时就被删除。
- 隐私浏览方式:会禁用Cookie。
Java代码实现(设置和获取):
/**
* 设置cookie到response中
* @param response
* @param name cookie名字
* @param value cookie值
* @param maxAge 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*60);
}
response.addCookie(cookie);
}
/**
* 根据名字从request中获取cookie的值
* @param request
* @param name cookie名字
* @return
*/
public static String getCookieByName(HttpServletRequest request, String name){
Cookie[] cookies = request.getCookies();//获取cookie数组
for(Cookie cookie : cookies){
if(cookie.getName().equals(name)){
return cookie.getValue();
}
}
return null;
}