当我阅读文档时,两者似乎都是一样的。那么这两者有什么区别?请解释两者之间的区别,例如在哪种情况下使用。
此致
答案 0 :(得分:1)
第一个是会话的通用侦听器。只要在会话中添加或删除任何类型的属性,就会调用它。当您想要被告知任何会话属性添加/删除时使用它。
第二个是可以由特定类实现的回调接口。当此对象与会话绑定/未绑定时,将在实现此接口的对象上调用回调方法。当您希望向对象通知其自身对会话的添加/删除时,可以使用它。
答案 1 :(得分:0)
HttpSessionBindingListener:
如果对象实现HttpSessionBindingListener
,则会在会话绑定或解除绑定时通知它。例如,
MyObject implements HttpSessionBindingListener
{
// class definition
}
如果我打电话
session.setAttribute ("Object", MyObject)
方法valueBound
和/或valueUnbound
(在HttpSessionBindingListener
中定义,在MyObject
中实现)
实现HttpSessionBindingListener
仅适用于实现它的对象
HttpSessionAttributeListener
:
当任何类实现HttpSessionAttributeListener
接口时,会在会话属性列表发生任何更改时通知它。例如
MyClass implements HttpSessionAttributeListener
{
// implementations of methods
}
session.setAttribute ("anything", AnyObjectNotOnlyMyClass);
表示属性列表中的更改。实现HttpSessionAttributeListener
会侦听添加,删除或替换的任何属性。