1樓:京北紅日
1. 目的:動態設定時間,觸發相應的任務
2. 系統架構為 struts + spring + hibernate
3. 實現步驟:
在頁面上設定時間;
將時間轉換為unix cron expression;
將轉換後的時間規則表示式記錄到資料庫中(也可以寫入xml檔案中,這裡是專案需要記錄入資料庫中);
從資料庫中得到相應的時間規則表示式;
更新您的任務觸發器的時間設定;
reschedule the job。; - )
4. 具體實現細節:
1) 在頁面上設定時間
根據具體的業務需求,設定時間規則,下面以某一專案為例,需要 按每月、每週、自定義分為三種規則。
1 < tr >
2 < th > 執行這個任務
3 < td style ="font-weight:bold;" >
4 < html:radio property ="everywhat" styleclass ="inputbordernone" value ="monthly" onclick ="changestatus(this.value)" > 每月
5 < html:radio property ="everywhat" styleclass ="inputbordernone" value ="weekly" onclick ="changestatus(this.value)" > 每週
6 < html:radio property ="everywhat" styleclass ="inputbordernone" value ="userdefined" onclick ="changestatus(this.value)" > 自定義
7 < html:hidden property ="jobname" value ="compare" />
8910 每月則需要選擇該月的第幾個星期的星期幾
1 < tr style ="display:" id ="whichweek" >
2 < th > 選擇第幾個星期
3 < td style ="font-weight:bold;" >
4 < html:select property ="week" >
5 < html:option value ="1" > 一
6 < html:option value ="2" > 二
7 < html:option value ="3" > 三
8 < html:option value ="4" > 四
910 < html:select property ="dayofmonth" >
11 < html:option value ="1" > 星期日
12 < html:option value ="2" > 星期一
13 < html:option value ="3" > 星期二
14 < html:option value ="4" > 星期三
15 < html:option value ="5" > 星期四
16 < html:option value ="6" > 星期五
17 < html:option value ="7" > 星期六
18192021 每週則需要選擇星期幾
1 < tr style ="display:none" id ="whichday" >
2 < th > 選擇星期
3 < td style ="font-weight:bold;" >
4 < html:select property ="dayofweek" >
5 < html:option value ="1" > 星期日
6 < html:option value ="2" > 星期一
7 < html:option value ="3" > 星期二
8 < html:option value ="4" > 星期三
9 < html:option value ="5" > 星期四
10 < html:option value ="6" > 星期五
11 < html:option value ="7" > 星期六
12131415 自定義則選擇具體的日期,如 2007-1-10
三種規則都需要設定時間點
1 < tr >
2 < th > 起始時間
3 < td style ="font-weight:bold;" >
4 < html:select property ="timetype" styleid ="type" onchange ="changestatus2(this.value)" >
5 < html:option value ="am" > 上午
6 < html:option value ="pm" > 下午
78 < html:select property ="hour" styleid ="amhours" >
9 < html:option value ="1" > 1
10 < html:option value ="2" > 2
11 < html:option value ="3" > 3
12 < html:option value ="4" > 4
13 < html:option value ="5" > 5
14 < html:option value ="6" > 6
15 < html:option value ="7" > 7
16 < html:option value ="8" > 8
17 < html:option value ="9" > 9
18 < html:option value ="10" > 10
19 < html:option value ="11" > 11
20 < html:option value ="12" > 12
2122 < html:select property ="hour" styleid ="pmhours" style ="display:none" >
23 < html:option value ="13" > 13
24 < html:option value ="14" > 14
25 < html:option value ="15" > 15
26 < html:option value ="16" > 16
27 < html:option value ="17" > 17
28 < html:option value ="18" > 18
29 < html:option value ="19" > 19
30 < html:option value ="20" > 20
31 < html:option value ="21" > 21
32 < html:option value ="22" > 22
33 < html:option value ="23" > 23
34 < html:option value ="0" > 0
35 點
36 < html:text property ="minute" name ="minute" style ="width:20px;" value ="0" onchange ="valtime(this.
value)" /> 分
37 < html:text property ="second" name ="second" style ="width:20px;" value ="0" onchange ="valtime(this.
value)" /> 秒(0-59之間的整數)
383940 ok. 這樣我們的頁面設定就完成了。: - )
上回說到,我們的設定頁面已經做好了,接下來就是將時間轉換為unix cron expression。
2) 將時間轉換為unix cron expression
需要actionform將頁面表單資料對映到action中,然後在action中轉換為cron expression:
1 schedulerform schedulerform = (schedulerform) form;
2 string jobname = schedulerform.getjobname();
3 string cronexpression = "" ;
4 string commonneeds = ;
5 string monthlyneeds = ;
6 string weeklyneeds = schedulerform.getdayofweek();
7 string userdefinedneeds = schedulerform.getdate();
8 string everywhat = schedulerform.geteverywhat();
9 // 得到時間規則
10 cronexpression = cronexpconversion.getcronexpression(everywhat, commonneeds,
11 monthlyneeds, weeklyneeds, userdefinedneeds);
12 我定義了一個 規則類來處理轉換規則(寫得不是很好 能用就行 嘿嘿)
12 /**
3 * 頁面設定轉為unix cron expressions 轉換類
4 * cronexpconversion
5 */
6 public class cronexpconversion else if ( " weekly " .equals(everywhat)) else if ( " userdefined " .equals(everywhat))
47 string month = userdefinedneeds.split( " - " )[ 1 ];
48 if (month.startswith( " 0 " ))
51 string year = userdefinedneeds.split( " - " )[ 0 ];
52 // fixme 暫時不加年份 quartz報錯
53 /* cronex = (commons + dayofmonth + " " + month + " "
54 + cronexrelated.specialcharacters.get(cronexrelated._any)
55 + " " + year).trim(); */
56 cronex = (commons + dayofmonth + " " + month + " "
57 + cronexrelated.specialcharacters.get(cronexrelated._any)
58 + " " ).trim();
59 }
60 return cronex;
61 }
62 }
63 這樣就將頁面的時間設定轉為了cron expression。
書接上回,上回說到,我們已經將頁面的時間設定轉為了cron expression,下面我記錄了時間規則。
3) 記錄時間規則
我將時間規則存入資料庫中,目的是為了生成歷史日誌,也可以存入xml檔案中。當然您也可以省略此步,直接將轉換後的規則放入相應的quartz trigger中。
4) 更新任務觸發器的時間設定
到了關鍵的一步了,也是最簡單的一步,一個方法就可以實現了。
首先,我們需要通過trigger的名稱得到一個crontriggerbean;
其次,通過trigger的setcronexpression(string cronexp)方法將新的表示式注入;
最後,reschedule the job,ok!
spring容器中怎麼配置list集合
逝水流炎 jstl標籤庫考慮不?用標籤直接展現。不考慮的話可以寫一個這個input在頁面不會展現,而且後端傳過來的list可以被儲存在裡面。需要的時候通過 id val 獲取到這個list集合。直接在js 裡通過 var woshilist new arraylist woshilist repla...
如何在spring中配置定時任務
育知同創教育 在spring 中 基於註解的 定時 bai配置du很簡單,只需要三步哦,如下zhi 1 在類名前加 daocomponent註解,標記該bean,也回就是配置答掃描標記。2 在該類下的方法前加定是配置註解,schedule cron 0 30 3 新增配置檔案。關於spring定時任...
我這個配置可以吃雞嗎,畫質可以調中嗎?
在官方推薦配置裡cpu需要core i3 4340和 amd fx 6300及以上,而顯示卡需要gtx660 amd hd7850及以上就可以最低特效執行,但是值得注意的一點是,官方表明記憶體必須要6gb才能流暢執行,所以我們推薦的最低配置就以這個配置為主。請問電腦硬體詳情配置圖在 沒有看到。建議參...