Listener

来源:互联网 发布:大众软件app 编辑:程序博客网 时间:2024/05/22 05:21


在Servlet容器中,可以通过监听器来监听容器事件的变化,如监听ServletContext实例生命周期的变化以及ServletContext实例中属性的变化;此外还可以监听HttpSession对象的生命周期变化情况以及HttpSession中属性的变化情况。

在使用监听器时需要实现监听器的接口,当某个事件发生时会调用相应监听器实例的相关方法,监听器接口主要有:

l  ServletContextListener

监听ServletContext生命周期的变化情况,接口的方法有:

                     i.           contextInitialized:当应用被加载到容器时激发

                   ii.           contextDestroyed:当应用从容器中卸载时激发

l  ServletContextAttributeListener

监听ServletContext中属性的变化情况,如添加、删除属性等

l  HttpSessionListner

监听HttpSession生命周期变化情况,如Session的创建和销毁等

l  HttpSessionAttributeListener

监听HttpSession中属性的变化,如添加、删除属性等

l  ServletRequestListener

l  ServletRequestAttributeListener

在JavaWeb应用中使用监听器的步骤如下:

1)     确定监听的事件(如ServletContext的生命周期),并实现相应的接口;

public classContextLoadListener implements ServletContextListener

{

publicContextLoadListener()

{  

}

public void contextInitialized(ServletContextEvent sce)

{

    System.out.println("ServletContext Initialized");

}

 

public void contextDestroyed(ServletContextEvent sce)

{

    System.out.println("ServletContext Destroyed");

}

}

2)     在web.xml中配置监听器

<listener>

    <listener-class>ContextLoadListener</listener-class>

      </listener>

注意:ServletContextListener、Filter、Servlet的作用顺序如何?

ServletContextListener:当应用被加载到容器或应用从容器中卸载时触发,可以进行一些资源的初始化、绑定和清理工作;而Filter只是请求—响应的中间层,起过滤作用。所以,当应用启动时ServletContextListener工作;当Filter拦截到匹配的请求时,Filter工作,之后激活其关联的Servlet或JSP。一组Filter作用的先后顺序与它们在web.xml文件的顺序相关,一组Servlet(没有<load-on-startup>子标签)作用的先后顺序与它们在web.xml文件的顺序相关。

0 0