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