Проверка сеанса в сервлетах и ​​jsp

В моем веб-приложении я neet для проверки сеанса уже существует или нет.

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

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

Спасибо

Ответ 1

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

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

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

HttpSession session = req.getSession();
        session.getId();