Как проверить, существует ли сеанс или нет?
Я создаю сеанс, используя
HttpSession session = request.getSession();
Перед созданием сеанса я хочу проверить, существует ли он или нет. Как мне это сделать?
Ответы
Ответ 1
Если вы хотите проверить это перед созданием, сделайте следующее:
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)
.
Ответ 2
Существует функция request.getSession(boolean create)
Параметры:
create
- true для создания нового сеанса для этого запроса, если это необходимо; false для возврата null, если нет текущей сессии
Таким образом, вы можете просто передать false
, чтобы сообщить getSession
вернуть значение null, если сеанс не существует.
Ответ 3
HttpSession session = request.getSession(true); if (session.isNew()) { ...сделай что-нибудь } else { ... сделать что-то еще }
.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
веселит,
Йорген
Ответ 4
if(null == session.getAttribute("name")){
// User is not logged in.
}else{
// User IS logged in.
}
Ответ 5
Я хотел бы добавить, что если вы создадите новый сеанс для каждого нового пользователя, подключающегося к вашему сайту, то ваша производительность сильно пострадает. Используйте request.getSession(false), чтобы проверить, имеет ли пользователь сеанс. С помощью этого метода вы не создаете новый сеанс, если вы собираетесь визуализировать представление на основе аутентификации пользователя или нет.
Ответ 6
Определите класс, например SessionTimeoutIndicator, который реализует интерфейс javax.servlet.http.HttpSessionBindingListener
. Затем создайте объект SessionTimeoutIndicator и добавьте его в сеанс пользователя. Когда сеанс удаляется, метод SessionTimeoutIndicator.valueUnbound()
вызывается механизмом Servlet. Затем вы можете выполнить valueUnbound()
для выполнения требуемой операции.