Почему сессия не является нулевой - PullRequest
3 голосов
/ 04 октября 2011

Я использую следующий код для доставки пользователя на страницу приветствия, если он уже вошел в систему, или на страницу входа, если это не так.

        HttpSession session = request.getSession(false);

    if(session == null){
        request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response);
    }else{
        //User already logged in. Send to home.
        response.sendRedirect("Welcome");
    }

В первый раз все работает нормально, но если я перезагружаю страницу даже один раз, она отправляет пользователя на страницу приветствия и неизбежно возвращает мне ошибку 500, потому что на этой странице есть элементы, которые нельзя загрузить, поскольку журнал пользователя в коде не был выполнен.

Сеанс запускается автоматически, даже если request.getSession (true) не объявляется при перезагрузке страницы? Есть ли способ предотвратить это?

Ответы [ 2 ]

2 голосов
/ 04 октября 2011

Возможно, сеанс создается при пересылке на login.jsp. Это необходимо, потому что пользователь должен быть назначен на запрос без аутентификации и , а затем аутентифицировать его. Если вы хотите перенаправить в зависимости от того, вошел ли пользователь в систему или нет, используйте SessionContext s getCallerPrincipal.

Для получения дополнительной информации, проверьте эту (несколько устаревшую, но все еще актуальную) статью

0 голосов
/ 04 октября 2011

Метод request.getSession(false) возвращает ноль , если нет текущего сеанса.Я предлагаю сравнить ключ тоже.

Пожалуйста, посмотрите на эти темы.

  1. Всегда ли JSP создают сеанс?
  2. Как работают сервлеты?Создание экземпляров, переменные сеанса и многопоточность
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...