使用Listener需要实现相应的Listener接口,应该触发Listener时间的时候,Tomcat会自动调用Listener的方法。
一个完整的Listener包括:Listener类、<listener>配置。
一个web.xml中可以配置多个Listener,同一个类型的Listener也可以配置多个,触发的时候服务器会顺次执行各个Listener的相应方法。
可以用一个类,实现多个监听器接口。
监听器的类型一共有8种:
- HttpSessionListener:监听Session的创建与销毁;创建:sessionCreated()、超时或者执行session.invalidate():sessionDestroyed();
- ServletContextListener:监听context的创建与销毁;服务器启动或者热部署war包时执行contextInitialized()、服务器关闭:contextDestroyed();
- ServletRequestListener:监听request的创建与销毁;用户每次请求都会执行requestInitialized(),request处理完毕自动销毁前执行requestDestroyed()。注意:如果一个HTML页面内含有多个图片,则请求一次HTML可能会触发多次request事件。
- HttpSessionAttributeListener:监听向Session对象中添加、更新、移除属性;添加:xxxAdded()、跟新:xxxReplaced()、移除:xxxRemoved();
- ServletContextAttributeListener:监听向context对象中添加、更新、移除属性;
- ServletRequestAttributeListener:监听向request对象中添加、更新、移除属性;
- HttpSessionBindingListener:当对象被放到Session里是执行valueBound方法;当对象被从Session里移除执行valueUnbound方法。对象必须实现该Listener接口;
- HttpSessionActivationListener:服务器关闭时,会将Session里的内容保存到硬盘上,这个过程叫钝化。服务器重新启动时,会将Session内容从硬盘上重新加载。钝化会执行:sessionWillPassivate方法,重新加载执行:sessionDidActivate方法。对象必须实现该接口。
前6种监听器,必须在web.xml中配置,后两种不需要,只是要求对象必须实现该接口。
监听器在web.xml中的配置:
<listener>
<listner-class>
com.fyk.listener.ListenerTest
</listener-class>
</listener>