day037 listener Timer 发送邮件工具类
1 WEB监听器
1.1 概述
Web监听器就是一个组件,可以对其他的内容,进行监视控制,当被监视的内容,发生指定的行为时,web监听器就可以给出相应的处理方案。
事件源:被监视的内容。
监听器:监视别人的东西,称为监听器。
事件:作用于事件源上的行为。
事件源对事件行为描述出来的一个对象,就是事件对象(事件对象可以包含事件源)。
1.2 Web中的事件源
一共有3个事件源:
(1)HttpServletRequest 请求对象
(2)HttpSession session
(3)ServletContext 工程对象
1.3 Web中的监听器
Web中一共提供了8个监听器,分别监听上述的3个事件源。
8个监听器分为3类:
第1类:监视事件源的创建与销毁。(事件源的生命周期)
HttpServletRequestListener
HttpSessionListener
ServletContextListener
第2类:监视事件源的属性值变化。(属性值的增删改查)
HttpServletRequestAttributeListener
HttpSessionAttributeListener
ServletContextAttributeListener
第3类:监视session对象与javaBean的关系的两个监听器。
绑定与解绑定:
HTTPSessionBinDingListener
活化与钝化:
HttpSessionActivationListener
1.4 监听器的创建步骤
1:编写一个类,实现相应的接口。(实现8个监听器之一)
2:在web.xml中配置监听器。(前两类需要配,第3类不需要配)
1.5 监听器方法中的形式参数--事件对象
通过事件对象可以获取事件源对象,也可以获取与事件触发时的相关信息。
例如:
session属性变化的监听器,就可以获取session对象和session对象中发生变化的属性名和属性值。
相关API:
|
|
|
|
|
|
1.6 Web中特殊的监听器
与session相关的监听器中有两个特殊的监听器,特殊的监听器不需要在web.xml中进行配置。
特殊的监听器必须由javaBean来实现这两个接口中的其中之一。
实现接口的javaBean就会自动感知自己是否被session绑定或解绑定,活化或钝化。
名称解释:
绑定:
将javaBean对象保存到session对象中,就是绑定。
解绑定:
将javaBean对象从session中移除,就是解绑定。
活化:
从硬盘中将对象读取到内存中。
钝化:
从内存中将对象序列化到硬盘上。
2 定时器任务类Timer
2.1 Java中的定时器
java.util.Timer类:在java中也可以使用一个线程,单独的对某个任务进行延迟执行或周期性执行,这个定时器类就是Timer类。
2.2 Timer的使用
2.2.1 构造方法
直接使用空参数的构造方法即可:
Timer() 创建一个新计时器。
2.2.2 常用API
|
|
|
|
|
|
|
|
TimerTask 就是一个Runnable接口的一个实现类,但是是一个抽象类,如果我们想创建一个TimerTask 类型的对象,就必须继承TimerTask这个类,重写run方法(因为实现了Runnable接口所以肯定有run方法),会由Timer对象自动调用run方法。
3 电子邮件
3.1 电子邮件概述
所谓的电子邮件就是在邮件服务器上的一个账户和一片空间,使用这个账号可以进行邮件发送或邮件接收。
邮件服务器:实质上就是一台电脑,安装了一个邮件服务器的软件。
3.2 电子邮件的发送与读取流程
3.3 电子邮件的发送与接收协议介绍
发送协议:SMTP协议,用于多台邮件服务器之间进行邮件交互。
发邮件的端口号: 25
接收协议:POP3协议,用于账户与服务器之间邮件的查收。
收邮件的端口号: 110
3.4 易邮邮件服务器的安装与使用
1:安装步骤;(直接下一步)
2:会提示无法使用浏览器;忽略即可;
3:配置服务器;
4:账号添加;(注册)
5:安装客户端软件(FoxMail),配置账户
3.5 使用java代码发送电子邮件
使用mail.jar可以完成电子邮件的发送。
Java代码发送邮件的步骤:(了解)
1:创建一个session会话对象(邮件服务器上的session会话对象);
2:设置登录的账户和密码;(设置发件人)
3:编写邮件内容;(发给谁)
4:发送邮件;(工具类的静态方法)
读已经编写好的工具类:
mustang_MailUtils
package import java.util.Properties;import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;public class mustang_MailUtils {public static void sendMail(String email, String emailMsg)throws AddressException, MessagingException {// 1.创建一个程序与邮件服务器会话对象 SessionProperties props = new Properties();//注意:这里键值对中的键是固定死的//设置发送的协议props.setProperty("mail.transport.protocol", "SMTP");//设置发送邮件的服务器props.setProperty("mail.host", "smtp.126.com");//不走外网的话可以填localhostprops.setProperty("mail.smtp.auth", "true");// 指定验证为true// 创建验证器Authenticator auth = new Authenticator() {public PasswordAuthentication getPasswordAuthentication() {//设置发送人的帐号和密码return new PasswordAuthentication("abc", "a");}};Session session = Session.getInstance(props, auth);// 2.创建一个Message,它相当于是邮件内容Message message = new MimeMessage(session);//设置发送者message.setFrom(new InternetAddress("abc@126.com"));//设置发送方式与接收者message.setRecipient(RecipientType.TO, new InternetAddress(email)); //设置邮件主题message.setSubject("邮件主题");// message.setText("这是一封激活邮件,请<a href='#'>点击</a>");//设置邮件内容message.setContent(emailMsg, "text/html;charset=utf-8");// 3.创建 Transport用于将邮件发送Transport.send(message);}
}
使用举例:
package import javax.mail.MessagingException;
import javax.mail.internet.AddressException;public class MyTest {public static void main(String[] args) throws Exception {//给自己的b账户发邮件MyMailUtils.sendMail("b@estore.com","嘿嘿");System.out.println("完事...");}}
4 综合案例-发生日祝福
4.1 需求
当服务器启动的时候,查询数据库中今天过生日的用户,并给这些用户发送生日祝福邮件;
4.2 技术分析
1:要想知道服务器已经启动了,就需要使用web中的监听器来完成;
2:延迟一定的时间或每间隔一定的时间做事情,需要使用java中的定时任务完成;
3:使用java程序,发送电子邮件;
4.3 步骤实现
1:环境搭建;(监听器,service,dao,domain,utils)
2:创建数据库和模型类及三层包结构;
3:编写一个监听器;(监听ServletContext对象的创建);当触发的时候,查询数据库中今天过生日的所有用户,发送祝福邮件;
day037 listener Timer 发送邮件工具类相关推荐
- jmail组件 java_Jmail发送邮件工具类分享
import lombok.extern.slf4j.Slf4j; import java.util.Properties; import javax.mail.*; import javax.mai ...
- java发送邮件工具类的编写直接复制版(兼补上篇邮箱改密发送邮件)
上篇关于如何通过邮箱发送修改密码的链接的教程我取的名字叫作<炫酷又实用的发送邮箱链接修改密码保姆级教程>,文章发表之后发现炫酷呢?炫酷在那里?除了几段乏味的代码之外,什么也没有啊,甚至连怎 ...
- MailUtil-Java发送邮件工具类
分享做项目时写的邮件的工具类: 一.准备工作: 1.使用java邮箱发送邮件,需要在邮箱设置中申请开通 POP3/SMTP 服务,以163邮箱为例: 在网页上打开登录163邮箱,点击设置-POP3/S ...
- Java发送邮件工具类(可发送匿名邮件)
为什么80%的码农都做不了架构师?>>> 为了不想到处去下载jar包,我使用maven为我管理,在开始编码这些东西之前,我们先在pom.xml文件中<dependenci ...
- 发送邮件工具类 - EmaiHelper
首先导入jar <dependency><groupId>org.springframework.boot</groupId><artifactId>s ...
- 邮箱发送验证码工具类
1.邮箱支持引入到pom <dependency><groupId>org.springframework.boot</groupId><artifactId ...
- 【工具类】发送邮件的方法
依赖 <!--javaMail--><dependency><groupId>javax.mail</groupId><artifactId> ...
- 发送邮件功能:使用Spring Email、邮件工具类、使用Thymeleaf模板引擎 发送html邮件
发送邮件 Spring Email 开启自己邮箱的POP3/SMTP服务 导入spring mail 依赖 <!-- https://mvnrepository.com/artifact/org ...
- 工具类涉及数据库连接、格式转换、文件操作、发送邮件等等
工具类涉及数据库连接.格式转换.文件操作.发送邮件等等 数据库连接工具类 数据库连接工具类--仅仅获得连接对象 ConnDB.java import java.sql.Connection; impo ...
最新文章
- iMeta | 浙大倪艳组MetOrigin实现代谢物溯源和肠道微生物组与代谢组整合分析
- 微众WeCross 跨链平台(11)系统总结
- linq 清除一条数据中的某个字段值_B端通用批量数据导入方案设计
- 拦截游戏窗口被移动_「维维足球pro-教案」50个传控踢法练习之(一、二)追球游戏...
- matlab中基于cdma的锁相环,答辩-基于MATLAB的CDMA通信系统设计与仿真.ppt
- 3631: [JLOI2014]松鼠的新家
- 郑大远程计算机应用基础第09,郑大远程教育《计算机应用基础》第09章在线测试...
- python查看服务器日志_python读取服务器日志的方法
- O - Muddy Fields
- Mac上使用sunlogin向日葵软件远程控制电脑
- NLP算法-词性标注
- 2021杭电多校第3场_HDU6975_Forgiving Matching
- sdkman的介绍、安装及使用
- 少年,这里有5本Python3爬虫书
- ios html格式转换,如何使用HTML模版和iOS中的UIPrintPageRenderer来生成PDF文档
- 英语,对程序员有多重要?
- Excel if函数用法
- canvas实现走势图实现
- 运动目标相参积累与非相参积累
- 速锐得科技开发新能源汽车在城市物流配送TBOX的背景和意义