Как веб-контейнер различает HttpSessions для разных пользователей?
Для каждого пользовательского запроса будет создан уникальный идентификатор сеанса.
пример
Если имеется 10 пользователей, создается 10 сеансов. Откуда веб-контейнер знает, этот конкретный сеанс используется для user1 ... и так далее.
3 ответа
Наиболее распространенным способом является использование куки. Существует файл cookie, обычно называемый "JSESSIONID", который имеет уникальный идентификатор сеанса. Когда он прикреплен к запросам, сервер использует его, чтобы связать запрос с соответствующим сеансом пользователя на сервере.
Есть и другие техники, но я не могу вспомнить их все. Была возможность сериализовать сеанс и отправить его между сервером и клиентом и другими способами, подобными этому, но сеансовые cookie-файлы являются наиболее распространенными на сегодняшний день.
Для каждого пользовательского запроса будет создан уникальный идентификатор сеанса.
Нет. Для каждого пользователя создается отдельный идентификатор сеанса.
Если есть 10 пользователей, 10 сеансов создаются.
Именно так. Вы просто противоречили себе. Каждый из этих пользователей может отправить несколько запросов в одном сеансе.
Как веб-контейнер знает, этот конкретный сеанс используется для user1..и так далее.
Посредством идентификатора сеанса, переданного в браузер с помощью файла cookie, и возвращенного на сервер при последующих запросах через тот же файл cookie или параметр JSESSIONID в URL-адресе.
Простой обзор:
Когда пользователь посещает веб-сайт в первый раз, контейнер сервлета создаст
HttpSession
Объект и сохранить его на сервере.это
HttpSession
объект помечен каким-то длинным уникальным идентификатором (session.getId()).Кроме того, сервер теперь устанавливает Cookie в заголовке ответа с JSessionID в качестве ключа и длинным уникальным Id в качестве значения.
Когда пользователь делает еще один запрос, браузер передает cookie в каждом последующем запросе (в заголовках запросов).
Таким образом, контейнер сервлета идентифицирует каждый сеанс для каждого пользователя.