Servlet监听器主要目的是给web应用增加事件处理机制,以便更好地监视和控制web应用的状态变化
监听器事件类型
-
全局事件 / ServletContext (在服务器启动后创建,在服务器关闭或者重启时销毁)
-
-
属性变化
-
-
会话事件 / HttpSession
-
生命周期
-
属性变化
-
回话迁移
-
对象绑定事件
-
-
请求事件 / ServletRequest
-
生命周期
-
属性变化
-
监听器的接口中方法 / 全局事件
//创建一个监听器 //实现接口ServletContextListener 监听生命周期 //方法有contextInitialized,contextDestroyed //实现接口ServletContextAttributeListener 监听属性变化 //方法有attributeAdded,attributeRemoved,attributeReplaced public class MyServletContextListener implements ServletContextListener, ServletContextAttributeListener { //全局对象创建时调用 @Override public void contextInitialized(ServletContextEvent event) {} //全局对象销毁时调用 @Override public void contextDestroyed(ServletContextEvent event) {} //监视 添加属性的时候 @Override public void attributeAdded(ServletContextAttributeEvent event) { //获得添加属性的键名 String key = event.getName(); //获得添加属性的值 String value = (String) event.getValue(); //以上方法在监听属性方法中都适用 } //监视 属性被删除的时候 @Override public void attributeRemoved(ServletContextAttributeEvent event) {} //监视属性被修改的事件 @Override public void attributeReplaced(ServletContextAttributeEvent event) { //获得新的值 String new_value = (String) event.getServletContext().getAttribute(key); //event.getValue()该方法无法获得修改后的新值 //获得新值需要通过event获取全局对象 } }
监听器的注册 / web.xml中
<!--注册监听器--> <listener> <listener-class>监听器的全路径</listener-class> </listener> <!--或者在实现接口的类上添加注释 @WebListene-->
定时任务
//定时任务 //jdk 自带Timer java.util包 //quarz 框架 //Timer的应用 //创建定时任务类 public class MyJob extends TimerTask { //定时任务主要需要继承TimerTask类 @Override public void run() { //然后重写父类的run方法 //该方法中书写需要执行的代码 } } //1.创建一个定时器 Timer timer = new Timer(); //2.创建一个定时任务 MyJob myJob = new MyJob(); //3.使用定时器去调用定时任务 //延时执行 -> 一次 timer.schedule(myJob,5); // schedule : 调度的意思 //参数 -> 任务 延时执行时间.s //延时执行 -> 循环 timer.schedule(job,10*1000,3*1000); //参数 -> 任务 延时执行时间.ms 多久执行一次.ms
其他
-
IDEA重写方法的快捷键 / ctrl + i
-