黑马程序员技术交流社区

标题: 【广州校区】+【原创】Listener [打印本页]

作者: 余大麻    时间: 2018-11-15 08:36
标题: 【广州校区】+【原创】Listener
概述listener监听器Listener什么是监听器监听器有哪些监听三大域对象的创建与销毁的监听器
[XML] 纯文本查看 复制代码
<!--web.xml 注册监听器-->
<listener>
    <listener-class>com.itcast.listener.MyListener</listener-class>
</listener>


[XML] 纯文本查看 复制代码
//重写接口的方法
public void contextDestroyed(ServletContextEvent sce) {
    //就是被监听的对象---ServletContext
    ServletContext servletContext = sce.getServletContext();
    //getSource就是被监听的对象,是通用的方法
    ServletContext source = (ServletContext) sce.getSource();
}
public void contextInitialized(ServletContextEvent sce) {}


[Java] 纯文本查看 复制代码
public void contextInitialized(ServletContextEvent sce) {
    SimpleDateFormat dateFormart = new SimpleDateFormat("yyyy-MM-dd");
    SimpleDateFormat timeParser = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    StringBuilder sb = new StringBuilder();
    String currentDate = dateFormart.format(new Date());//获取当前年月日
    String startTimeStr = sb.append(currentDate).append(" 23:59:59").toString();
    Date startTime = null;
    try {
            startTime = timeParser.parse(startTimeStr);
    } catch (ParseException e) {
            e.printStackTrace();
    }
    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
            System.out.println("开始计算利息了");
            }
    }, startTime, 24*60*60*1000);
}


监听三大域对象的属性变化的(需要注册)
[Java] 纯文本查看 复制代码
@Override
public void attributeAdded(ServletContextAttributeEvent scab) {
    //放到域中的属性
    System.out.println(scab.getName());//放到域中的name
    System.out.println(scab.getValue());//放到域中的value
}

@Override
public void attributeRemoved(ServletContextAttributeEvent scab) {
    System.out.println(scab.getName());//删除的域中的name
    System.out.println(scab.getValue());//删除的域中的value
}

@Override
public void attributeReplaced(ServletContextAttributeEvent scab) {
    System.out.println(scab.getName());//获得修改前的name
    System.out.println(scab.getValue());//获得修改前的value
}


与session中的绑定的对象相关的监听器(对象感知监听器)
[XML] 纯文本查看 复制代码
<Context>
<!-- maxIdleSwap:session中的对象多长时间不使用就钝化 -->
<!-- directory:钝化后的对象的文件写到磁盘的哪个目录下  配置钝化的对象文件在                                                                                                work/catalina/localhost/钝化文件 -->
<Manager className="org.apache.catalina.session.PersistentManager"                                                                                                                                                                 maxIdleSwap="1"><!--时间1分钟-->
  <Store className="org.apache.catalina.session.FileStore" directory="itcast205" /><!--写到哪个目录里(文件夹名,在work目录下)-->
</Manager>
</Context>












欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2