Если я сохраню переменную в области сеанса, будет ли она видна в области приложения? - PullRequest
2 голосов
/ 26 мая 2020

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

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

в моем LoginServlet и следующее

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

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

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

1 Ответ

0 голосов
/ 26 мая 2020

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

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

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

Поиск указанного атрибута на странице, запросе, сеансе (если допустимо), и область (и) приложения по порядку и возвращает связанное значение или ноль.

...