本文介绍了Listener以下几个方面的内容:
  · Listener的定义与作用
  · Listener的分类与使用
  ServletContext监听
  Session监听
  Request监听
  · Listener的应用实例
  利用HttpSessionListener统计多在线用户人数
  Spring使用ContextLoaderListener加载ApplicationContext配置信息
  Spring使用Log4jConfigListener配置Log4j日志
  Spring使用IntrospectorCleanupListener清理缓存
  之前写了一篇关于Filter的文章 ,现在再来一篇Listener的,Filter和Listener在项目中是经常用到的,巧妙的使用可以达到事半功倍的效果。故把两者的用法总结一下。
  Listener的定义与作用
  监听器Listener是在application,session,request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件。
  Listener是Servlet的监听器,可以监听客户端的请求,服务端的操作等。
  Listener的分类与使用
  主要有以下三类:
ServletContext监听
ServletContextListener:用于对Servlet整个上下文进行监听(创建、销毁)。
//上下文初始化
publicvoidcontextInitialized(ServletContextEvent sce);
//上下文销毁
publicvoidcontextDestroyed(ServletContextEvent sce);
//ServletContextEvent事件:取得一个ServletContext(application)对象
publicServletContextgetServletContext();
ServletContextAttributeListener:对Servlet上下文属性的监听(增删改属性)。
//增加属性
publicvoidattributeAdded(ServletContextAttributeEvent scab);
//属性删除
publicvoidattributeRemoved(ServletContextAttributeEvent scab);
//属性替换(第二次设置同一属性)
publicvoidattributeRepalced(ServletContextAttributeEvent scab);
//ServletContextAttributeEvent事件:能取得设置属性的名称与内容
//得到属性名称
publicStringgetName();
//取得属性的值
publicObjectgetValue();
Session监听
Session属于http协议下的内容,接口位于javax.servlet.http.*包下。
HttpSessionListener接口:对Session的整体状态的监听。
//session创建
publicvoidsessionCreated(HttpSessionEvent se);
//session销毁
publicvoidsessionDestroyed(HttpSessionEvent se);
//HttpSessionEvent事件:
//取得当前操作的session
publicHttpSessiongetSession();
HttpSessionAttributeListener接口:对session的属性监听。
publicvoidattributeAdded(HttpSessionBindingEvent se);//增加属性
publicvoidattributeRemoved(HttpSessionBindingEvent se);//删除属性
publicvoidattributeReplaced(HttpSessionBindingEvent se);//替换属性
//HttpSessionBindingEvent事件:
publicStringgetName();//取得属性的名称
publicObjectgetValue();//取得属性的值
publicHttpSessiongetSession();//取得当前的session
  session的销毁有两种情况:
  1.session超时,web.xml配置:
  <session-config>
  <session-timeout>120</session-timeout><!--session120分钟后超时销毁-->
  </session-config>
  2.手工使session失效
  //使session失效方法。session.invalidate();
  publicvoidinvalidate();
  Request监听
ServletRequestListener:用于对Request请求进行监听(创建、销毁)。
publicvoidrequestInitialized(ServletRequestEvent sre);//request初始化
publicvoidrequestDestroyed(ServletRequestEvent sre);//request销毁
//ServletRequestEvent事件:
publicServletRequestgetServletRequest();//取得一个ServletRequest对象
publicServletContextgetServletContext();//取得一个ServletContext(application)对象
ServletRequestAttributeListener:对Request属性的监听(增删改属性)。
publicvoidattributeAdded(ServletRequestAttributeEvent srae);//增加属性
publicvoidattributeRemoved(ServletRequestAttributeEvent srae);//属性删除
publicvoidattributeReplaced(ServletRequestAttributeEvent srae);//属性替换(第二次设置同一属性)
//ServletRequestAttributeEvent事件:能取得设置属性的名称与内容
publicStringgetName();//得到属性名称
publicObjectgetValue();//取得属性的值