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:

String

getName()     获取发送变化的属性名

HttpSession

getSession()     获取发送变化的session对象

Object

getValue()     获取发送变化的属性值

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

 void

schedule(TimerTask task, Date time)
在指定的时间(time)执行指定的任务(task)。

 void

schedule(TimerTask task, Date firstTime, long period)
在指定的时间(firstTime)开始,每间隔指定的时间(period)执行任务(task)

 void

schedule(TimerTask task, long delay)
从当前时间开始,延迟(delay)时间后执行指定的任务(task)。

 void

schedule(TimerTask task, long delay, long period)
从当前时间开始,延迟(delay)时间后,每间隔(period)时间循环执行指定的任务(task)。

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 发送邮件工具类相关推荐

  1. jmail组件 java_Jmail发送邮件工具类分享

    import lombok.extern.slf4j.Slf4j; import java.util.Properties; import javax.mail.*; import javax.mai ...

  2. java发送邮件工具类的编写直接复制版(兼补上篇邮箱改密发送邮件)

    上篇关于如何通过邮箱发送修改密码的链接的教程我取的名字叫作<炫酷又实用的发送邮箱链接修改密码保姆级教程>,文章发表之后发现炫酷呢?炫酷在那里?除了几段乏味的代码之外,什么也没有啊,甚至连怎 ...

  3. MailUtil-Java发送邮件工具类

    分享做项目时写的邮件的工具类: 一.准备工作: 1.使用java邮箱发送邮件,需要在邮箱设置中申请开通 POP3/SMTP 服务,以163邮箱为例: 在网页上打开登录163邮箱,点击设置-POP3/S ...

  4. Java发送邮件工具类(可发送匿名邮件)

    为什么80%的码农都做不了架构师?>>>    为了不想到处去下载jar包,我使用maven为我管理,在开始编码这些东西之前,我们先在pom.xml文件中<dependenci ...

  5. 发送邮件工具类 - EmaiHelper

    首先导入jar <dependency><groupId>org.springframework.boot</groupId><artifactId>s ...

  6. 邮箱发送验证码工具类

    1.邮箱支持引入到pom <dependency><groupId>org.springframework.boot</groupId><artifactId ...

  7. 【工具类】发送邮件的方法

    依赖 <!--javaMail--><dependency><groupId>javax.mail</groupId><artifactId> ...

  8. 发送邮件功能:使用Spring Email、邮件工具类、使用Thymeleaf模板引擎 发送html邮件

    发送邮件 Spring Email 开启自己邮箱的POP3/SMTP服务 导入spring mail 依赖 <!-- https://mvnrepository.com/artifact/org ...

  9. 工具类涉及数据库连接、格式转换、文件操作、发送邮件等等

    工具类涉及数据库连接.格式转换.文件操作.发送邮件等等 数据库连接工具类 数据库连接工具类--仅仅获得连接对象 ConnDB.java import java.sql.Connection; impo ...

最新文章

  1. iMeta | 浙大倪艳组MetOrigin实现代谢物溯源和肠道微生物组与代谢组整合分析
  2. 微众WeCross 跨链平台(11)系统总结
  3. linq 清除一条数据中的某个字段值_B端通用批量数据导入方案设计
  4. 拦截游戏窗口被移动_「维维足球pro-教案」50个传控踢法练习之(一、二)追球游戏...
  5. matlab中基于cdma的锁相环,答辩-基于MATLAB的CDMA通信系统设计与仿真.ppt
  6. 3631: [JLOI2014]松鼠的新家
  7. 郑大远程计算机应用基础第09,郑大远程教育《计算机应用基础》第09章在线测试...
  8. python查看服务器日志_python读取服务器日志的方法
  9. O - Muddy Fields
  10. Mac上使用sunlogin向日葵软件远程控制电脑
  11. NLP算法-词性标注
  12. 2021杭电多校第3场_HDU6975_Forgiving Matching
  13. sdkman的介绍、安装及使用
  14. 少年,这里有5本Python3爬虫书
  15. ios html格式转换,如何使用HTML模版和iOS中的UIPrintPageRenderer来生成PDF文档
  16. 英语,对程序员有多重要?
  17. Excel if函数用法
  18. canvas实现走势图实现
  19. 运动目标相参积累与非相参积累
  20. 速锐得科技开发新能源汽车在城市物流配送TBOX的背景和意义

热门文章

  1. 好用工具推荐--持续更新
  2. [重庆思庄每日技术分享]-Windows手动离线安装netframework3.5
  3. iOS 设计模式系列:Memento – 备忘录模式
  4. python怎么输出_python输出语句怎么用
  5. mysql给一个表添加外键约束_Mysql添加外键约束
  6. 如何防止删库跑路?运维堡垒机高效安全运维设计与实践落地
  7. java SQL查询语句
  8. java多条件sql查询_SQL 多条件查询
  9. 如何保障自己的邮件安全
  10. WIN7开启AHCI蓝屏的解决方法