Ответ
В классическом stateful веб-приложении контекст пользователя (его данные между запросами) хранится в сессии (HttpSession). Это область видимости session scope.
Ключевые особенности session scope:
- Данные хранятся на сервере и привязываются к уникальному идентификатору сессии (обычно в cookie
JSESSIONID). - Доступны в рамках всех запросов одного пользователя в течение времени жизни сессии.
- Сессия создается при первом обращении и может быть инвалидирована по таймауту или явно.
Пример на Java Servlet:
// Сохранение данных в сессию
HttpSession session = request.getSession(); // Получить или создать сессию
session.setAttribute("currentUser", userObject);
// Получение данных из сессии в другом запросе
User user = (User) session.getAttribute("currentUser");
| Другие области видимости в веб-приложении: | Scope | Время жизни | Типичное использование |
|---|---|---|---|
| Request | Один HTTP-запрос/ответ | Параметры запроса, атрибуты для передачи в JSP. | |
| Session | Сессия пользователя | Корзина покупок, данные для аутентификации. | |
| Application | Время работы приложения | Глобальный кэш, общие конфигурации (ServletContext). |
Важно: В современных stateless архитектурах (REST API с JWT) контекст пользователя передается в каждом запросе через токен в заголовке Authorization, и сервер не хранит состояние сессии.