Одностраничное приложение, без файлов cookie, управление сеансом tomcat

Вот сценарий: одностраничное приложение (на основе AJAX) в среде, которая запрещает файлы cookie, но все же требует сеансов, и Tomcat (или JBoss) в бэкэнде.

Какой лучший и самый простой способ по-прежнему управлять сеансами внутреннего контейнера (Tomcat)?

Нужно ли мне просто добавлять JSESSIONID=SESSION_ID_GOES_HERE к каждому AJAX-запросу, который я делаю, и достаточно ли этого, чтобы Tomcat подхватил сеанс?


person Dan    schedule 13.11.2012    source источник


Ответы (1)


Да, именно, если вы не можете использовать файлы cookie, вы можете добиться того же добавления JSessionid между обращениями к серверу. Это называется перезапись URL.

Вы должны добавить jsessionid к ссылкам, возвращаемым в браузер, таким образом, браузер отправит свой последующий вызов на сервер с тем же jsessionid. Но для этого нужно использовать методы параметра ответа сервлета: encodeURl() и setRedirect(), чтобы он корректно прикреплял de JSessionId (если это действительно необходимо).

Например, если у вас есть следующая ссылка в вашем сервлете/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"));

Для получения дополнительной информации см. API JDK для HttpServletResponse.

person Toni    schedule 13.11.2012