Как проверить, является ли сеанс недействительным - PullRequest
27 голосов
/ 11 марта 2009

Как проверить, является ли сеанс недействительным или нет? В API .

нет метода.

Это так же, как isNew()? А какая разница если нет?

Ответы [ 3 ]

45 голосов
/ 11 марта 2009

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

request.isRequestedSessionIdValid()

  or

HttpSession sess = request.getSession(false);
if (sess != null) {
   // it's valid
}

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

try {
  long sd = session.getCreationTime();
} catch (IllegalStateException ise) {
  // it's invalid
}
5 голосов
/ 11 марта 2009

isNew() имеет значение true, только если этот сеанс еще не был принят клиентом (т. Е. Он был только что создан, а JSESSIONID еще не был отправлен, или если он был отправлен, клиент не отправил его обратно, поэтому сервер не знает об этом и создал еще один сеанс)

2 голосов
/ 11 марта 2009

Для всех намерений и целей, да. Однако он вызовет исключение IllegalStateException при вызове в сеансе, признанном недействительным в том же цикле запрос-ответ.

...