JavaWeb课程系列
3.Listener分类
以上的八个监听器,我们发现很类似,除过两个特殊的外,都是属性监听器,和生命周期监听器。所以我们将以上的监听器划分为两种类型。
1)生命周期监听器:
ServletContextListener、HttpSessionListener、ServletRequestListener
2)属性监听器:
ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener
3)特殊的两个监听器:
HttpSessionActivationListener、HttpSessionBindingListener
4.Listener使用
1)生命周期、属性监听器的使用
//创建相应的实现类: public class MyFirstListener implements ServletRequestListener { public MyFirstListener() { } public void requestDestroyed(ServletRequestEvent sre) { System.out.println("requestDestroyed"); } public void requestInitialized(ServletRequestEvent sre) { System.out.println("requestInitialized"); } } //配置web.xml <listener> <listener-class>com.atguigu.MyFirstListener</listener-class> </listener>
|
2)两个特殊监听器的使用
创建相应的监听器实现类。
public class Student implements HttpSessionBindingListener{ @Override public void valueBound(HttpSessionBindingEvent event) { System.out.println("valueBound"); } @Override public void valueUnbound(HttpSessionBindingEvent event) { System.out.println("valueUnbound"); } } |
5.生命周期监听器
ServletContextListener、HttpSessionListener、ServletRequestListener
1)ServletContextListener:
web容器启动的时候ServletContext就会被创建,当web服务器关闭的时候这个对象被销毁
2)HttpSessionListener:
在第一次使用session的时候,session会被创建,服务器关闭,session并不会被销毁,而是钝化了。只有显式的调用invalid方法,或者是session过期,session才会被销毁。
3)ServletRequestListener:
每个新的请求都会创建request对象,触发初始化方法。当一次请求完成时,request对象被销毁,触发销毁方法。
6.属性监听器
ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener
都是域属性变化时触发的。
7.特殊的两个监听器
HttpSessionActivationListener、HttpSessionBindingListener
这两个监听器需要具体的实现类,只要实现这两个监听器即可,不用在web.xml中配置。
HttpSessionActivationListener监听对象随session钝化活化的过程,这个对象要能被钝化必须实现serializable接口。否则不能钝化和活化