我正在寻找一种方法来监控会话中存储的数据类型。 我知道有会话监听器,它具有在创建或销毁会话时调用的方法,但是会话修改呢? 是否有任何监听器在修改的会话中的数据运行时,例如。添加新值或修改旧值时?
答案 0 :(得分: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>
答案 1 :(得分: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) {
}
}