middle
Какие различные методы управления сессией в сервлетах вы знаете
HTTP — stateless протокол, и для отслеживания состояния пользователя между запросами используются различные механизмы управления сессией. Каждый из них имеет свои ограничения и область применения.
| Способ | Как работает | Ограничения |
|---|---|---|
| Cookies | Сервер отправляет уникальный ID (JSESSIONID) в cookie, клиент возвращает его с каждым запросом | Не работает, если cookies отключены |
| URL Rewriting | ID сессии добавляется к каждому URL как параметр | Утомительно поддерживать, ID виден в URL |
| Hidden Form Fields | ID сессии хранится в скрытом поле формы | Работает только с формами, не со ссылками |
| HTTP Authentication | Пользователь аутентифицируется при каждом запросе | Не масштабируется, нет logout |
| Session Management API | Servlet API (HttpSession) — комбинация cookies и URL rewriting |
Наиболее удобный и используемый способ |
Session Management API
HttpSession — основной механизм управления сессиями в Servlet API. Контейнер автоматически использует cookies (JSESSIONID), а при их недоступности — fallback на URL rewriting. HttpSession предоставляет хранилище атрибутов, управление таймаутом и инвалидацию.
Пример
HttpSession session = request.getSession(); // создать или получить
session.setAttribute("user", currentUser);
session.setMaxInactiveInterval(1800); // 30 минут
session.invalidate(); // уничтожить сессию
На собеседовании: назовите основные способы и скажите, что на практике используется
HttpSessionс cookies. Частая ошибка — забыть упомянуть, что в микросервисной архитектуре серверные сессии заменяются на JWT-токены для stateless-подхода.