监听器的使用例子 ServletContextListener
之前一直对监听知识有个概念,最近业务需要用到了才真正有点了解了监听器的好处。
web项目的监听事件与监听器:
ServletAPI中的6个事件类:
ServletContextEvent:该类表示上下文(ServletContext)事件,当应用上下文对象发生变化,如创建或销毁上下文对象时,将触发上下文事件
ServletContextAttributeEvent:该类表示上下文(ServletContext)属性事件,当应用上下文属性改变,例如增加、删除、覆盖上下文中的属性时,将触发上下文属性事件
ServletRequestEvent:该类表示请求(ServletRequest)事件,当请求对象发生改变,例如创建或者销毁请求对象,将触发此事件
ServletRequestAttributeEvent:该类表示请求(ServletRequest)属性事件,当请求中的属性发生改变,触发该事件
HttpSessionEvent:该类表示会话(HttpSession)事件,当会话对象发生改变,例如创建或者销毁会话对象,活化或者钝化会话对象,将触发此事件
HttpSessionBindingEvent:该类表示会话(HttpSession)绑定事件,当会话中的属性发生变化,例如增加删除覆盖会话中 Servlet API针对每种事件类型,都定义了至少一种借口来处理该事件,这些接口都以Listener结尾,成为监听器接口,共有如下8种接口。
ServletConetxListener:上下文监听器,监听ServletContextEvent事件
ServletContextaAttributeListener:上下文属性监听器,用来监听ServletRequestAttributeEvent事件
ServletRequestListener:请求监听器,监听ServletRequestEvent事件。
ServletRequestAttributeListener:请求属性监听器,用来监听ServletRequestAttributeEvent事件
HttpSessionListener:会话监听器,监听HttpSessionEvent事件
HttpSessionActivationListener:会话活化监听器,监听HttpSessionEvent事件
HttpSessionAttributeListener:会话属性监听器,监听HttpSessionBindingEvent事件
HttpSessionBindingListener:会话绑定监听器,监听HttpSessionBindingEvent事件。
我这里是要求定时任务,我不知道如何让他实现程序开始自动启动。刚开始使用的是java程序。然后发现java程序不会定时,百度发现使用web程序,容器启动后让容器自动调用即可。
这个时候看到了别人写法使用了监听器,豁然开朗,于是也使用ServletContextListener实现了定时任务的功能:
public class AliRepayHistoryTask {
public void task(){
Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
fetchAliRepayHistory();
}
};
timer.schedule(timerTask, new Date(2017 - 1900, 7, 14, 14, 2), 60*60*24);
}
public void fetchAliRepayHistory(){
JdbcUtil jdbcUtil = new JdbcUtil();
String sql = " select bill_seq_no , to_char(to_date(last_update_date, 'yyyyMMddHH24miss'), 'yyyy-MM-dd HH24:mi:ss') " +
" from acl.pay_order " +
" where " +
" status = 'S' " +
" and gate_id = '1003' " +
" and last_update_date >= ? " +
" and last_update_date <= ? " +
" order by last_update_date asc";
String yesterday = DateUtil.getDateString(DateUtil.addDay(new Date(), -1), "yyyyMMdd");
String yesterdayBegin = yesterday + "000000";
String yesterdayEnd = yesterday + "235959";
Object[] params = new Object[]{yesterdayBegin, yesterdayEnd};
List<Order> orders = jdbcUtil.query(sql, params, new ResultHandler<List<Order>>() {
public List<Order> handler(ResultSet rs) throws SQLException {
List<Order> list = new ArrayList<Order>();
while(rs.next()){
Order order = new Order();
order.setBillSeqNo((String)rs.getObject(1));
order.setCreateDate((String)rs.getObject(2));
list.add(order);
}
return list;
}
});
try {
FileOutputStream outputStream = new FileOutputStream(new File("C:/Users/zhen/Desktop/每日支付宝付款报表.txt"), true);
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter((outputStream)));
bufferedWriter.newLine();
bufferedWriter.write(yesterday.substring(0, 4) + "-" + yesterday.substring(4, 6) + "-" + yesterday.substring(6, 8) + ":");
bufferedWriter.newLine();
for(Order order : orders){
bufferedWriter.write("billSeqNo=" + order.getBillSeqNo() + ", createDate=" + order.getCreateDate());
bufferedWriter.newLine();
}
bufferedWriter.close();
outputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class AliRepayHistoryTaskListener implements ServletContextListener{
public void contextInitialized(ServletContextEvent servletContextEvent) {
new AliRepayHistoryTask().task();
}
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}
}
<listener>
<listener-class>com.listener.AliRepayHistoryTaskListener</listener-class>
</listener>
参考链接:http://blog.csdn.net/l1028386804/article/details/52727297
监听器的使用例子 ServletContextListener的更多相关文章
- Servlet监听器——实现在线登录人数统计小例子
一.概念 servlet监听器的主要目的是给web应用增加事件处理机制,以便更好的监视和控制web应用的状态变化,从而在后台调用相应处理程序. 二.监听器的类型 1.根据监听对象的类型和范围,分为3类 ...
- 监听器Listener
监听器 6个事件类,均以event结尾 *某些操作,如启动/关闭容器,创建/销毁会话,都将触发一种事件发生,当发生了某种事件,容器将创建对应的事件类对象 8个监听接口,均以Listener结尾 监听器 ...
- 【JSP&Servlet学习笔记】5.Servlet进阶AIP、过滤器与监听器
Servlet接口上,与生命周期及请求服务相关的三个方法是init().service()与destory()方法.当Web容器加载Servlet类并实例化之后,会生成ServletConfig对象并 ...
- javaWeb学习总结(11)- 监听器(Listener)学习
一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其 实就是一个实现特定接口的普 ...
- 05).30分钟学会Servlet+过滤器+监听器+实际案例
一.Servlet简介: Servlet程序处理流程 二.Servlet程序实现 实现要求 Servlet属于java ee范畴,而java和javac属于java se范畴,要想编译servlet必 ...
- 【转】监听器(Listener)学习
一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其它对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监听的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通 ...
- Spring依赖注入servlet会话监听器
Spring提供了一个 “ContextLoaderListener” 监听器,以使 Spring 依赖注入到会话监听器. 在本教程中,通过添加一个 Spring 依赖注入一个bean 到会话监听器修 ...
- 监听器(Listener)学习(一)
一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通 ...
- JavaWeb学习笔记(二十一)—— 监听器Listener
一.监听器概述 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对 ...
随机推荐
- Logback配置讲解
复制文件并粘贴到项目下: logback.xml: <?xml version="1.0" encoding="UTF-8"?> <confi ...
- linux 如何查看防火墙是否开启
service iptables status可以查看到iptables服务的当前状态.但是即使服务运行了,防火墙也不一定起作用,你还得看防火墙规则的设置 iptables -L在此说一下关于启动和关 ...
- Java-idea-PMD源文件级别潜在bug查看
一.概述 PMD(Project Manager Design)是一种开源分析Java代码错误的工具.与其他分析工具不同的是,PMD通过静态分析获知代码错误.也就是说,在不运行Java程序的情况下报告 ...
- Java8新特性(转载)
1.Lambda表达式 Lambda表达式(也称为闭包)是整个Java 8发行版中最受期待的在Java语言层面上的改变.使用 Lambda 表达式可以使代码变的更加简洁紧凑. Lambda允许把函数作 ...
- Selenium之Chrome浏览器的启动问题及解决
System.setProperty("webdriver.chrome.driver","chromedriver.exe路径"); 配置好Chrome的驱动 ...
- ref out 区别
1.使用ref型参数时,传入的参数必须先被初始化.对out而言,必须在方法中对其完成初始化. 2.使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字.以满足匹配. 3.out适 ...
- dns之缓存。
1.浏览器缓存.这里以chrome为例.在chrome上输入:chrome://net-internals/#dns 可以查看chrome浏览器的dns缓存信息. 这样. 2.windows系统缓存. ...
- uva11732 Trie转化
有40001 个单词每个单词长度不超过1000,每个两个单词之间都要比较求要比较次数 int strcmp(char *s,char *t){ int i; for(i = 0; s[i]==t[i] ...
- 【转载】Java动态代理之JDK实现和CGlib实现(简单易懂)
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6542259.html 一:代理模式(静态代理) 代理模式是常用设计模式的一种,我们在软件设计时常用的代理一般是 ...
- c++第二十九天
p143~p151:其他隐式类型转换1.数组转换成指针,大多数表达式自动转换成指向数组首元素的指针. 2.指针的转换. 3.转换成布尔类型,例如在if (condition) 中. 4.转换成常量. ...