使用addCookie()响应并发送Redirect()

时间:2012-03-23 09:45:34

标签: servlets cookies

我使用以下代码设置cookie然后重定向。

String level=(String) request.getAttribute("level");

 if(level!=null)
 {
  Cookie cookie=new Cookie("level",level);
  cookie.setMaxAge(-1);
  cookie.setPath("http://localhost:8080/saml");

  response.addCookie(cookie);

  response.sendRedirect("http://​localhost:8080/saml/someservices.jsp");
 }


这段代码工作正常。但我想知道怎么做?因为当jsp引擎解析jsp代码时,它将首先遇到addCookie和发送重定向。它是否会在response.addCookie(cookie);行后立即添加Cookie?如果我以相反的方式给出它,即先sendRedirect()然后addCookie()怎么办? jsp引擎如何看待这个?

2 个答案:

答案 0 :(得分:6)

Cookie会添加到 HTTP响应标头中。重定向也在标题中指定。当您发送重定向时,两者都会被发送回客户端。

如果颠倒addCookiesendRedirect的顺序,可能仍然有效,具体取决于底层servlet容器中事件的确切顺序。不过我不推荐它。

答案 1 :(得分:-3)

如果代码有效,我会感到惊讶,因为sendRedirect()方法会创建一个新请求,并且在此过程中,先前响应中的所有内容都会重置,这意味着所有cookie都将丢失。新资源http://​localhost:8080/saml/someservices.jsp及其关联的servlet(如果有)将无法获取名为“level”的cookie。