Gymterview
junior

Что такое сессия

Сессия (Session) — это серверный механизм хранения состояния клиента между несколькими HTTP-запросами. Поскольку HTTP — stateless протокол, сессия решает проблему «запоминания» пользователя: его аутентификации, корзины покупок, настроек и других данных.

Аналогия из жизни: сессия — это номерок в гардеробе. Клиент получает номерок (session ID) при первом визите, и при каждом следующем обращении предъявляет его, чтобы получить доступ к своим вещам (данным сессии). Когда клиент уходит — номерок аннулируется.

Как работает HttpSession

  1. Клиент отправляет первый запрос
  2. Сервер создаёт объект HttpSession с уникальным ID
  3. ID отправляется клиенту через cookie JSESSIONID
  4. Клиент возвращает JSESSIONID с каждым запросом
  5. Сервер по ID находит объект HttpSession с данными клиента

Сессия имеет таймаут неактивности (по умолчанию 30 минут в Tomcat). После таймаута сессия инвалидируется контейнером, и все её атрибуты удаляются из памяти.

На собеседовании: частая ошибка — не упомянуть проблему серверных сессий в распределённых системах. При нескольких экземплярах приложения нужна либо sticky session, либо распределённое хранилище сессий (Redis), либо stateless-подход (JWT).