Servlets HttpSessionAttributeListener和HttpSessionBindingListener

Servlets HttpSessionAttributeListener和HttpSessionBindingListener,servlets,servlet-filters,servlet-listeners,Servlets,Servlet Filters,Servlet Listeners,当我看医生的时候,两者似乎是一样的。那么这两者有什么区别呢?请用一个例子解释两者之间的区别,比如在哪种情况下使用 关于,第一个是会话的通用侦听器。每当在会话中添加或删除任何类型的属性时,都会调用它。当您希望获得任何会话属性添加/删除的通知时,可以使用此选项 第二个是回调接口,可以由特定类实现。在将此对象绑定到会话或从会话中解除绑定时,将对实现此接口的对象调用回调方法。当您希望对象被告知其自身在会话中的添加/删除时,可以使用该选项 HttpSessionBindingListener: 如果对象

当我看医生的时候,两者似乎是一样的。那么这两者有什么区别呢?请用一个例子解释两者之间的区别,比如在哪种情况下使用


关于,第一个是会话的通用侦听器。每当在会话中添加或删除任何类型的属性时,都会调用它。当您希望获得任何会话属性添加/删除的通知时,可以使用此选项

第二个是回调接口,可以由特定类实现。在将此对象绑定到会话或从会话中解除绑定时,将对实现此接口的对象调用回调方法。当您希望对象被告知其自身在会话中的添加/删除时,可以使用该选项

HttpSessionBindingListener:
如果对象实现了HttpSessionBindingListener,则会在绑定到会话或从会话解除绑定时收到通知。比如说,

MyObject implements HttpSessionBindingListener
{
// class definition
}
如果我打电话

session.setAttribute ("Object", MyObject)
方法
valueBound
和/或
valueUnbound
(在
httpsessionbindingstener
中定义,在
MyObject
中实现)被调用 实现
HttpSessionBindingListener
仅适用于实现它的对象

HttpSessionAttributeListener
: 当任何类实现HttpSessionAttributeListener接口时,当会话的属性列表发生任何更改时,都会通知它。比如说

MyClass implements HttpSessionAttributeListener
{
// implementations of methods
}
session.setAttribute ("anything", AnyObjectNotOnlyMyClass);

表示属性列表中的更改。实现
HttpSessionAttributeListener
将侦听添加、删除或替换的任何属性。

感谢您的解释。当我从会话中删除一个属性时,未绑定的方法不会被执行。那么什么时候会执行unbound方法呢?向我们展示代码,告诉我们您希望它做什么,以及它会做什么。没有代码,我只能推测。