Если я сохраню переменную в области сеанса, будет ли она видна в области приложения?

Я сделал следующее

getJspContext().setAttribute("authUser", user, PageContext.SESSION_SCOPE);` 

В моем LoginServlet и следующих

User currentUser = (User) getJspContext().getAttribute("authUser", PageContext.APPLICATION_SCOPE);

В другом сервлете. НоcurrentUser = null, Только когда я изменился APPLICATION_SCOPE к SESSION_SCOPE это начало работать.

Итак, вопрос в том, почему область приложения не видит переменную, которую я установил в области сеанса, потому что, на мой взгляд, когда я создаю переменную в области сеанса, она автоматически становится видимой в области приложения?

1 ответ

Решение

Вы ищете атрибут только в указанной области, см. Java doc:

Вернуть объект, связанный с именем в указанной области, или null, если не найден.

Чтобы найти во всех областях, используйте вместо findAttribute("authUser")

Выполняет поиск указанного атрибута на странице, в запросе, сеансе (если он действителен) и в области (ах) приложения по порядку и возвращает связанное значение или null.

Другие вопросы по тегам