监听器的使用例子 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等域对 ...
随机推荐
- 【Loadrunner】LR破解版录制手机脚本
LR破解版录制手机脚本 最近在网上听到好多童鞋都在问如何用LR做手机性能测试,恰好自己对这方面也挺感兴趣,经过查阅很多资料,形成此文档以做备注~!如果有感觉我写的不对的地方,敬请指正 ...
- 流畅的python 读书笔记 第二章 序列构成的数组 列表推导
列表推导是构建列表(list)的快捷方式,而生成器表达式则可以用来创建其他任何类型的序列.如果你的代码里并不经常使用它们,那么很可能你错过了许多写出可读性更好且更高效的代码的机会. 2.2.1 列表推 ...
- 004-spring cache-声明性的基于XML的缓存
一.概述 如果注释不是选项(不能访问源代码或没有外部代码),可以使用XML进行声明式缓存.因此,不是注释用于缓存的方法,而是从外部指定目标方法和缓存指令(类似于声明式事务管理建议). <!-- ...
- [py]函数小结
函数作用域(函数前向引用) --> 嵌套(递归是一种个特殊的嵌套) --> 递归(回归,递归是一种特殊的迭代) --> 迭代 --> 生成器 --> 匿名函数 递归 一种 ...
- [py][lc]python的纸牌知识点
模块collections-collections.namedtuple表示tuple 如表示一个坐标, t = (1,2), 搞不清楚. 如果这样就对了Point(x=1, y=2) from co ...
- http webservice socket的区别
1 数据传输方式1.1 socket传输的定义和其特点 所谓socket通常也称作"套接字",实现服务器和客户端之间的物理连接,并进行数据传输,主要有udp和tcp两个协议. ...
- 装饰器的修复wraps,偏函数partial 以及chain
将被装饰的函数的一些属性值赋值给 装饰器函数,最终让属性的显示更符合我们的直觉. from functools import wraps def wapper(func): @wraps(func) ...
- js中 a : function(){}这是什么格式? 代表什么含义?怎样学习这样的格式?
js中的json. 一种轻量级数据格式.json中的值是map形式的就是key->value. 具体看下边的示例; var person = { // 用 大括号括声明一个json. " ...
- STM32 IO口双向问题
源: STM32 IO口双向问题
- SQL学习笔记四之MySQL数据操作
阅读目录 一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理 一 介绍 MySQL数据操作: DML =========== ...