JavaWeb: escucha
descripción general del oyente
¿Qué es un oyente?
El oyente se usa para monitorear objetos de dominio
¿Qué es un objeto de dominio?
HttpServletContext HtttpSession HttpRequest HttpPageContext
Analogía para monitorear el estado de los compañeros de clase
¿Qué son los oyentes?
Oyente monitoreando la creación y destrucción de objetos de dominio de vida o muerte
El oyente supervisa los cambios en las propiedades de los objetos de dominio
Cuales son las caracteristicas
Sin dirección de escucha
Diferentes objetos usan diferentes oyentes
Uso de oyente
- idea crear oyente
- Servlet analógico y filtro
Caso de código:
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域销毁啦");
}
}
resultado de ejecución:
## El código anterior usa un temporizador, por cierto, temporizador Temporizador
Ver comentarios de código
Código de temporizador:
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方法
}
}
resultado de ejecución: