Под капотом будет использоваться JspContext#findAttribute()
для поиска атрибута.В связанном javadoc упоминается следующее:
Выполняет поиск именованного атрибута в странице, запросе, сеансе (если он действителен) и области (-ах) приложения в порядке и возвращает значениесвязанный или нуль.
Итак, он вернет первое ненулевое значение, найденное после поиска в порядке областей страниц, запросов, сеансов и приложений (servletcontext).
Если у вас естьатрибуты с одинаковыми именами в нескольких областях и / или вы хотите получить атрибут из определенной области, затем вы можете получить к нему доступ с помощью карт атрибутов, доступных в ${pageScope}
, ${requestScope}
, ${sessionScope}
и / или${applicationScope}
.Например,
${requestScope.track}
См. Также:
Возвращаясь к вашей реальной проблеме: если у вас есть проблемы с доступом к атрибутам области сеанса, то это может только означать, что JSP не использует тот же сеанс, что и сервлетиспользует.Вы можете отладить его, напечатав идентификатор сеанса в сервлете следующим образом:
System.out.println(session.getId());
, а в JSP -
${pageContext.session.id}
Оба должны печатать одинаково.Если нет, то это определенно не разделяет тот же сеанс.Сеанс зависит от домена, контекста и файла cookie.
Вы можете отобразить все доступные атрибуты сеанса, просто напечатав ${sessionScope}
.Он отобразит строку в формате, как описано в AbstractMap#toString()
, содержащем все атрибуты сеанса.
${sessionScope}