Listener监听器已经Listener的小案例
Listener监听器
对某些事件敏感的对象,当事件发生时,调用对象的某个方法,此对象就是监听器.
javaWeb中的监听器,主要坚挺WEB服务器中发生的一些事情.(请求的创建与销毁 session的创建与销毁
域中数据的变化等.)
如何发开一个监听器
创建一个类,实现对应的监听器接口
在web.xml中配置注册此监听器
监听器的生命周期:和过滤器一样
javaWeb中有那些监听器
ServletRequestListener:监听请求(创建与销毁)
ServletRequestAttributeListener:监听请求域(数据的变化:添加 删除 替换)
HttpSessionListener:监听session的创建与销毁
创建:
如果访问的是静态资源,则不会创建session
如果访问的是JSP,则会创建session
如果访问的是servlet,如果是用到session则会创建,如果没有用到,则不会创建
规律:用到session才会创建.(JSP有Session内置对象,所以一定会创建)
销毁:
默认是30分钟后过期自动销毁.
正常关闭服务器不会销毁session,会被写入磁盘,下次启动是再回复到内存
设置web.xml中根标签下的<session-config>的标签,其中的子标签:<session-timeout>
设置过期时间(单位是分钟,默认是30)
HttpSessionAttributeListener:监听session域的数据变化
HttpSessionBindingListener:监听特定的javaBean域session的绑定与解绑事件
程序员自己开发的一个类,让他来实现监听器接口,这样绑定域解绑的这个监听器就
只对这个类的对象进行监听
不需要在web.xml中配置
绑定:把对像保存到session
解绑:把对象从session移除
HttpSessionActivationListener:监听特定的javaBean钝化和活化事件
钝化:特定的javaBean随session一起从内存写入磁盘的事件
活化:特定的javaBean随SESSSIONS.ser文件一起从磁盘恢复到内存的事件
注意:当前javaBean需要被写入磁盘,所以此javaBean还必须实现序列化接口(java.io.serializable)
SerlvetContextListener:监听web项目的启动与停止
项目启动时的资源申请和任务开启
项目停止时的资源释放
SerlvetContextAttributeListener:SerlvetContext域的数据变化
定时发送生日祝福邮件的案例:
需求分析:给当天过生日的用户发送生日祝福邮件
技术分析:
能从数据库中去出当天过生日的用户的信息
SELECT * FROM 表明 WHERE 字段名 LIKE ' ____-07-09% ';
定时任务,以固定的事件周期运行,查找用户,发送邮件,以固定的事件周期,每隔指定的事件长度,运行一段代码.
发送邮件:MailUtils
SMTP:simple Mail Transfer Protocol:简单邮件传输协议:发送邮件
默认使用25端口
POP3:Post Office Protocol3:邮局协议第三版:收邮件
默认使用110端口
邮件服务器:
点" 设置 " ---> " 局域网邮件服务器 "
" 单域名 " ---> " itcats.com "( 设置本邮件服务器的域名 )
点" 新账号 "
账号:
密码:
邮件客户端工具: FoxMail
步骤分析:
创建一个定时任务,每隔24小时运行一次
调用业务逻辑,进行生日祝福邮件发送的操作
业务逻辑中,调用Dao从数据库中取得今天生日的拥挤的集合
业务逻辑中,遍历集合,给每个用户的邮箱发送邮件
当服务器启动时,同时启动定时任务(监听项目启动事件)
定时器:
第一步:创建定时器 new Timer()
第二步:调用schedule(task, delay, period)方法
参数: task : 第一个参数,创建一个TimerTask对象,因为TimerTask是抽象类,所以可以使用匿名内部类的方式实现
delay:运行此语句后,延迟多少秒开始运行
period:延迟时间后,开始运行定时任务,每隔多少秒开始运行
总结: 监听器 Listener
servletRequestLitener:监听那些资源被访问(WEB项目的访问记录)
servletRequestAttributeListener: added/replaced/removed
HttpSessionListener( 粗粒度的监听用户的上线和下线 )
创建和在在访问的目标用到session才会创建session(HTML一定不会,JSP一定会一定会,Servlet看情况)
销毁:过期<session-config><session-timeout>(单位是分钟)
HttpSessionAttributeLikstener
HttpSessionBindingListener:特定的javaBean和sesion绑定域解绑事件
HttpSessionActivationListener:特定的javaBean钝化与活化事情(必须同时序列化接口)
ServletContextListener:WEB项目的启动与停止
项目启动时申请资源
项目停止时释放资源
项目启动时启动任务*
ServletContextAttriduteListener