我正在寻找一种方法来监视会话中存储了哪种数据。我知道有会话监听器,它有在创建或销毁会话时调用的方法,但是会话修改呢?当会话中的数据被修改时,是否有任何侦听器可以运行,例如。添加新值或修改旧值时?
问问题
233 次
2 回答
1
您需要实现 HttpSessionAttributeListener 并将其条目添加到 web.xml 中。它有 attrubuteAdded、attrubuteRemoved 和 attrubuteReplaced 等方法。
public class MyAttributeListener implements HttpSessionAttributeListener {
@Override
public void attributeAdded(HttpSessionBindingEvent event) {
String attributeName = event.getName();
Object attributeValue = event.getValue();
System.out.println("Attribute added : " + attributeName + " : " + attributeValue);
}
@Override
public void attributeRemoved(HttpSessionBindingEvent event) {
String attributeName = event.getName();
Object attributeValue = event.getValue();
System.out.println("Attribute removed : " + attributeName + " : " + attributeValue);
}
@Override
public void attributeReplaced(HttpSessionBindingEvent event) {
String attributeName = event.getName();
Object attributeValue = event.getValue();
System.out.println("Attribute replaced : " + attributeName + " : " + attributeValue);
}
}
像这样向 web.xml 添加条目
<web-app ...>
<listener>
<listener-class>com.myapp.MyAttributeListener</listener-class>
</listener>
于 2013-08-08T12:56:56.877 回答
0
看看HttpSessionAttributeListener
可以实现此侦听器接口,以获取有关此 Web 应用程序中会话属性列表更改的通知。
请注意,虽然它可以通知您新对象被绑定或移除;它不会通知对已绑定对象的属性或元素所做的更改(例如,如果您将另一个元素添加到 中ArrayList
)。但是,它会通知 `ArrayLlist 是否被替换。
public class SessionModifcationListener implements HttpSessionAttributeListener {
@Override
public void attributeAdded(HttpSessionBindingEvent se) {
}
@Override
public void attributeRemoved(HttpSessionBindingEvent se) {
}
@Override
public void attributeReplaced(HttpSessionBindingEvent se) {
}
}
于 2013-08-08T12:55:02.843 回答