проверка сеанса в сервлете и jsp - PullRequest
11 голосов
/ 04 июня 2010

В моем веб-приложении я хочу проверить, существует ли уже сессия или нет.

Я хочу проверить это в моем сервлете, а также в jsp.

есть ли способ проверить это.

Спасибо

Ответы [ 2 ]

13 голосов
/ 04 июня 2010

Вы можете проверить это с HttpServletRequest#getSession(boolean create) с create=false. Он вернет ноль, если он еще не создан.

HttpSession session = request.getSession(false);
if (session == null) {
    // Session is not created.
} else {
    // Session is already created.
}

Если вы действительно хотите создать сеанс в любом случае, если он не существует, просто возьмите его и проверьте свежесть, используя HttpSession#isNew():

HttpSession session = request.getSession();
if (session.isNew()) {
    // Session is freshly created during this request.
} else {
    // Session was already created during a previous request.
}

Так вы делали это в сервлете. В JSP вы можете проверить свежесть только с помощью JSTL и EL. Вы можете захватить сессию с помощью PageContext#getSession(), а затем просто позвонить isNew().

<c:if test="${pageContext.session.new}">
    <p>Session is freshly created during this request.</p>
</c:if>

или

<p>Session is ${pageContext.session.new ? 'freshly' : 'already'} created.</p>
2 голосов
/ 04 июня 2010

Один из способов - установить идентификатор сеанса в jsp, а затем проверить тот же идентификатор сеанса в другом jsp или сервлете, чтобы проверить, жив он или нет.

HttpSession session = req.getSession();
        session.getId();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...