以下是該場景: 單頁應用程序(基於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。