2010-05-12 5 views

ответ

20

Существует функция request.getSession(boolean create)

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

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

+1

... лучшее объяснение imho ... относится к документам и сохраняет фокус. –

2

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

приветствий, Йорген

+0

Вам нужно будет передать 'false' ко второй' .getSession() '. – aioobe

+0

извините ... Typo. исправленный. Благодарю. – rakke

29

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

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).

0

Определите класс, скажем SessionTimeoutIndicator, который реализует интерфейс javax.servlet.http.HttpSessionBindingListener. Затем создайте объект SessionTimeoutIndicator и добавьте его в сеанс пользователя. Когда сеанс удаляется, метод SessionTimeoutIndicator.valueUnbound() будет вызываться механизмом Servlet. Затем вы можете выполнить valueUnbound() для выполнения требуемой операции.

3
if(null == session.getAttribute("name")){ 
    // User is not logged in. 
}else{ 
    // User IS logged in. 
} 
2

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

Смежные вопросы