以下是该方案: 单页应用程序(基于AJAX),在不允许cookie但仍需要会话的环境中,以及后端的Tomcat(或JBoss)。
仍然有后端容器(Tomcat)管理会话的最佳和最简单的方法是什么?
我是否只需要将JSESSIONID = SESSION_ID_GOES_HERE附加到我发出的每个AJAX请求中,这是否足以让Tomcat接听会话?
答案 0 :(得分: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。