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接口。否则不能钝化和活化