今日案例:
发送生日祝福邮件
案例-发送生日祝福邮件
需求:
查询今天过生日的会员,定时的给过生日的会员发送生日祝福邮件.
技术分析:
监听器
任务:事件调度(定时器)—理解
邮件
/
监听器(listener):
什么是监听器?
在java中:
监听器:本质上就是一个java类,这个类用来监视其它javabean的状态变化
servlet:本质上就是一个java类,这个类用来接收和响应页面数据的
服务器端的3个技术: servlet,listener,filter
监听器的作用?
作用:用来监听web中的三个对象的(servletContext,Servletrequest,Httpsession)
分类:
监听三个对象的创建和销毁
监听三个对象属性的变化
监听javabean在session中的状态
如何使用监听器?
java提供的常见监听器: 全部是接口
监听三个对象的创建和销毁:
ServletContextListener(掌握)
ServletRequestListener(了解)
HttpSessionListener(了解)
监听三个对象属性的变化:
ServletContextAttributeListener(了解)
ServletRequestAttributeListener(了解)
HttpSessionAttributeListener(了解)
监听javabean在session中的状态:
HttpSessionBindingListener(监听javabean是绑定到了session中还是从session中移除了)
HttpSessionActivationListener(监听javabean活化还是钝化)
钝化(长时间不用):session带着javabean序列化到磁盘上
活化:session带着javabean从磁盘上又回到了服务器内存中
入门程序:
编写一个监听器: 监听ServletContext对象的创建和销毁
1.创建一个类 实现接口(ServletContextListener)
2.在web.xml里面编写配置文件信息(大部分监听器需要配置) (告诉tomcat我自己的类是一个listener)
<listener>
<listener-class>监听器的全限定名</listener-class>
</listener>
servletContext的创建: 服务器启动为每一个项目创建一个对应的servletContext对象
servletContext的销毁: 服务器正常关闭的时候或则项目从服务器中移除
主要的作用:
在服务器启动的时候就加载框架的一些配置信息
监听ServletRequest的创建和销毁
request的创建: 请求服务器的时候创建request对象
request的销毁: 响应回去的时候销毁request对象
监听HttpSession的创建和销毁
session的创建:
java认为第一次调用request.getSession()的时候创建serssion对象
session的销毁:(3种)
1 超时销毁(默认30分钟)
2 非正常关闭(断电)
3 手动销毁
session.invalidate();
监听三个对象属性的变化: 监听的是域对象方法中的属性
域对象中添加属性
域对象中覆盖属性
域对象中删除属性
后面2个域对象操作相同
监听javabean在session中的状态(了解)
特殊注意:
不需要在web.xml中配置,只需要javabean去实现接口即可
HttpSessionBindingListener(javabean是绑定到了session中还是从session中移除了)
HttpSessionActivationListener(javabean活化还是钝化)--例子正常关闭服务器
钝化:session带着javabean序列化到磁盘上
活化:session带着javabean从磁盘上又回到了服务器内存中
时间调度:
Timer:时间调度
构造方法:
new Timer()
常用方法:
void schedule(TimerTask task, long delay, long period)
延迟多长时间后 开始执行task任务,间隔多长时间再次执行
void schedule(TimerTask task, Date firstTime, long period)
指定第一次执行tack的时间,间隔多长时间再次执行
日期格式化:
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date=format.parse("2016-12-05 18:25:00"); //将字符串日期变成日期类型
SimpleDateFormat format=new SimpleDateFormat("MM-dd");
String date=format.format(new Date()); //获取当前时间的月份和日期;
邮件:
概念:
邮件的客户端:可以只安装在电脑上的也可以是网页形式的
网页版:session过期
pc端安装客户端
邮件服务器:起到邮件的接受与推送的作用
http协议 浏览器--服务器
邮件协议:数据传输的格式
发送:smtp
接受:pop/pop3/imap
(jack给rose发邮件)
java发送邮件(了解)—开发中使用的都是工具类
步骤:
1.导入jar包 (mail.jar)
2 三个步骤
1 获得邮箱服务的连接(会话对象)
2 创建邮件对象
3 发送邮件
/
步骤分析:
1.数据库和表
create database day23;
use day23;
create table user(
id int primary key auto_increment,
username varchar(20),
birthday date,
email varchar(128)
);
insert into user values(null,'jack','1980-12-07','jack@ee237.com');
insert into user values(null,'rose','1977-12-07','rose@ee237.com');
insert into user values(null,'tom','1983-08-16','tom@ee237.com');
insert into user values(null,'lucy','1991-09-16','bbb@ee237.com');
2.新建项目
导入jar包 工具类 配置文件
3.编写一个监听器(ServletContextListener)
4.在初始化方法中编写代码
5.创建一个时间调度
每天发送生日祝福邮件
task:获取当日过生日的会员
获取用户列表(调用service)
遍历list
给每一个用户发送邮件
间隔:一天
6.sql写法:
select * from user where birthday like '%12-07%'