Страница JSP создает файл cookie JSESSIONID, где это не подходит - PullRequest
0 голосов
/ 30 января 2019

Когда я захожу на мою страницу .../index.jsp, не имея HttpSession s, index.jsp по-прежнему создает JSESSIONID -печку.Хуже того, в сервлете, отвечающем за выход пользователей, session.invalidate(), похоже, не решает проблему.

index.jsp выглядит так:

<%@page import="javax.servlet.http.Cookie"%>
<%@page contentType="text/html" pageEncoding="utf-8"%>
<%@page session="true"%>

<%!
    void removeJSessionIdCookie(HttpServletResponse response) {
        Cookie cookie = new Cookie("JESSIONID", "");
        cookie.setValue(null);
        cookie.setMaxAge(0);
        cookie.setPath("/");
        response.addCookie(cookie);
    }
%>


<%
    if (session != null) {
        out.print("Session not null.");
        if (session.getAttribute(Config.CURRENT_USER_ATTRIBUTE) != null) {
            out.print("have user"); 
            request.getRequestDispatcher("app.jsp").forward(request, response);
            return;
        } else {
            out.println("no user here");
            session.invalidate();
            removeJSessionIdCookie(response);
        }
    }
%>
<html>...</html>

1 Ответ

0 голосов
/ 30 января 2019

Если у вас есть session="true" в вашей директиве <%@page%>, то код инфраструктуры JSP всегда создает новый сеанс, если вызывающий клиент не приносит cookie сеанса, т.е. еще не имеет сеанса.

Вынеобходимо указать session="false" в директиве страницы;это заставляет Framework перестать создавать сессии для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...