0

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

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

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

4

2 回答 2

1

参见例如 Last wish taglib:http ://www.servletsuite.com/servlets/lastwish.htm

于 2009-06-27T06:18:55.357 回答
0

一个HttpSessionListener可以帮助你做你想做的事情。

有了它,您可以在创建新会话或销毁旧会话时收到通知。

例如

创建一个监听器类:

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>
于 2009-06-23T23:13:18.347 回答