JavaWeb---监听器Listener

JavaWeb—监听器Listener

listener概述

  • 什么是监听器?

    Listener是用来监听域对象

  • 什么是域对象?
    HttpServletContext HtttpSession HttpRequest HttpPageContext

  • 类比班主任监听同学的状态

  • 监听器有哪些?

    • Listener监听域对象创建和销毁 生死

    • Listener监听域对象属性的变化 变化

  • 有什么特点

    • 没有监听地址

    • 不同的对象使用不同的监听器
      img

listener的使用

  • idea创建监听器
  • 类比 Servlet与Filter

代码案例:

Demo1Listener

package com.lbl.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import java.util.Timer;
import java.util.TimerTask;

@WebListener()
public class Demo1Listener implements ServletContextListener{
    
    

    public Demo1Listener() {
    
    
    }

    //这个方法用来监听ServletContext域的创建
     /*
        这个域:服务器启动时创建
     */
    public void contextInitialized(ServletContextEvent sce) {
    
    
        //设置一个定时器
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
    
    
            @Override
            public void run() {
    
    
                try {
    
    
                    System.out.println("--定时发送邮件");
                } catch (Exception e) {
    
    
                    e.printStackTrace();
                }
            }
        }, 5000, 2000);
        System.out.println("ServletContext域的创建啦");
    }

    //这个方法用来监听ServletContext域的销毁
    /*
       这个域:服务器关闭时销毁
     */
    public void contextDestroyed(ServletContextEvent sce) {
    
    
        System.out.println("ServletContext域销毁啦");
    }
}

运行效果:
在这里插入图片描述

在这里插入图片描述

##上面代码用到了计时器,顺便讲一下计时器Timer

看代码注释

计时器代码:

package com.lbl.listener;


import java.util.Timer;
import java.util.TimerTask;

public class TestDemo {
    
    
    public static void main(String[] args) {
    
    
        //要使用计时器,首先new一个计时器
        Timer timer = new Timer();

        //然后调用计时器的schedule方法,可以理解为设置计划
        //该方法内有三个参数
        //第一个参数是要传一个TimerTeak类,我下面直接new了一个匿名内部内,因为该类实现了runable接口,所以我要重写run方法
        //第二个参数是延迟执行时间,如果不延时执行,则直接设置为0
        //第三个参数为时间间隔,单位是毫秒
        timer.schedule(new TimerTask() {
    
    
            @Override
            public void run() {
    
    
                System.out.println("时间到了");
            }
        }, 5000,2000);  //5秒之后执行run方法,每隔2秒再执行 run方法
    }
}

运行效果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37924905/article/details/108622728