【问题标题】:How to save data upon http session invalidation through jsp / servlets?如何通过 jsp / servlet 在 http 会话失效时保存数据?
【发布时间】:2009-06-23 22:21:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: jsp servlets javabeans


    【解决方案1】:

    【讨论】:

    • 完美——这正是我想要的。 =D
    【解决方案2】:

    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>
    

    【讨论】:

    • 这当然有帮助,但考虑到我的设计,这似乎是实现要求的一种相当全面的方式。我会再坚持一天,看看是否有更好的建议,否则我会给你解决方案的功劳。
    猜你喜欢
    • 2013-01-04
    • 1970-01-01
    • 2016-11-15
    • 2012-12-07
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多