Java管理Cookie增删改查操作

Cookie属性

了解这几个属性之后,就知道如何进行Cookie的操作了。

name

Cookie的名称。

value

Cookie的值。

maxAge

Cookie的失效时间,有以下几种值,默认为-1
说明
负数浏览器关闭后cookie就失效
0马上清除cookie
正数设置过期时间,单位:秒

path

Cookie的有效路径, /表示这个路径即该工程下都可以访问该cookie 如果不设置路径,那么只有设置该cookie路径及其子路径可以访问。

获取所有Cookie

  1. publicstaticCookie[] getCookies(HttpServletRequest request){
  2.    return request.getCookies();
  3. }
获取cookie很简单,直接从request中获取即可。

根据名称获取指定Cookie

  1. publicstaticCookie getCookieByName(HttpServletRequest request,String name){
  2.    if(StringUtils.isBlank(name)){
  3.        returnnull;
  4.    }
  5.    Cookie[] cookies = getCookies(request);
  6.    if(null!= cookies){
  7.        for(Cookie cookie : cookies){
  8.            if(name.equals(cookie.getName())){
  9.                return cookie;
  10.            }
  11.        }
  12.    }
  13.    returnnull;
  14. }
从所有cookie中循环判断进行获取指定cookie。

添加Cookie

  1. publicstaticboolean addCookie(HttpServletResponse response,String name,String value,
  2.            int maxAge){
  3.    if(StringUtils.isBlank(name)||StringUtils.isBlank(value)){
  4.        returnfalse;
  5.    }
  6.    Cookie cookie =newCookie(name.trim(), value.trim());
  7.    if(maxAge <=0){
  8.        maxAge =Integer.MAX_VALUE;
  9.    }
  10.    cookie.setMaxAge(maxAge);
  11.    cookie.setPath("/");
  12.    response.addCookie(cookie);
  13.    returntrue;
  14. }
这个添加很简单。

删除Cookie

  1. publicstaticboolean removeCookie(HttpServletRequest request,HttpServletResponse response,
  2.            String name){
  3.    if(StringUtils.isBlank(name)){
  4.        returnfalse;
  5.    }
  6.    Cookie[] cookies = getCookies(request);
  7.    if(null!= cookies){
  8.        for(Cookie cookie : cookies){
  9.            if(name.equals(cookie.getName())){
  10.                cookie.setValue(null);
  11.                cookie.setMaxAge(0);
  12.                cookie.setPath("/");
  13.                response.addCookie(cookie);
  14.                returntrue;
  15.            }
  16.        }
  17.    }
  18.    returnfalse;
  19. }
删除cookie,把 value设置为null,把 max-age设置为0就行了。

注意

编辑操作和删除操作一样,但是需要注意的是修改、删除Cookie时,除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样。否则,浏览器将视为两个不同的Cookie不予覆盖,导致修改、删除失败。

本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
极客文库 » Java管理Cookie增删改查操作

欢迎加入「极客文库」,成为原创作者从这里开始!

立即加入 了解更多