这是场景:
单页应用程序(基于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/