【发布时间】:2012-04-06 23:49:55
【问题描述】:
我想知道如何在 Spring MVC 中删除 HttpServletResponse 中的 cookie。我有创建 cookie 的登录方法和要删除它的注销方法,但它不起作用。
代码如下:
@RequestMapping(method = RequestMethod.POST)
public ModelAndView Login(HttpServletResponse response, String user, String pass) {
if (user != null && pass != null && userMapper.Users.get(user).getPass().equals(pass)){
Cookie cookie = new Cookie("user", user);
cookie.setPath("/MyApplication");
cookie.setHttpOnly(true);
cookie.setMaxAge(3600);
response.addCookie(cookie);
Map model = new HashMap();
model.put("user", user);
return new ModelAndView("home", "model", model);
}
return new ModelAndView("login");
}
@RequestMapping(value="/logout", method = RequestMethod.POST)
public ModelAndView Logout(HttpServletRequest request, HttpServletResponse response) {
Cookie[] cookies = request.getCookies();
for(int i = 0; i< cookies.length ; ++i){
if(cookies[i].getName().equals("user")){
//Cookie cookie = new Cookie("user", cookies[i].getValue());
//cookie.setMaxAge(0);
//response.addCookie(cookie);
cookies[i].setMaxAge(0);
response.addCookie(cookies[i]);
break;
}
}
return new ModelAndView("login");
}
我以为只需要更改maxAge,但在浏览器中cookie 不会更改。我什至尝试在注释块中重写一个同名的cookie,但它也不起作用。
【问题讨论】:
-
你试过 cookie.setvalue("") 吗??
-
是的,setValue("") 也不起作用...
-
带有
new Cookie()的注释代码应该可以工作,除了设置相同的cookie域。
标签: servlets cookies spring-mvc