如何通过jsp / servlets在http会话失效时保存数据?

时间:2009-06-23 22:21:33

标签: jsp servlets javabeans

要跟踪Web应用程序上的用户活动历史记录,我试图在会话失效时将一些会话数据保存到数据库。我最初的方法是将数据存储在具有会话范围的javabean上,并通过finalize方法将其数据转储到数据库中。

我认为由于finalize的不可预测的行为,这不是一个完美的解决方案,但它应该工作并最终保存数据。然而,事实证明,这种策略并不能可靠地实现预期的结果 - 即使会话被手动无效并且当前用户被切换,数据也经常不被记录。

将数据会话数据保存到数据库而不是在每次客户端操作后不断更新数据会有什么更好的方法?是否有办法在会话失效时调用特定方法?

2 个答案:

答案 0 :(得分:1)

请参阅最后的愿望标签:http://www.servletsuite.com/servlets/lastwish.htm

答案 1 :(得分:0)

HttpSessionListener可能有助于完成您的目标。

通过这种方式,您可以收到有关何时创建新会话或旧会话被销毁的通知。

E.g。

创建一个监听器类:

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>