Любой способ предвидеть время ожидания сессии? - PullRequest
2 голосов
/ 17 июня 2010

Есть ли способ «перехватить» событие тайм-аута сеанса, чтобы извлечь данные из HttpSession до того, как он будет признан недействительным?

Мы реализуем интерфейс фильтра, и в методе doFilter пользователь, которого мы сохранили в объекте сеанса при входе в систему, равен нулю, когда время сеанса истекло.

Заранее спасибо.

Ответы [ 3 ]

11 голосов
/ 17 июня 2010

Вы должны иметь возможность зарегистрировать HttpSessionListener для своего веб-приложения, которое позволит вам получать уведомления при разрушении сеанса.

У него есть два метода обратного вызова:

  • public void sessionCreated(HttpSessionEvent se)
  • public void sessionDestroyed(HttpSessionEvent se)

Класс HttpSessionEvent имеет метод getSession, который должен позволить вам получить затронутый сеанс.

Класс слушателя зарегистрирован в web.xml

<listener>
  <description>My Session Listener</description>
  <listener-class>
    my.package.MySessionListener
  </listener-class>
</listener>
0 голосов
/ 25 января 2013

Вы всегда можете объявить фрагмент JSP, который проверит, активен ли ваш сеанс или действителен - в основном, проверьте, существует ли сеанс var (! = Null), а если нет - перенаправьте пользователя надругая страница -

<% 
// check for session object
HttpSession validuser = request.getSession(); 
// check to see if session var exists
if (validuser.getValue("auth_user") == null) { 
response.sendRedirect("admin3.jsp?access+denied");
}
// if the session var is null then redirect the user

Надеюсь, это поможет Марк

Источник: http://www.coderanch.com/t/279538/JSP/java/jsp-session-timeout

0 голосов
/ 18 июня 2010

Пусть пользовательский объект реализует HttpSessionBindingListener, тогда он может видеть сам, когда он добавляется или удаляется из сеанса.

...