Я хочу знать, как я могу управлять сеансом, если в клиентском браузере отключена функция файлов cookie.
Если я хочу реализовать это в простом JSP-Servlet, то как я могу это сделать?
Заранее спасибо...
Я хочу знать, как я могу управлять сеансом, если в клиентском браузере отключена функция файлов cookie.
Если я хочу реализовать это в простом JSP-Servlet, то как я могу это сделать?
Заранее спасибо...
На стороне JSP вы можете использовать JSTL <c:url>
для этого.
<a href="<c:url value="page.jsp" />">link</a>
Просто так. Он автоматически добавит jsessionid
, когда файлы cookie отключены.
На стороне сервлета вам понадобится HttpServletResponse#encodeURL()
или - обычно предпочтительнее внутри сервлетов- HttpServletResponse#encodeRedirectURL()
для этого.
response.sendRedirect(response.encodeRedirectURL("page.jsp"));
Без файлов cookie у вас есть два варианта. Первый — это передача sessionId через URL-адреса. Это требует большой работы на сервере, потому что каждый URL-адрес, который вы отправляете обратно, должен иметь добавленный к нему sessionId (обычно в форме параметра строки запроса). Например:
/путь/к/странице
становится
/path/to/page?sessionid=ASDFG-ASDFG-ASDFG-ASDFG-ASDFG
Другой вариант, который у вас есть, - это объединить информацию, которую вы имеете через http, в «уникальный» ключ и создать свой собственный сегмент сеанса. Комбинируя Http UserAgent, RemoteIp и RemoteXfip, вы можете приблизиться к уникальной идентификации пользователя, но нет никаких гарантий, что этот ключ уникален на 100%.
перезапись URL
http://www.developertutorials.com/tutorials/java/implement-session-tracking-050611/page5.html
Каждый URL должен быть закодирован с использованием response.encodeURL("page.jsp")
Это добавит идентификатор сеанса в конец каждого URL-адреса, поэтому файлы cookie не нужно включать.
Обратите внимание, что вам придется сделать это вручную для каждого URL, чтобы все заработало.
См. эту ссылку для получения дополнительной информации.