HttpSessionAttributeListener和HttpSessionBindingListener

时间:2012-07-15 07:11:58

标签: servlets servlet-filters servlet-listeners

当我阅读文档时,两者似乎都是一样的。那么这两者有什么区别?请解释两者之间的区别,例如在哪种情况下使用。

此致

2 个答案:

答案 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会侦听添加,删除或替换的任何属性。