我使用以下代码设置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引擎如何看待这个?
答案 0 :(得分:6)
Cookie会添加到 HTTP响应标头中。重定向也在标题中指定。当您发送重定向时,两者都会被发送回客户端。
如果颠倒addCookie
和sendRedirect
的顺序,可能仍然有效,具体取决于底层servlet容器中事件的确切顺序。不过我不推荐它。
答案 1 :(得分:-3)
如果代码有效,我会感到惊讶,因为sendRedirect()
方法会创建一个新请求,并且在此过程中,先前响应中的所有内容都会重置,这意味着所有cookie都将丢失。新资源http://localhost:8080/saml/someservices.jsp
及其关联的servlet(如果有)将无法获取名为“level”的cookie。