⭐ 监听器概述:
监听器是专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。Servlet
监听器:Servlet
规范中定义的一种特殊类,它用于监听Web应用程序中的ServletContext
,HttpSession
和HttpServletRequest
等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件。
1.监听器分类:
JavaWeb
的监听器监听的事件源为:ServletContext/HttpSession/ServletRequest
,即三个域对象:
- 监听域对象创建与销毁的监听器(生命周期监听器,3个)
ServletContextListener/HttpSessionListener/ServletRequestListener
- 监听域对象操作域属性的监听器(属性监听器,3个)
ServletContextAttributeListener/HttpSessionAttributeListener/ServletRequestAttributeListener
- 监听
HttpSession
的监听器(2个)
HttpSessionBindingListener/HttpSessionActivationListener
2.监听器方法:
监听器接口 方法&描述 (1)监听域对象创建与销毁的监听器(生命周期监听器,3个) ServletContextListener void contextlnitialized(ServletContextEvent sce)创建ServletContext对象时调用 void contextDestroyed(ServletContextEvent sce)销毁ServletContext对象时调用 HttpSessionListener void sessionCreated(HttpSessionEvent se)创建Session对像时调用 void sessionDestroyed(HttpSessionEvent se)销毁Session对象时调用 ServletRequestListener void requestInitialized(ServletRequestEvent sre)创建request时调用 void requestDestroyed(ServletRequestEvent sre)销毁request时调用 (2)监听域对象操作域属性的监听器(属性监听器,3个) ServletContextAttributeListener void attributeAdded(ServletContextAttributeEvent scae);添加属性时调用 void attributeReplaced( ServletContextAttributeEvent scae);替换属性时调用 void attributeRemoved(ServletContextAttributeEvent scae);删除属性时调用 HttpSessionAttributeListener void attributeAdded(HttpSessionBindingEvent se) ;添加属性时调用 void attributeReplaced(HttpSessionBindingEvent se);替换属性时调用 void attributeRemoved(HttpSessionBindingEvent se);删除属性时调用 ServletRequestAttributeListener void attributeAdded(ServletRequestAttributeEvent srae)添加属性时调用 void attributeReplaced(ServletRequestAttributeEvent srae)替换属性时调用 void attributeRemoved(ServletRequestAttributeEvent srae)删除属性时调用 (3)监听HttpSession的监听器(2个) HttpSessionBindingListener valueBound(HttpSessionBindEvent e);当前JavaBean感知到自己被添加到Session时调用。 valueUnbound(HttpSessionBindEvent e);当前JavaBean感知到自己被移出Session时调用 HttpSessionActivationListener sessionWillPassivate(HttpSessionEvent e);当前JavaBean感知自己随着Session一起钝化时调用 sessionDidActive(HttpSessionEvent e);当前JavaBean感知自己随着Session一起活化时调用