zoukankan      html  css  js  c++  java
  • Servlet监听器

    Servlet监听器

    Servlet监听器主要目的是给web应用增加事件处理机制,以便更好地监视和控制web应用的状态变化

    监听器事件类型

    1. 全局事件 / ServletContext (在服务器启动后创建,在服务器关闭或者重启时销毁)

    2. 生命周期

      1. 属性变化

    3. 会话事件 / HttpSession

      1. 生命周期

      2. 属性变化

      3. 回话迁移

      4. 对象绑定事件

    4. 请求事件 / ServletRequest

      1. 生命周期

      2. 属性变化

    监听器的接口中方法 / 全局事件

    //创建一个监听器
    //实现接口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

    其他

    1. IDEA重写方法的快捷键 / ctrl + i

    2. LocalDateTime.now() -> 获得当前时间

  • 相关阅读:
    Solace 简介
    Google BERT摘要
    Difference between java.lang.RuntimeException and java.lang.Exception
    第三方deepvoice3_pytorch安装使用
    通过setup.py安装项目dependencies
    Heroku 教程
    使用谷歌CoLaboratory训练神经网络
    最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件
    Jmeter参数化之数据库读取数据
    python之lambda、filter、map、reduce的用法说明(基于python2)
  • 原文地址:https://www.cnblogs.com/-Archenemy-/p/12764899.html
Copyright © 2011-2022 走看看