Как проверить сеанс в JSP EL? - PullRequest
       24

Как проверить сеанс в JSP EL?

4 голосов
/ 04 февраля 2012

Как проверить, существует ли сеанс для запроса в EL? Я пытаюсь что-то вроде:

<c:if test="${pageContext.request.session != null}"> ... </c:if>

но кажется, что оно никогда не равно нулю.

Ответы [ 3 ]

13 голосов
/ 04 февраля 2012

Это действительно никогда 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>
1 голос
/ 04 февраля 2012

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

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

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

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

1 голос
/ 04 февраля 2012

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

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

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

...