Если я сохраню переменную в области сеанса, будет ли она видна в области приложения?
Я сделал следующее
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.