0

场景如下:单页应用程序(基于 AJAX),在不允许 cookie 但仍需要会话的环境中,以及后端的 Tomcat(或 JBoss)。

让后端容器(Tomcat)管理会话的最佳和最简单的方法是什么?

我是否只需将 JSESSIONID=SESSION_ID_GOES_HERE 附加到我发出的每个 AJAX 请求中,这足以让 Tomcat 接收会话吗?

4

1 回答 1

0

是的,确切地说,如果您不能使用 cookie,您可以在对服务器的调用之间实现相同的应用 JSessionid。它被称为 URL 重写。

您必须将 jsessionid 附加到返回给浏览器的链接,这样,浏览器将使用相同的 jsessionid 将其后续调用发送到服务器。但要做到这一点,您应该使用 servlet 的响应参数的方法:encodeURl() 和 setRedirect(),以便它正确附加 de JSessionId(如果确实需要)。

例如,如果您的 servlet/jsp 中有以下链接:

out.println("<a href=\"/mycontext/newpage\">Next Page<a>");

你应该这样写:

 out.println("<a href=\"");
  out.println(response.encodeURL ("/mycontext/newpage"));
  out.println("\">Next Page</a>");

如果需要,它将自动附加 JSessionId(例如,如果禁用 cookie)。

同样,如果您只需要发送重定向,您应该:

response.sendRedirect (response.encodeRedirectURL
    ("http://myhost/mycontext/newpage"));

有关更多信息,请查看HttpServletResponse的 JDK API 。

于 2012-11-13T08:09:17.490 回答