Как проверить, существует ли сессия или нет? - PullRequest
20 голосов
/ 12 мая 2010

Я создаю сеанс, используя

HttpSession session = request.getSession();

Перед созданием сеанса я хочу проверить, существует он или нет. Как бы я это сделал?

Ответы [ 5 ]

35 голосов
/ 12 мая 2010

Если вы хотите проверить это перед созданием , сделайте так:

HttpSession session = request.getSession(false);
if (session == null) {
    // Not created yet. Now do so yourself.
    session = request.getSession();
} else {
    // Already created.
}

Если вам не нужна проверка после создания , вы также можете сделать это:

HttpSession session = request.getSession();
if (session.isNew()) {
    // Freshly created.
} else {
    // Already created.
}

Это сохраняет строку и boolean. request.getSession() делает то же самое, что и request.getSession(true).

22 голосов
/ 12 мая 2010

Есть функция request.getSession(boolean create)

Параметры:
create - true, если необходимо создать новую сессию для этого запроса; false, чтобы вернуть ноль, если нет текущего сеанса

Таким образом, вы можете просто передать false, чтобы указать getSession, чтобы он возвращал ноль, если сеанс не существует.

5 голосов
/ 28 июня 2011
if(null == session.getAttribute("name")){  
  // User is not logged in.  
}else{  
  // User IS logged in.  
}  
4 голосов
/ 19 августа 2012

Я хотел бы добавить, что если вы создадите новый сеанс для каждого нового пользователя, подключающегося к вашему веб-сайту, тогда ваша производительность сильно пострадает. Используйте request.getSession (false), чтобы проверить, есть ли у пользователя сеанс. С помощью этого метода вы не создадите новый сеанс, если собираетесь визуализировать представление на основе того, аутентифицирован ли пользователь или нет.

4 голосов
/ 12 мая 2010

HttpSession session = request.getSession (true); if (session.isNew ()) { ...сделай что-нибудь } еще { ... сделать что-то еще }

.getSession(true) говорит java создать новый сеанс, если он не существует.

Вы можете, конечно, также сделать:

if(request.getSession(false) != null){
    HttpSession session = request.getSession();
}

взгляните на: http://java.sun.com/javaee/6/docs/api/javax/servlet/http/HttpServletRequest.html

веселит, Йорген

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