![597b1c99f89697a18cd3a2454eda84d7.png](https://i-blog.csdnimg.cn/blog_migrate/873562abbb25a4aadda8776188291351.jpeg)
【49】
监听器基本概念
JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext,HttpSession和ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件。
Servlet监听器的分类
在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为ServletContext,HttpSession和ServletRequest这三个域对象。
Servlet规范针对这三个对象上的操作,又把多种类型的监听器划分为三种类型:
- 监听三个域对象创建和销毁的事件监听器。
- 监听域对象中的属性的增加和删除的事件监听器。
- 监听绑定到HttpSession域中的某个对象的状态的事件监听器。
使用方法
1、创建一个普通java类实现指定的接口
1.1监听request的创建和销毁:ServletRequestListener(接口)
- requestInitialized(ServletRequestEvent sre)
- requestDestroyed(ServletRequestEvent sre)
形参:ServletRequestEvent可以获取当前监听到的request对象,对request对象的中的资源进行操作。
1.2监听request作用域数据的变更:ServletRequestAttributeListener(接口)
- attributeAdded(ServletRequestAttributeEvent srae)
- attributeRemoved(ServletRequestAttributeEvent srae)
- attributeReplaced(ServletRequestAttributeEvent srae)
形参:ServletRequestAttributeEvent可以获取当前被监听到的request中的数据。
getName()返回监听到的数据的键和getValue()返回监听的到的数据的值。
1.3监听session的创建和销毁:HttpSessionListener(接口)
- sessionCreated(HttpSessionEvent se)
- sessionDestroyed(HttpSessionEvent se)
形参: 获取当前被监听到的session对象
1.4 监听session的作用域数据的变更:
- attributeAdded(HttpSessionBindingEvent event)
- attributeRemoved(HttpSessionBindingEvent event)
- attributeReplaced(HttpSessionBindingEvent event)
形参:获取当前监听到的session中的数据 getName()返回数据的键名,getValue()返回数据的值
1.5监听application对象的创建和销毁:ServletContextListener(接口)
- contextInitialized(ServletContextEvent sce)
- contextDestroyed(ServletContextEvent sce)
形参:获取application对象
1.6监听application对象的数据的变更:ServletContextAttributeListener
- attributeAdded(ServletContextAttributeEvent event)
- attributeRemoved(ServletContextAttributeEvent event)
- attributeReplaced(ServletContextAttributeEvent event)
形参:获取当前被监听的数据 getName()返回数据的键名,getValue()返回数据的值
2、在项目中的web.xml中配置监听器,让监听器生效
<listener>
案例:网站在线人数统计
public
面试题:请描述一下java事件监听机制。
1、java的事件监听机制涉及到三个组件:事件源、事件监听器、事件对象。
2、当事件源上发生操作时,它将会调用事件监听器的一个方法,并在调用这个方法时,会传递事件对象过去。
3、事件监听器由开发人员编写,开发人员在事件监听器中,通过事件对象可以拿到事件源,从而对事件源上的操作进行处理。