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>
下一篇: java事件监听机制