junior
Какие области видимости переменных существуют в JSP
В JSP существуют четыре области видимости (scope), определяющие время жизни и доступность объектов. Область задаётся атрибутом scope при создании объекта.
| Scope | Время жизни | Доступность | Использование |
|---|---|---|---|
page |
Текущая JSP-страница | Только на странице, где создан | Временные переменные |
request |
Один HTTP-запрос | Текущая страница + forward/include | Передача данных от контроллера к view |
session |
Сессия пользователя | Все страницы для данного пользователя | Корзина, профиль, предпочтения |
application |
Всё время работы приложения | Все страницы для всех пользователей | Глобальные настройки, счётчики |
Пример
<jsp:useBean id="myBean" class="ru.example.MyBean" scope="session"/>
По умолчанию используется page scope. В EL-выражениях контейнер ищет атрибут последовательно: page -> request -> session -> application. Для явного указания scope используются неявные объекты EL: ${requestScope.data}, ${sessionScope.user}.
На собеседовании: перечислите четыре scope в порядке от узкого к широкому. Частая ошибка — хранить данные, специфичные для запроса, в session scope (утечка памяти).