在JSP页面中创建的Cookie在Servlet中不可用,只有JSESSIONID cookie可用

时间:2016-08-02 07:40:38

标签: jsp servlets cookies

我创建了一个JSP页面,它创建了两个cookie并将其添加到响应对象。该页面有一个调用servlet对象的提交按钮。此servlet将尝试访问先前JSP页面存储的cookie,但它只能访问JSESSIONID cookie。这是怎么造成的,我该如何解决?

1 个答案:

答案 0 :(得分:1)

当您没有明确设置Cookie路径时,就会发生这种情况。然后它将默认为请求URI中的当前文件夹。浏览器只会在cookie的路径与当前请求URI匹配时发回cookie。

因此,假设您的JSP具有URI /pages/some.jsp,那么在JSP中创建的任何cookie都将具有/pages的默认路径。这意味着浏览器只会在匹配/pages/*的任何请求上发回cookie。如果您的servlet具有URI /someServlet,那么它将无法检索cookie。它只会检索路径为/someServlet/的Cookie。

如果您想在全范围内制作Cookie,则需要明确设置/的路径。

Cookie cookie = new Cookie(name, value);
cookie.setPath("/");
response.addCookie(cookie);

这也可以在任何运行在不同(子)文件夹上的servlet或JSP中使用。