1 学习计划
1、Quartz概述
n Quartz介绍和下载
n 入门案例
n Quartz执行流程
n cron表达式
2、在BOS项目中使用Quartz创建定时任务
3、在BOS项目中使用JavaMail发送邮件
4、HighCharts概述
n HighCharts介绍
n 在线演示
5、基于HighCharts实现区域分区分布图
2 Quartz概述
2.1 quartz介绍和下载
官网:http://www.quartz-scheduler.org/
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或EJBs。Quartz的最新版本为Quartz 2.2.3。
下载压缩包:
解压压缩包:
2.2 入门案例
第一步:创建maven工程,导入spring和quartz相关依赖
第二步:创建任务类
第三步:在spring配置文件中配置任务类
第四步:在spring配置文件中配置JobDetail
第五步:在spring配置文件中配置触发器
第六步:在spring配置文件中配置scheduler
第七步:加载spring配置文件,创建spring工厂
3 在BOS项目中引入quartz
第一步:在pom.xml中引入quartz和JavaMail的依赖
第二步:提供一个作业类,用于为系统管理员发送邮件
public classMailJob {
@ResourceprivateIWorkbillDao workbillDao;private String username;//发件人的邮箱账号
private String password;//密码
private String smtpServer;//服务器
publicString getUsername() {returnusername;
}public voidsetUsername(String username) {this.username =username;
}publicString getPassword() {returnpassword;
}public voidsetPassword(String password) {this.password =password;
}public voidexecute() {
System.out.println("要发邮件了。。。" + newDate());try{//查询工单类型为新单的所有工单
List list =workbillDao.findAll();if(null != list && list.size() > 0){final Properties mailProps = newProperties();
mailProps.put("mail.smtp.host", this.getSmtpServer());
mailProps.put("mail.smtp.auth", "true");
mailProps.put("mail.username", this.getUsername());
mailProps.put("mail.password", this.getPassword());//构建授权信息,用于进行SMTP进行身份验证
Authenticator authenticator = newAuthenticator() {protectedPasswordAuthentication getPasswordAuthentication() {//用户名、密码
String userName = mailProps.getProperty("mail.username");
String password= mailProps.getProperty("mail.password");return newPasswordAuthentication(userName, password);
}
};//使用环境属性和授权信息,创建邮件会话
Session mailSession =Session.getInstance(mailProps, authenticator);for(Workbill workbill : list){//创建邮件消息
MimeMessage message = newMimeMessage(mailSession);//设置发件人
InternetAddress from = new InternetAddress(mailProps.getProperty("mail.username"));
message.setFrom(from);//设置收件人
InternetAddress to = new InternetAddress("test@itcast.cn");
message.setRecipient(RecipientType.TO, to);//设置邮件标题
message.setSubject("系统邮件:新单通知");//设置邮件的内容体
message.setContent(workbill.toString(), "text/html;charset=UTF-8");//发送邮件
Transport.send(message);
}
}
}catch(Exception ex) {
ex.printStackTrace();
}
}publicString getSmtpServer() {returnsmtpServer;
}public voidsetSmtpServer(String smtpServer) {this.smtpServer =smtpServer;
}
}
第三步:在spring配置文件中配置
0/5 * * * * ?
4 Highcharts
4.1 Highcharts简介
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。HighCharts支持的图表类型有曲线图、区域图、柱状图、饼状图、散状点图和综合图表。
基于jQuery开发一个图形报表工具插件
官网:http://www.hcharts.cn/
下载zip开发文档:
解压zip文件:
4.2 入门案例
第一步:将Highcharts相关资源文件复制到项目中
第二步:在页面中引入相关js文件
第三步:在页面中提供一个div,并指定id属性
第四步:调用Highcharts提供的方法,动态创建图表
5 在BOS项目中展示区域分区分布图
第一步:在subarea.jsp页面中引入Highcharts资源文件
第二步:在jsp页面中提供按钮,并提供div窗口,在这个窗口中展示图表
第三步:定义function
functiondoShowHighcharts(){
$("#showSubareaWindow").window("open");//页面加载完成后,动态创建图表
$.post("subareaAction_findSubareasGroupByProvince.action",function(data){
$("#test").highcharts({
title: {
text:'区域分区分布图'},
series: [{
type:'pie',
name:'区域分区分布图',
data: data
}]
});
});
}
第四步:在服务端Action中提供方法
Dao代码:
@Repositorypublic class SubareaDaoImpl extends BaseDaoImpl implementsISubareaDao {public ListfindSubareasGroupByProvince() {
String hql= "SELECT r.province ,count(*) FROM Subarea s LEFT OUTER JOIN s.region r Group BY r.province";return (List) this.getHibernateTemplate().find(hql);
}
}