一.listener的介绍
概念:
- 监听器其实就是一个实现特定接口的普通java程序
- 用于监听另一个对象事件的发生,当事件发生后,监听器的方法立即被执行。
ps:例如实现接口ServletContextListener,ServletRequestListener,HttpSessionListener
作用:
- 监听javaweb的三个对象,ServletContext,ServletRequest,HttpSession
编写步骤:
- 1.编写一个类,实现监听器接口,重写方法
- 2.编写配置文件(大部分需要),注册listener
<listener>
<listener-class>com.itheima.listener.ServletRquestListener</listener-class>
</listener>
二.listener的分类
监听三个对象的创建和销毁:
ServletContextListener
- 创建:服务器启动的时候 会为每一个项目创建一个
- 销毁:项目移除的的时候,或者服务器关闭的时候
ServletRequestListener
- 创建:请求来的时候
- 销毁:生成响应的时候
HttpSessionListener
- 创建:认为第一次访问jsp页面的时候。
- 销毁:1.服务器非正常关闭。2.超时。3.手动销毁。
监听三个对象的属性的变化:
- ServletContextAttributeListener
- ServletRequestAttributeListener
- HttpSessionAttributeListener
ps:需要重写添加,替换,删除三个方法。
监听javabean在session中的状态变化:(不需要在web.xml中注册)
HttpSessionBindingListener(解绑和绑定)
- 绑定:javabean放入了session
- 解绑:javabean从session移除了
HttpSessionActivationListener(钝化和活化)
- 钝化(序列化):session中的javabean,序列化到磁盘上
- 活化(反序列化):javabean从磁盘中又回到了session中
ps:只需要javabean实现接口即可,不需要配置文件,需要实现序列化接口。
三.定时器
概念:调用线程执行任务。可安排任务执行一次,或者定期重复执行。
常用方法:
- void schedule(TimerTask task, Date firstTime, long period) :指定一个开始时间,间隔指定时间再次执行任务
- void schedule(TimerTask task, long delay, long period): 延迟一段时间,间隔指定时间再次执行任务
new TimerTask() {
@Override
public void run() {
.......
}
}ps:TimerTask task新建一个线程执行任务。
Calendar:(日历对象)
- static getInstance():获取对象
- setTime(Date date):与当前的时间同步
- set(int field,int value):设置时间
- getTime():返回日历的data对象