标签:
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