Java 对 Cookie增删改查的实现示例
Cookie属性
name:cookie的名称
value:cookie的值
maxAge:cookie的失效时间,默认为-1
值 | 说明 | 负数 | 浏览器关闭后立即失效 | 0 | 马上清除cookie | 正数 | 设置过期时间,单位秒s |
---|
path
Cookie的有效路径,/表示这个路径即该工程下都可以访问该cookie如果不设置路径,那么只有设置该cookie路径和其子路径可以访问。
获取所有Cookie
publicstaticCookie[]GetCookies(HttpServletRequestrequest){ returnrequest.getCookies(); }
获取cookie很简单,直接从request中获取即可。
根据名称获取指定Cookie
publicstaticCookiegetCookieByName(HttpServletRequestrequest,Stringname){ if(StringUtils.isBlank(name)){ returnnull; } Cookie[]cookies=getCookies(request); if(null!=cookies){ for(Cookiecookie:cookies){ if(name.equals(cookie.getName())){ returncookie; } } } returnnull; }
添加Cookie
publicstaticbooleanaddCookie(HttpServletResponseresponse,Stringname,Stringvalue, intmaxAge){ if(StringUtils.isBlank(name)||StringUtils.isBlank(value)){ returnfalse; } Cookiecookie=newCookie(name.trim(),value.trim()); if(maxAge<=0){ maxAge=Integer.MAX_VALUE; } cookie.setMaxAge(maxAge); cookie.setPath("/"); response.addCookie(cookie); returntrue; }
删除Cookie
publicstaticbooleanremoveCookie(HttpServletRequestrequest,HttpServletResponseresponse, Stringname){ if(StringUtils.isBlank(name)){ returnfalse; } Cookie[]cookies=getCookies(request); if(null!=cookies){ for(Cookiecookie:cookies){ if(name.equals(cookie.getName())){ cookie.setValue(null); cookie.setMaxAge(0); cookie.setPath("/"); response.addCookie(cookie); returntrue; } } } returnfalse; }
Tips
编辑操作和删除操作一样,但是需要注意的是修改、删除Cookie时,除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样。否则,浏览器将视为两个不同的Cookie不予覆盖,导致修改、删除失败。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。