2009-11-25 3 views

ответ

2

На стороне JSP вы можете использовать JSTL's <c:url>.

<a href="<c:url value="page.jsp" />">link</a> 

Простота в использовании. Он автоматически добавит jsessionid, когда файлы cookie будут отключены.

На стороне сервлета вам необходимо HttpServletResponse#encodeURL() или - обычно предпочтительный внутри Servlets-HttpServletResponse#encodeRedirectURL() для этого.

response.sendRedirect(response.encodeRedirectURL("page.jsp")); 
3

Без печенья, у вас есть два варианта. Первым передается sessionId через Urls. Это требует большой работы на сервере, потому что каждый URL-адрес, который вы отправляете обратно, должен иметь присоединенный к нему sessionId (обычно в форме параметра строки запроса). Например:

/путь/к/страница

становится

/путь/к/страница SessionID = Asdfg-Asdfg-Asdfg-Asdfg-Asdfg

Другой вариант вы должны были бы? объединить информацию, которую вы используете через http, в «уникальный» ключ и создать свой собственный сеансовый ковш. Объединив Http UserAgent, RemoteIp и RemoteXfip, вы можете приблизиться к однозначной идентификации пользователя, но нет никаких гарантий, что этот ключ уникален на 100%.

+0

Что произойдет, если я нажму F5 в браузере для второго варианта? – YOU

+0

, так как пользовательский агент, remoteIp и remoteXfip отправляются на сервер по всем запросам, вы можете создать тот же «уникальный» ключ и искать в своем сеансе. Это преимущество второго решения, оно не требует каких-либо изменений в структуре веб-сайта или структуре URL-адреса – LorenVS

2

Каждый URL должен быть закодирован с использованием response.encodeURL("page.jsp")

Это добавит идентификатор сеанса на конце каждого URL поэтому файлы не должны быть включены.

Обратите внимание, что вам нужно будет сделать это вручную для каждый URL, чтобы он работал.

См. this link для получения дополнительной информации.

Смежные вопросы