Java全栈开发---Java ERP系统开发:商业ERP(十一)库存预警,JavaMail发送预警邮件

在StoredetailAction中加入方法:

在这里插入图片描述

(6)页面代码

1)添加js/storealert.js

在这里插入图片描述

2)添加storealert.html文件

在这里插入图片描述

3)运行结果

http://localhost:8080/erp/storealert.html

在这里插入图片描述

二、JavaMail发送预警邮件(扩展)


1、需求分析

实现发送邮件预警功能,根据相关人员进行采购,点击“发送警报邮件”按钮即可发送库存报警

如果存在报警商品并成功发送 ,提示发送成功

如果不存在报警商品,提示没有库存报警商品

在这里插入图片描述

2、JavaMail介绍

JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。JavaMail API是Sun公司为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如:SMTP、POP3、IMAP。开发人员使用JavaMail API编写邮件处理软件时,无须考虑邮件协议底层的实现细节,只要调用JavaMail开发包中相应的API类就可以了。

使用 JavaMail,我们可以实现类似 OutLook、FoxMail 的软件

Spring的javaMailSender对JavaMail进行封装,简化了开发,告别繁琐的API

3、ERP中实现发送预警邮件
(1)添加依赖

在父工程的pom.xml中添加java mail的依赖

在这里插入图片描述

(2)编写发送邮件的工具类

在业务逻辑层当中创建MailUtil

在这里插入图片描述

(3)编写spring配置文件

创建applicationContext_mail.xml

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns=“http://www.springframework.org/schema/beans”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:context=“http://www.springframework.org/schema/context”

xmlns:aop=“http://www.springframework.org/schema/aop” xmlns:tx=“http://www.springframework.org/schema/tx”

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop.xsd

">

true

true

(4)编写业务逻辑类

给IStoredetailBiz和StoredetailBiz添加sendStoreAlertMail方法

IStoredetailBiz

在这里插入图片描述

StoredetailBiz

在这里插入图片描述

private MailUtil mailUtil;

public void setMailUtil(MailUtil mailUtil) {

this.mailUtil = mailUtil;

}

private String toAddress;// 收件箱

private String subject;// 主题

private String text;// 正文

public void setToAddress(String toAddress) {

this.toAddress = toAddress;

}

public void setSubject(String subject) {

this.subject = subject;

}

public void setText(String text) {

this.text = text;

}

/**

  • 发送库存预警邮件

  • @throws MessagingException

*/

public void sendStoreAlertMail() throws MessagingException {

// 得到库存预警列表

List storeAlertList = storedetailDao.getStorealertList();

if (storeAlertList.size() > 0) {

mailUtil.sendMail(toAddress,

subject.replace(“[time]”, new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”).format(new Date())),

text.replace(“[count]”, String.valueOf(storeAlertList.size())));

} else {

throw new ErpException(“没有库存预警信息”);

}

}

(5)修改applicationContext_biz.xml

storedeatilBiz节点,添加

在这里插入图片描述

(6)编写action代码

修改StoredetailAction,添加代码

在这里插入图片描述

(7)编写js代码

修改storealert.js

在这里插入图片描述

4、Quartz定时发送预警邮件
(1)需求以及实现思路

定时查询库存预警信息,一旦存在库存预警的商品,侧发送邮件通知相关工作人员

(2)Quart框架

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。

Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。

它提供了巨大的灵活性而不牺牲简单性。

你能够用它来为执行一个作业而创建简单的或复杂的调度。

1)Job

表示一个任务(工作),要执行的具体内容。

2)JobDetail JobDetail

表示一个具体的可执行的调度程序,Job 是这个可执行程调度程序所要 执行的内容,另外

JobDetail 还包含了这个任务调度的方案和策略。

告诉调度容器,将来执行哪个类(job)的哪个方法

3)Trigger

是一个类,代表一个调度参数的配置,描述触发Job执行的时间触发规则。

一个Job可以对应多个Trigger,但一个Trigger只能对应一个Job

4)Scheduler 代表一个调度容器,一个调度容器中可以注册多个 JobDetail 和Trigger。

Scheduler可以将Trigger绑定到某一JobDetail中,这样当Trigger触发时,对应的Job就被执行。

Note: 当JobDetail和Trigger在scheduler容器上注册后,形成了装配好的作业(JobDetail和Trigger所组成的一对儿),就可以伴随容器启动而调度执行了。

5、代码实现
(1)添加quartz依赖

打开父工程的pom.xml,添加quartz依赖:

在这里插入图片描述

(2)创建任务类

在业务逻辑层中新建MailJob类,包名为com.itzheng.erp.job

在这里插入图片描述

(3)创建applicationContext_job.xml注入

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns=“http://www.springframework.org/schema/beans”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

">

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值