如何通过jsp/servlet在http会话失效时保存数据?
为了跟踪web应用程序上的用户活动历史,我试图在会话无效时将一些会话数据保存到数据库中。我最初的方法是将数据存储在具有会话作用域的javabean上,并让它通过finalize方法将数据转储到数据库中 我认为这不是一个完美的解决方案,因为finalize的行为是不可预测的,但它应该可以工作并最终保存数据。然而,事实证明,这种策略并不能可靠地达到预期的结果——即使在手动使会话无效并切换当前用户时,数据也通常不会被记录 有什么更好的方法可以将数据会话数据保存到数据库中,而不必在每次客户端操作后不断更新它?是否有一种方法可以在会话失效时调用特定的方法?An可能有助于完成您希望执行的操作 使用此功能,您可以在创建新会话或销毁旧会话时收到通知 例如 创建侦听器类:如何通过jsp/servlet在http会话失效时保存数据?,jsp,servlets,javabeans,Jsp,Servlets,Javabeans,为了跟踪web应用程序上的用户活动历史,我试图在会话无效时将一些会话数据保存到数据库中。我最初的方法是将数据存储在具有会话作用域的javabean上,并让它通过finalize方法将数据转储到数据库中 我认为这不是一个完美的解决方案,因为finalize的行为是不可预测的,但它应该可以工作并最终保存数据。然而,事实证明,这种策略并不能可靠地达到预期的结果——即使在手动使会话无效并切换当前用户时,数据也通常不会被记录 有什么更好的方法可以将数据会话数据保存到数据库中,而不必在每次客户端操作后不断更
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