Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过jsp/servlet在http会话失效时保存数据?_Jsp_Servlets_Javabeans - Fatal编程技术网

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

如何通过jsp/servlet在http会话失效时保存数据?,jsp,servlets,javabeans,Jsp,Servlets,Javabeans,为了跟踪web应用程序上的用户活动历史,我试图在会话无效时将一些会话数据保存到数据库中。我最初的方法是将数据存储在具有会话作用域的javabean上,并让它通过finalize方法将数据转储到数据库中 我认为这不是一个完美的解决方案,因为finalize的行为是不可预测的,但它应该可以工作并最终保存数据。然而,事实证明,这种策略并不能可靠地达到预期的结果——即使在手动使会话无效并切换当前用户时,数据也通常不会被记录 有什么更好的方法可以将数据会话数据保存到数据库中,而不必在每次客户端操作后不断更

为了跟踪web应用程序上的用户活动历史,我试图在会话无效时将一些会话数据保存到数据库中。我最初的方法是将数据存储在具有会话作用域的javabean上,并让它通过finalize方法将数据转储到数据库中

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

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

An可能有助于完成您希望执行的操作

使用此功能,您可以在创建新会话或销毁旧会话时收到通知

例如

创建侦听器类:

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>

mypackage.MySessionListener

例如,请参见Last wish taglib:

这当然有帮助,但考虑到我的设计,这似乎是一种实现需求的较为迂回的方式。我会再坚持一天,看看是否有更好的建议出现,否则我会给你的解决方案的信用。完美-这正是我想要的=D