码迷,mamicode.com
首页 > 其他好文 > 详细

监听器

时间:2015-08-09 00:16:34      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

1.什么是监听器

  Servlet规范中定义的一种特殊的组件,用来监听Servlet容器产生的事件并进行相应的处理

  容器产生的两大类事件

    生命周期相关事件

    绑定数据相关事件

2.声明周期相关事件

  容器创建或者销毁request、session,ServletContext时产生的事件

  ServletRequestListener

    requestDestroyed(ServletRequestEvent sre)

    requestInitialized(ServletRequestEvent sre)

  HttpSessionListener

    sessionCreated(HttpSessionEvent se)

    sessionDestroyed(HttpSessionEvent se) 

  ServletContextListener

    contextDestroyed(ServletContextEvent sce)

    contextInitialized(ServletContextEvent sce)

3.绑定数据相关的事件

  调用了request,session,ServletContext的setAttribute、removeAttribute方法时产生的事件

  ServletRequestAttributeListener

    attributeAdded(ServletRequestAttributeEvent srae)

    attributeRemoved(ServletRequestAttributeEvent srae)

    attributeReplaced(ServletRequestAttributeEvent srae)

  HttpSessionAttributeListener

    参考API Document

  ServletContextAttributeListener

    参考API Document

4.如何编写监听器

  1.编写一个Java类,依据监听的事件类型选择实现相应的监听接口。如,要监听Session对象的创建和销毁,要实现HttpSessionListener

  2.在监听接口方法中,实现相应的监听处理事件逻辑

  3.在web.xml文件中注册该监听器

5.编写Java类

  public class ConListener implements HttpSessionListener{//实现方法}

6.实现处理逻辑

  public class CouListener  implements HttpSessionListener{

    public void sessionCreated(HttpSessionEvent se){

      //... ...

      HttpSession session=se.getSession();

      ServletContext ctx=session.getServletContext();

      //... ...

    }

  }

7.注册监听器

  在web.xml文件中,增加以下节点:

  <!--监听器-->  

  <listener>
    <listener-class>web.CouListener</listener-class>
  </listener>

  <!--实现相同的Listener接口的多个监听器,在执行时是按web.xml注册出现的顺序来决定-->

8.应用场景

  由于ServletRequest、HttpSession、ServletContext对象都是容器创建的,通过对这些对象注册监听器,就可以得知何时创建了。

  比如:

    1.在contextDestroyed方法中对应用级别的资源进行释放。

    2.统计在线人数可以通过HttpSessionListener监听器的sessionCreated方法监听session的创建动作。

监听器

标签:

原文地址:http://www.cnblogs.com/Crow00/p/4714176.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!