笔者最近有一个项目需要在退出时删除相关cookie,利用手头现有的方法就是删不掉,宝宝真是一脸无奈,后来经过多方查找,最终搞定,现在整理出来跟大家分享一下。
先贴一下有问题的代码://设置保存一个cookie
public static void setCookie(HttpServletResponse response,String key,String value,int age){
Cookie cookie = new Cookie(key, value);
cookie.setMaxAge(age);
response.addCookie(cookie);
}
//删除cookie
public static void deleteCookie(HttpServletResponse response,String key){
Cookie cookie = new Cookie(key, null);
cookie.setMaxAge(0);
response.addCookie(cookie);
}
不饶圈子,直接贴出完善后的代码:public static void setCookie(HttpServletResponse response,String key,String value,int age){
Cookie cookie = new Cookie(key, value);
cookie.setPath("/");//这一点很重要
cookie.setMaxAge(age);
response.addCookie(cookie);
}
public static void deleteCookie(HttpServletResponse response,String key){
Cookie cookie = new Cookie(key, null);
cookie.setPath("/");//这一点很重要
cookie.setMaxAge(0);
response.addCookie(cookie);
}
大家看到没,关键点在这里cookie.setPath("/")。在最初的方法里我没有加,导致删除失败。cookie设置里还有一个setDomain,网上有资料说也必须加,但是在笔者的项目里没有设置这个属性也同样成功删除了cookie。