监听器是JavaWeb三大组件之一,用于监听web应用程序中三大域对象的创建、销毁事件以及监听这些域对象中的属性发生修改的事件

Listener

Listener监听器是JavaWeb三大组件之一,用于监听web应用程序中的ServletContext、HttpSession和 ServletRequest这三大域对象的创建、销毁事件以及监听这些域对象中的属性发生修改的事件,可以实现在线用户人数统计、加载配置文件等。1

监听器

域对象生命周期监听器

监听域对象的创建或销毁,实现ServletRequestListener 、HttpSessionListener或ServletContextListener接口,xxxInitialized和xxxDestroyed方法有default实现,按需重写,方法参数为XxxEvent,可以从中获取ServletContext、HttpSession和 ServletRequest对象2

域对象属性变化监听器

监听域对象属性的添加、修改、移除,实现ServletRequestAttributeListener、HttpSessionAttributeListener或ServletContextAttributeListener接口,attributeAdded、attributeRemoved和attributeReplaced方法有default实现,按需重写,方法参数为XxxAttributeEvent,可以从中获取ServletContext、HttpSession和 ServletRequest对象,同时还能通过getName()和getValue()方法分别获取被添加、修改、移除的属性和值2

​ Interface HttpSessionAttributeListener 监听session对象属性变化: 添加、移除、修改

Interface ServletContextAttributeListener

感知Session绑定监听器

实现HttpSessionBindingListener接口监听对象绑定、移除到Session,valueBound和valueUnbound方法有default实现,按需重写2

实现HttpSessionActivationListener接口监听对象钝化(序列化)和活化(反序列化)到Session,sessionWillPassivate和sessionDidActivate方法有default实现,按需重写。同时,该实体类还需要实现Serializable接口,并在META-INF目录下配置context.xml文件,设置失效时间和session序列化的保存路径:3

<Context>
    <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
        <Store className="org.apache.catalina.session.FileStore" directory="d:/session"/>
    </Manager>
</Context>

Listener配置

除了感知session绑定监听器,其他监听器都需要配置。