Новый HttpSession для каждого запроса? - PullRequest
3 голосов
/ 17 июля 2010

Я всегда считал само собой разумеющимся файл cookie JSESSIONID, созданный для каждого нового запроса для данного клиента при разработке приложений с использованием спецификации сервлета. Но, подумав немного, не логичнее ли для контейнера сервлета создавать заголовок cookie только после , когда сеанс был запрошен и создан в коде? Для клиентов, у которых отключены куки-файлы, не будет ли он создавать новый HttpSession для каждого сделанного запроса?

Пожалуйста, дайте мне знать, если вопрос все еще неясен, чтобы я мог его отредактировать. ТИА.

1 Ответ

1 голос
/ 17 июля 2010

Новый сеанс не будет создаваться контейнером сервлета по умолчанию, если сервлет не создаст его явно.То, что в заголовке заполняется JSEESIONID, не означает, что на сервере должно быть видение.Исключением является JSP, которые по умолчанию создают сеанс, если его там нет, если только <% @ page session = "false"%>

Если файлы cookie не включены:

Веб-контейнер может использовать несколько методов для связи сеанса с пользователем, каждый из которых включает передачу идентификатора между клиентом и сервером.Идентификатор может храниться на клиенте в виде файла cookie или веб-компонент может включать идентификатор в каждый URL-адрес, возвращаемый клиенту.

Если ваше приложение использует объекты сеанса, вы должны убедиться, что отслеживание сеансавключается, если приложение перезаписывает URL-адреса всякий раз, когда клиент отключает файлы cookie.Вы делаете это, вызывая метод encodeURL (URL) ответа для всех URL, возвращаемых сервлетом.Этот метод включает идентификатор сеанса в URL, только если куки отключены;в противном случае он возвращает URL без изменений.

...