Обычно файлы cookie используются для обработки сеанса. Затем все вкладки и окна браузера совместно используют один и тот же сеанс. Но вы можете настроить свой контейнер сервлетов на использование перезаписи URL вместо файлов cookie. (Вот пример для Jetty .)
При перезаписи URL-адреса сеанс определяется только с помощью параметра URL-адреса, содержащего идентификатор сеанса. Таким образом, каждый внутренний URL-адрес вашего веб-приложения должен быть расширен с помощью этого параметра, используя метод HttpServletResponse.encodeURL()
. Если вы используете веб-фреймворк, такой как Wicket, велика вероятность, что это уже сделано для вас.
С перезаписью URL можно иметь несколько независимых сеансов в разных окнах или вкладках одного и того же экземпляра браузера.
Обновление:
В ответ на downvote я хочу прояснить различное поведение перезаписи URL:
Предположим, что URL-адрес веб-сайта http://webapp.com.
Куки:
Откройте http://webapp.com на первой вкладке браузера.
Сервер создает сеанс и отправляет cookie в ответ.
Браузер сохраняет куки.
Затем откройте http://webapp.com во второй вкладке браузера. Браузер связывает этот URL с недавно сохраненным файлом cookie и добавляет файл cookie в запрос.
Для сервера нет разницы между запросами из первой или второй вкладки браузера и ответами из одного и того же сеанса. Иногда это желаемое поведение.
Перезапись URL:
Откройте http://webapp.com в первой вкладке браузера.
Сервер создает сеанс с идентификатором 1 и добавляет параметр jsessionid = 1 к каждому URL на странице ответа. Файл cookie не передается.
Все дальнейшие запросы к другой странице того же веб-приложения с первой вкладки браузера включают идентификатор сеанса (для примера 1).
Затем откройте http://webapp.com на второй вкладке браузера. В этом и заключается разница! Поскольку в запросе нет файла cookie и параметра jsessionid, сервер создает новый сеанс (т. Е. Идентификатор 2) и добавляет параметр jsessionid = 2 к каждому URL-адресу, содержащемуся на странице ответа. Отныне все последующие запросы из второй вкладки браузера связаны с сеансом 2.
Итак, у вас есть два независимых сеанса в одном браузере.