BOS物流項目第十三天
教學計劃
1、Quartz概述
a. Quartz介紹和下載
b. 入門案例
c. Quartz執行流程
d. cron表達式
2、在BOS項目中使用Quartz創建定時任務
3、在BOS項目中使用JavaMail發送郵件
4、HighCharts概述
a. HighCharts介紹
b. 在線演示
5、基於HighCharts實現區域分區分布圖
1 Quartz概述
1.1 quartz介紹和下載
官網:http://www.quartz-scheduler.org/
Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源項目,它可以與J2EE
下載壓縮包:
解壓壓縮包:
1.2 入門案例
第一步:創建maven工程,導入spring和quartz相關依賴
第二步:創建任務類
第三步:在spring配置文件中配置任務類
第四步:在spring配置文件中配置JobDetail
第五步:在spring配置文件中配置觸發器
第六步:在spring配置文件中配置scheduler
第七步:加載spring配置文件,創建
2 在BOS項目中引入quartz
第一步:在pom.xml中引入quartz和JavaMail的依賴
快速引入:點擊右鍵選擇Maven,然後選擇Add Dependency,會跳出下面窗口,輸入我們要找的依賴,搜索選擇即可
最後我們導入以下依賴
第二步:提供一個作業類,用於為系統管理員發送郵件
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("[email protected]"); 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="[email protected]"/> <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>
3 Highcharts
3.1 Highcharts簡介
Highcharts 是一個用純JavaScript編寫的一個圖表庫, 能夠很簡單便捷的在web網站或是web應用程序添加有交互性的圖表,並且免費提供給個人學習、個人網站和非商業用途使用。HighCharts支持的圖表類型有曲線圖、區域圖、柱狀圖、餅狀圖、散狀點圖和綜合圖表。
基於jQuery開發一個圖形報表工具插件
官網:http://www.hcharts.cn/
下載zip開發文檔:
解壓zip文件:
3.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提供的方法,動態創建圖表
4 在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中提供方法
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); } }
BOS物流項目第十三天