Как сохранить данные при аннулировании http сессии через jsp / servlets? - PullRequest
0 голосов
/ 24 июня 2009

Чтобы отслеживать историю действий пользователя в веб-приложении, я пытаюсь сохранить некоторые данные сеанса в базе данных, когда сеанс признан недействительным. Мой первоначальный подход состоял в том, чтобы сохранить данные в javabean с областью действия сеанса и заставить его выгружать свои данные в базу данных с помощью метода finalize.

Я подумал, что это не было бы идеальным решением из-за непредсказуемого поведения финализатора, но это должно сработать и в конечном итоге сохранить данные. Однако оказалось, что эта тактика не позволяет надежно достичь желаемых результатов - данные часто не регистрируются, даже если сеанс аннулируется вручную и текущий пользователь переключается.

Какой может быть лучший способ сохранить данные сеанса данных в базу данных без постоянного обновления после каждого действия клиента? Есть ли способ вызвать определенный метод при аннулировании сеанса?

Ответы [ 2 ]

1 голос
/ 27 июня 2009

См., Например, Последнее желание taglib: http://www.servletsuite.com/servlets/lastwish.htm

0 голосов
/ 24 июня 2009

HttpSessionListener может помочь сделать то, что вы ищете.

При этом вы можете получать уведомления о создании нового сеанса или уничтожении старого сеанса.

1007 * Е.Г. *

Создать класс слушателя:

public class MySessionListener implements HttpSessionListener {

  public void sessionCreated( HttpSessionEvent e ) {
    //...
  }

  public void sessionDestroyed( HttpSessionEvent e ) {
    //...
  }

}

Затем зарегистрируйте его в своем web.xml

<listener>
  <listener-class>mypackage.MySessionListener</listener-class>
</listener>
...