欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ServletContextListener监听器应用场景

程序员文章站 2022-05-01 12:25:51
...

在JavaWeb被监听的事件源为:ServletContext、HttpSession、ServletRequest,即三大域对象。

  • 监听域对象“创建”与“销毁”的监听器
  • 监听域对象“操作域属性”的监听器
  • 监听HttpSession的监听器

ServletContextListener主要应用场景:

1.任务调度

2.Spring中去初始化

范例(每隔一秒去打印。。。持续监听):

(1)创建线程去实现一定的业务逻辑并创建监听并配置(业务逻辑我这里用一个打印代替了,并设置休眠时间为1s)

 

import java.util.Date;

public class ScheduleServer implements Runnable {
    @Override
    public void run() {
        while (true) {
            System.out.println(new Date() +"扫描任务调度。。。。。。");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/*
* servletContext监听器
*
* 应用场景:任务调度和spring中去初始化
* */
public class MyservletContextListener implements ServletContextListener {

    Thread thread = null;

    /*
    * 被创建时调用
    * servletContextEvent事件源,可以获得到ServletContext对象
    * */
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("被创建");
        // 启动定时任务
        thread = new Thread(new ScheduleServer());
        thread.start();
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("被销毁");
        thread.stop();
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
<!--    配置监听器-->
    <listener>
        <listener-class>MyservletContextListener</listener-class>
    </listener>
</web-app>