本文介绍了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();//取得属性的值 |