以下是该场景: 单页应用程序(基于AJAX),在不允许使用cookie但仍需要会话且后台Tomcat(或JBoss)的环境中。单页面应用程序,没有cookies,tomcat会话管理
什么是仍然有后端容器(Tomcat)管理会话的最好和最简单的方法?
我是否只需要将JSESSIONID = SESSION_ID_GOES_HERE附加到我制作的每个AJAX请求上,并且这足以让Tomcat提取会话?
以下是该场景: 单页应用程序(基于AJAX),在不允许使用cookie但仍需要会话且后台Tomcat(或JBoss)的环境中。单页面应用程序,没有cookies,tomcat会话管理
什么是仍然有后端容器(Tomcat)管理会话的最好和最简单的方法?
我是否只需要将JSESSIONID = SESSION_ID_GOES_HERE附加到我制作的每个AJAX请求上,并且这足以让Tomcat提取会话?
是的,确切地说,如果你不能使用cookie,你可以在调用服务器之间添加JSessionid。它被称为URL重写。
您必须将jsessionid附加到返回给浏览器的链接上,这样,浏览器会使用相同的jsessionid将其后续调用发送到服务器。但要做到这一点,您应该使用servlet的response参数的方法: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>");
它将authomatically附加JSESSIONID,如果它需要(如例如cookies被禁用)。
用同样的方法,如果你只需要发送一个重定向,你应该:
response.sendRedirect (response.encodeRedirectURL
("http://myhost/mycontext/newpage"));
欲了解更多信息,看看JDK的API HttpServletResponse。