Как использовать сеанс в EL? [Дубликат]

- name: host
   debug: msg="{{ item }}" 
   with_items:
    - "{{ groups['tests'] }}"

Этот фрагмент кода даст сообщение:

'10.112.84.122'
'10.112.84.124'

as groups['tests'] в основном возвращает список уникальных IP-адресов ['10.112.84.122','10.112.84.124'], тогда как groups['tomcat'][0] возвращает 10.112.84.124.

4
задан Tony R 3 February 2012 в 23:26
поделиться

3 ответа

Это действительно никогда null. Сеанс всегда присутствует в JSP EL, если вы не добавите

<%@page session="false" %>

в начало JSP. Затем вы можете проверить сеанс следующим образом (только EL 2.2!):

<c:if test="${pageContext.request.getSession(false) != null}">
    <p>The session has been created before.</p>
</c:if>

Я не уверен, каково конкретное функциональное требование. Если вы хотите проверить, является ли сеанс новым или уже создан, вместо этого используйте HttpSession#isNew() .

<c:if test="${not pageContext.session['new']}">
    <p>You've already visited this site before.</p>
</c:if>
<c:if test="${pageContext.session['new']}">
    <p>You've just started the session with this request!</p>
</c:if>

(обозначения скобок для new являются обязательными, поскольку new является зарезервированным литералом на языке Java)

Если вы полагаетесь на специальный атрибут сеанса , такой как занесенный в журнал - В пользователе, который был установлен как

session.setAttribute("user", user);

, вы должны скорее перехватить это:

<c:if test="${not empty user}">
    <p>You're still logged in.</p>
</c:if>
<c:if test="${empty user}">
    <p>You're not logged in!</p>
</c:if>
11
ответ дан BalusC 31 August 2018 в 18:04
поделиться

В J2EE всегда будет объект сеанса, когда пользователь посещает сайт.

Что такое сеанс? Сессия в значительной степени напоминает то, что звучит, когда пользователь делает запрос страницы на сервер, сервер создает временный сеанс для идентификации этого пользователя. Поэтому, когда тот же пользователь переходит на другую страницу на этом сайте, сервер идентифицирует этого пользователя. Таким образом, сеанс представляет собой небольшое и временное уникальное соединение между сервером и пользователем, позволяющее ему идентифицировать этого пользователя в нескольких запросах страниц или посещении этого сайта.

Итак, в основном, если вы нажимаете на страницу, у вас есть сеанс потому что вы используете JSP, который в конечном итоге преобразуется в сервлеты.

http://www.stardeveloper.com/articles/display.html?article=2001062001&page=1

1
ответ дан Kevin Bowersox 31 August 2018 в 18:04
поделиться

Кажется, работает с:

<c:if test="${fn:length(sessionScope) > 0}">

Интересно, есть ли лучший способ, поскольку для этого требуется, чтобы у меня были атрибуты сеанса (я всегда это делаю, но это не совсем чистый)?

1
ответ дан Tony R 31 August 2018 в 18:04
поделиться