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不予覆盖,导致修改、删除失败。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。