2016-08-16 3 views
0

Для каждого пользовательского запроса будет создан уникальный идентификатор сеанса.Как веб-контейнер различает HttpSessions для разных пользователей?

Пример

Если есть 10 пользователей, 10 сеансов created.How делает веб-контейнер знает, данный сеанс используется для user1 ... и так далее.

+1

Это может помочь http://stackoverflow.com/questions/3106452/how-do-servlets-work-instantiation-shared-variables-and-multithreading – therealprashant

ответ

1

Наиболее распространенный способ использования файлов cookie. Существует файл cookie, обычно называемый «JSESSIONID», который имеет уникальный идентификатор сеанса. Когда он привязан к запросам, сервер использует его для привязки запроса к соответствующему сеансу пользователя на сервере.

Есть и другие методы, но я не могу их запомнить. Была возможность сериализовать сеанс и отправить его между сервером и клиентом и другими подобными методами, но сеансовые файлы cookie являются наиболее распространенными на сегодняшний день.

+0

Как выглядят данные в cookie? JSESSIONID используется для идентификации сеанса. Но как он идентифицирует пользователя? – Anju

+0

Файл cookie содержит уникальный идентификатор сеанса - обычно буквенно-цифровую строку. Контейнер не работает на уровне пользователя - только сеансы. Задача разработчиков - добавлять логику аутентификации, связывать сеанс и пользователя приложения. –

+0

Если контейнер не выполняет CMA - Containrer Managed Authentication, конечно. – EJP

-1

Простой обзор является:

  1. Когда пользователь посещает веб-сайт в первый раз, контейнер сервлетов создаст HttpSession объект и сохранить его на сервере.

  2. Этот объект HttpSession отмечен длинным уникальным идентификатором Id (session.getId()).

  3. Кроме того, сервер теперь устанавливает Cookie в заголовке ответа с JSessionID в качестве ключа и длинного уникального идентификатора в качестве значения.

  4. Когда пользователь делает другой запрос, браузер передает cookie в каждом последующем запросе (в заголовках запроса).

  5. Таким образом, контейнер сервлетов идентифицирует каждый сеанс для каждого пользователя.

+0

, поэтому для каждого пользователя браузер увидит cookie для SESSIONID для идентификации пользователей. – Anju

+0

JSESSIONID ... Я не уверен, что это то же самое, что и SESSIONID TBH – therealprashant

0

Для каждого запроса пользователя, уникальный идентификатор сеанса будет создан.

№ Для каждого пользователь создается отдельный идентификатор сеанса.

Если пользователей 10, создано 10 сеансов.

Точно. Вы просто противоречили себе. Каждый из этих пользователей может отправлять несколько запросов в течение одного сеанса.

Как известно веб-контейнеру, этот конкретный сеанс используется для пользователя1 и так далее.

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