在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