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