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

我创建了一个JSP页面,该页面创建两个cookie并将其添加到响应对象。这个页面有一个提交按钮,它调用一个servlet对象。这个servlet将尝试访问先前JSP页面存储的cookie,但它只能访问JSESSIONID cookie。这是如何造成的,我该如何解决这个问题?在JSP页面中创建的Cookie在Servlet中不可用,只有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上的不同的(子)文件夹中运行。

以上是 在JSP页面中创建的Cookie在Servlet中不可用,只有JSESSIONID cookie可用 的全部内容, 来源链接: utcz.com/qa/261711.html

回到顶部