【发布时间】:2016-08-02 07:40:37
【问题描述】:
我创建了一个 JSP 页面,它创建了两个 cookie 并将其添加到响应对象。该页面有一个调用 servlet 对象的提交按钮。并且这个servlet 会尝试访问之前JSP 页面存储的cookie,但它只能访问JSESSIONID cookie。这是如何引起的,我该如何解决?
【问题讨论】:
我创建了一个 JSP 页面,它创建了两个 cookie 并将其添加到响应对象。该页面有一个调用 servlet 对象的提交按钮。并且这个servlet 会尝试访问之前JSP 页面存储的cookie,但它只能访问JSESSIONID cookie。这是如何引起的,我该如何解决?
【问题讨论】:
当您没有明确设置 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 中可用。
【讨论】: