Подтвердить что ты не робот

Где хранятся атрибуты Java HttpSession?

Являются ли объекты сериализованы и отправлены пользователю и обратно на каждое соединение (хранятся в файлах cookie)?

Или они хранятся в куче сервера, а файл cookie - очень маленький идентификатор?

Любая информация по этой теме была бы полезной.

Спасибо

4b9b3361

Ответ 1

Вы получили это на второй догадке.

Файл cookie содержит JSESSIONID. Этот идентификатор используется для поиска пользователя HttpSession на карте, которую поддерживает сервер. По крайней мере, это самый распространенный способ. Есть более сложные способы, которыми сервер может реализовать это, но переключение всего состояния назад вперед в файле cookie не является одним из них.

Это имеет некоторые последствия. Во-первых, если сервер опускается, вы теряете состояние сеанса. Во-вторых, если у вас есть кластер серверов, вы должны каждый раз подключать пользователя к одному и тому же серверу, иначе они потеряют свою сессию между последующими запросами. Наконец, захват сеанса становится возможностью, если кто-то найдет способ скопировать кого-то другого JSESSIONID и заменить его на него.

Ответ 2

Файл cookie содержит только идентификатор сеанса (обычно называемый JSESSIONID). Сервер сопоставляет этот идентификатор тем, какие данные хранятся в пользовательском сеансе.

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