2012-11-13 33 views
0

以下是该场景: 单页应用程序(基于AJAX),在不允许使用cookie但仍需要会话且后台Tomcat(或JBoss)的环境中。单页面应用程序,没有cookies,tomcat会话管理

什么是仍然有后端容器(Tomcat)管理会话的最好和最简单的方法?

我是否只需要将JSESSIONID = SESSION_ID_GOES_HERE附加到我制作的每个AJAX请求上,并且这足以让Tomcat提取会话?

回答

0

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