BOS物流项目笔记(13)

news/2024/7/7 7:06:04

1、学习计划

(1)Quartz概述

  1. Quartz介绍和下载

  2. 入门案例

  3. Quartz执行流程

  4. cron表达式

(2)在BOS项目中使用Quartz创建定时任务

(3)在BOS项目中使用JavaMail发送邮件

(4)HighCharts概述

  1. HighCharts介绍

  2. 在线演示

(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工程,导入springquartz相关依赖

第二步:创建任务类

第三步:在spring配置文件中配置任务类

第四步:在spring配置文件中配置JobDetail

第五步:在spring配置文件中配置触发器

第六步:在spring配置文件中配置scheduler

第七步:加载spring配置文件,创建spring工厂

3、在BOS项目中引入quartz

第一步:在pom.xml中引入quartz和JavaMail的依赖

第二步:提供一个作业类,用于为系统管理员发送邮件

public class MailJob {
	@Resource
	private IWorkbillDao workbillDao;
	private String username;//发件人的邮箱账号
	private String password;//密码
	private String smtpServer;//服务器
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public void execute() {
		System.out.println("要发邮件了。。。" + new Date());
		try {
			//查询工单类型为新单的所有工单
			List<Workbill> list = workbillDao.findAll();
			if(null != list && list.size() > 0){
				final Properties mailProps = new Properties();
				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 = new Authenticator() {
					protected PasswordAuthentication getPasswordAuthentication() {
						// 用户名、密码
						String userName = mailProps.getProperty("mail.username");
						String password = mailProps.getProperty("mail.password");
						return new PasswordAuthentication(userName, password);
					}
				};
				// 使用环境属性和授权信息,创建邮件会话
				Session mailSession = Session.getInstance(mailProps, authenticator);
				for(Workbill workbill : list){
					// 创建邮件消息
					MimeMessage message = new MimeMessage(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();
		}
	}

	public String getSmtpServer() {
		return smtpServer;
	}

	public void setSmtpServer(String smtpServer) {
		this.smtpServer = smtpServer;
	}
}

第三步:在spring配置文件中配置

<!-- 注册自定义作业类 -->
	<bean id="myJob" class="com.itheima.jobs.MailJob">
		<property name="username" value="itcast_server@126.com"/>
		<property name="password" value="147963qP"/>
		<property name="smtpServer" value="smtp.126.com"/>
	</bean>
	
	<!-- 配置JobDetail -->
	<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<!-- 注入目标对象 -->
		<property name="targetObject" ref="myJob"/>
		<!-- 注入目标方法 -->
		<property name="targetMethod" value="execute"/>
	</bean>
	
	<!-- 配置触发器 -->
	<bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<!-- 注入任务详情对象 -->
		<property name="jobDetail" ref="jobDetail"/>
		<!-- 注入cron表达式,通过这个表达式指定触发的时间点 -->
		<property name="cronExpression">
			<value>0/5 * * * * ?</value>
		</property>
	</bean>
	
	<!-- 配置调度工厂 -->
	<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<!-- 注入触发器 -->
		<property name="triggers">
			<list>
				<ref bean="myTrigger"/>
			</list>
		</property>
	</bean>

4、Highcharts

 4.1、Highcharts简介

Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。HighCharts支持的图表类型有曲线图、区域图、柱状图、饼状图、散状点图和综合图表。

基于jQuery开发一个图形报表工具插件

官网:http://www.hcharts.cn/

下载zip开发文档:

解压zip文件:

4.2、入门案例

第一步:将Highcharts相关资源文件复制到项目中

第二步:在页面中引入相关js文件

<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.8.3.js"></script>
<script src="${pageContext.request.contextPath }/js/highcharts/highcharts.js"></script>
<script src="${pageContext.request.contextPath }/js/highcharts/modules/exporting.js"></script>

第三步:在页面中提供一个div,并指定id属性

第四步:调用Highcharts提供的方法,动态创建图表

5、在BOS项目中展示区域分区分布图

第一步:在subarea.jsp页面中引入Highcharts资源文件

第二步:在jsp页面中提供按钮,并提供div窗口,在这个窗口中展示图表

第三步:定义function

function doShowHighcharts(){
		$("#showSubareaWindow").window("open");
		//页面加载完成后,动态创建图表
		$.post("subareaAction_findSubareasGroupByProvince.action",function(data){
			$("#test").highcharts({
				title: {
		            text: '区域分区分布图'
		        },
		        series: [{
		            type: 'pie',
		            name: '区域分区分布图',
		            data: data
		        }]
			});
		});
	}

第四步:在服务端Action中提供方法

Dao代码:

@Repository
public class SubareaDaoImpl extends BaseDaoImpl<Subarea> implements ISubareaDao {
	public List<Object> findSubareasGroupByProvince() {
		String hql = "SELECT r.province ,count(*) FROM Subarea s LEFT OUTER JOIN s.region r Group BY r.province";
		return (List<Object>) this.getHibernateTemplate().find(hql);
	}
}

 

 

 


http://www.niftyadmin.cn/n/1808711.html

相关文章

android的Fragment详解

Fragment要点 Fragment作为Activity界面的一部分组成出现可以在一个Activity中同时出现多个Fragment&#xff0c;并且&#xff0c;一个Fragment亦可在多个Activity中使用。在Activity运行过程中&#xff0c;可以添加、移除或者替换Fragment&#xff08;add()、remove()、replac…

寻求答案,而不是方案

早上八点按时起床&#xff0c;吃过早餐&#xff0c;去教研室工作。就这样平平常常&#xff0c;也不会觉得痛苦&#xff0c;或是压力太大。 早上骑了自行车&#xff0c;是打算邮寄礼物的。这也算是一次小小的突破&#xff0c;事实上没有我想的那么困难&#xff0c;但每次小小的突…

BOS物流项目笔记(14)

1、学习计划 &#xff08;1&#xff09;Linux部署 安装jdk 安装tomcat 安装MySQL 将项目发布到tomcat &#xff08;2&#xff09;扩展资料 &#xff08;3&#xff09;面试问题总结 2、Linux部署 2.1、安装jdk 第一步&#xff1a;获取Linux系统中jdk安装包 第二步&…

Python练习题 003:完全平方数

【Python练习题 003】一个整数&#xff0c;它加上100后是一个完全平方数&#xff0c;再加上168又是一个完全平方数&#xff0c;请问该数是多少&#xff1f; ------------------------------------------------- 所谓的“完全平方数”&#xff0c;就是开完根号仍然是整数。 数学…

获取flash里的真实url地址,将swf文件下载保存下来

点击下载&#xff1a;UrlActionEditor-v4.04 这个软件可以看到&#xff0c;swf文件里的url。 看图&#xff1a; 看到http://fla.78baby.com/flashupfile/fads/这个地址了吧&#xff0c;这个就是真实的地址&#xff0c;下面我们看看一个具体页面的flash 上面embed标签里的 bofa…

ros launch文件编写和节点启动顺序控制

ROS可以通过launch文件进行节点的管理、初始参数的设置&#xff0c;但是launch文件不能指定节点的启动顺序&#xff0c;因此本文简单介绍下通过launch进行节点启动管理&#xff0c;通过shell来控制节点启动顺序。 1&#xff0c;我将读取参数的代码片段放在了ros::init(argc,arg…

struts2Springhibernate原理

1、Structs2 Struts2是一个基于MVC设计模式的Web应用框架&#xff0c;它本质上相当于一个servlet&#xff0c;在MVC设计模式中&#xff0c;Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品&#xff0c;是在 struts 1和WebWork的技术基…

Errors running builder 'DeploymentBuilder'

Errors running builder DeploymentBuilder on project 1.修改java源代码后点击保存,IDE 自动编译并热部署,提示如下错误: Errors occurred during the build.Errors running builder DeploymentBuilder on project 项目名.java.lang.NullPointerException 产生原因: IDE勾选了…