2010-07-17 7 views
3

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

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

ответ

1

Новый сеанс не создается контейнером Servlet по умолчанию, если сервлет фактически не создает его явно. Просто потому, что в заголовке заполняется JSEESIONID, это не значит, что на сервере должно быть видение. Исключением из этого правила в JSPs, что по умолчанию создать сеанс, если один там нет, если <% @ страницы сессии = «ложных»%>

Насколько не имеющие печенье включено:

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

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

+0

Это вызывает вопрос, что именно является целью генерации JSESSIONID заранее, если контейнер в любом случае не собирается создавать новый сеанс? – sasuke

+0

Ну, я думаю, я просто задам новый вопрос по этому вопросу. Спасибо за помощь. – sasuke

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