一、删除已知名称的Cookie(方案:重新建立同名立即删除类型的Cookie)
Cookie newCookie=new Cookie("username",null); //假如要删除名称为username的Cookie
newCookie.setMaxAge(0); //立即删除型
newCookie.setDomain(domain);//保存cookie的IP地址,则是删除这个IP的cookie
newCookie.setPath("/"); //项目所有目录均有效,这句很关键,否则不敢保证删除
newCookie.setHttpOnly(httpOnly);
response.addCookie(newCookie); //重新写入,将覆盖之前的
二、删除所有Cookie
Cookie[] cookies=request.getCookies();
for(Cookie cookie:cookies){
cookie.setDomain(domain);//保存cookie的IP地址,则是删除这个IP的cookie
cookie.setMaxAge(0);
cookie.setPath("/");
cookie.setHttpOnly(httpOnly);
response.addCookie(cookie);
}
三、定义静态工具类
//删除某个cookie
public static void deleteCookie(HttpServletResponse response, String domain, String path, String name,boolean httpOnly) {
Cookie cookie = new Cookie(name, null);
cookie.setDomain(domain);//保存cookie的IP地址,则是删除这个IP的cookie
cookie.setPath(path);
cookie.setMaxAge(0);
cookie.setHttpOnly(httpOnly);
response.addCookie(cookie);
}
//调用
HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
CookieUtil.deleteCookie(response, "localhost", "/", "nickname", false);