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

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

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

最佳答案

是的,确切地说,如果您不能使用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。

关于session - 单页应用程序,无cookie,tomcat session 管理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13355123/

10-10 02:59