SessionListener用于Tomcat中的会话修改

时间:2013-08-08 12:45:57

标签: java tomcat

我正在寻找一种方法来监控会话中存储的数据类型。 我知道有会话监听器,它具有在创建或销毁会话时调用的方法,但是会话修改呢? 是否有任何监听器在修改的会话中的数据运行时,例如。添加新值或修改旧值时?

2 个答案:

答案 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) {

    }

}