Java监听器(详解)
文章目录
一、定义
监听器(Listener)是软件开发中一个常用的概念,指的是一种设计模式,用于检测和响应特定事件的发生。
功能:监听器用于监听web应用中某些对象信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。
理解:其实监听器就是一种 回调机制,使用接口回调的原理。
扩展:
接口回调:事先先把一个对象传递给 A ,当A执行到某个状态时,通过这个对象,来调用B中的方法。 但是注意,不是直接传递B的实例,而是传递一个接口的实例过去。
二、创建步骤
1、定义监听器接口或类:指定监听器需要实现的方法或回调函数。
2、 实现监听器接口 :实现指定的监听器接口中的方法
3、 注册监听器 :在web.xml文件中配置监听/在类上标注@WebListener 注解
三、三大类监听器
类型 | 对应的接口 |
---|---|
监听三个作用域创建和销毁 (三个作用域:request、session、application) |
作用域request — ServletRequestListener 作用域session — HttpSessionListener 作用域application — ServletContextListener |
监听三个作用域属性状态变更 | request — **ServletRequestAttributeListener **session — HttpSessionAttributeListener servletContext — ServletContextAttributeListener |
监听httpSession里面存值的状态变更 | HttpSessionBindingListener HttpSessionActivationListener |
第一类:域对象监听器
监听域对象 创建与销毁的监听器
监听器接口 | 描述 |
---|---|
ServletContextListener | 监听Servlet上下文对象(全局对象)的创建、销毁 |
HttpSessionListener | 监听会话对象的创建、销毁 |
ServletRequestListener | 监听请求对象的创建、销毁 |
Servlet上下文对象 创建和销毁的监听器
public class ApplicationListener implements ServletContextListener {
//Servlet上下文对象创建的时候被调用
@Override
public void contextInitialized(ServletContextEvent contextEvent) {
System.out.println("Servlet上下文对象被创建啦...");
//项目一旦启动,此处代码运行!
Timer timer=new Timer();
//5秒钟之后开始执行,以后每间隔2秒发送一封邮件!
timer.schedule(new TimerTask() {
@Override
public void run() {
//System.out.println("发邮件...."+new Date());
}
}, 5000, 2000);
}
//Servlet上下文对象销毁的时候被调用
@Override
public void contextDestroyed(ServletContextEvent contextEvent) {
System.out.println("Servlet上下文对象被销毁啦...");
//服务器在停止的时候,要执行某些动作,那么就可以把代码写在这个位置!!!
}
}
<!-- web.xml中配置 -->
<listener>
<listener-class>com.dream.listener.ApplicationListener</listener-class>
</listener>
会话对象 创建和销毁的监听器
@WebListener
public class SessionListener implements HttpSessionListener{
@Override
public void sessionCreated(HttpSessionEvent event) {