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