1. 目的:动态设置时间,触发相应的任务
2. 系统架构为 struts + spring + hibernate
3. 实现步骤:
-
在页面上设置时间;
-
将时间转换为Unix Cron Expression;
-
将转换后的时间规则表达式记录到数据库中(也可以写入xml文件中,这里是项目需要记录入数据库中);
-
从数据库中得到相应的时间规则表达式;
-
更新您的任务触发器的时间设置;
-
RESCHEDULE THE JOB。; - )
4. 具体实现细节:
1) 在页面上设置时间
根据具体的业务需求,设置时间规则,下面以某一项目为例,需要
按每月、每周、自定义分为三种规则。
每月则需要选择该月的第几个星期的星期几
每周则需要选择星期几
自定义则选择具体的日期,如 2007-1-10
三种规则都需要设定时间点
OK. 这样我们的页面设置就完成了。: - )
上回说到,我们的设置页面已经做好了,接下来就是将时间转换为Unix Cron Expression。
2) 将时间转换为Unix Cron Expression
需要ActionForm将页面表单数据映射到Action中,然后在Action中转换为cron expression:
1
<
tr
>
2
<
th
>
执行这个任务
</
th
>
3
<
td
style
="font-weight:bold;"
>
4
<
html:radio
property
="everyWhat"
styleClass
="InputBorderNone"
value
="monthly"
onclick
="changeStatus(this.value)"
>
每月
</
html:radio
>
5
<
html:radio
property
="everyWhat"
styleClass
="InputBorderNone"
value
="weekly"
onclick
="changeStatus(this.value)"
>
每周
</
html:radio
>
6
<
html:radio
property
="everyWhat"
styleClass
="InputBorderNone"
value
="userDefined"
onclick
="changeStatus(this.value)"
>
自定义
</
html:radio
>
7
<
html:hidden
property
="jobName"
value
="compare"
/>
8
</
td
>
9
</
tr
>
10
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
2
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
3
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
4
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
5
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
6
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
7
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
8
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
9
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
10
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
每月则需要选择该月的第几个星期的星期几
1
<
tr
style
="display:"
id
="whichWeek"
>
2
<
th
>
选择第几个星期
</
th
>
3
<
td
style
="font-weight:bold;"
>
4
<
html:select
property
="week"
>
5
<
html:option
value
="1"
>
一
</
html:option
>
6
<
html:option
value
="2"
>
二
</
html:option
>
7
<
html:option
value
="3"
>
三
</
html:option
>
8
<
html:option
value
="4"
>
四
</
html:option
>
9
</
html:select
>
10
<
html:select
property
="dayOfMonth"
>
11
<
html:option
value
="1"
>
星期日
</
html:option
>
12
<
html:option
value
="2"
>
星期一
</
html:option
>
13
<
html:option
value
="3"
>
星期二
</
html:option
>
14
<
html:option
value
="4"
>
星期三
</
html:option
>
15
<
html:option
value
="5"
>
星期四
</
html:option
>
16
<
html:option
value
="6"
>
星期五
</
html:option
>
17
<
html:option
value
="7"
>
星期六
</
html:option
>
18
</
html:select
>
19
</
td
>
20
</
tr
>
21
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
2
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
3
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
4
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
5
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
6
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
7
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
8
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
9
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
10
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
11
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
12
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
13
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
14
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
15
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
16
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
17
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
18
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
19
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
20
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
21
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
每周则需要选择星期几
1
<
tr
style
="display:none"
id
="whichDay"
>
2
<
th
>
选择星期
</
th
>
3
<
td
style
="font-weight:bold;"
>
4
<
html:select
property
="dayOfWeek"
>
5
<
html:option
value
="1"
>
星期日
</
html:option
>
6
<
html:option
value
="2"
>
星期一
</
html:option
>
7
<
html:option
value
="3"
>
星期二
</
html:option
>
8
<
html:option
value
="4"
>
星期三
</
html:option
>
9
<
html:option
value
="5"
>
星期四
</
html:option
>
10
<
html:option
value
="6"
>
星期五
</
html:option
>
11
<
html:option
value
="7"
>
星期六
</
html:option
>
12
</
html:select
>
13
</
td
>
14 </ tr >
15
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
2
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
3
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
4
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
5
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
6
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
7
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
8
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
9
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
10
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
11
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
12
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
13
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
14 </ tr >
15
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
自定义则选择具体的日期,如 2007-1-10
三种规则都需要设定时间点
1
<
tr
>
2
<
th
>
起始时间
</
th
>
3
<
td
style
="font-weight:bold;"
>
4
<
html:select
property
="timeType"
styleId
="type"
onchange
="changeStatus2(this.value)"
>
5
<
html:option
value
="AM"
>
上午
</
html:option
>
6
<
html:option
value
="PM"
>
下午
</
html:option
>
7
</
html:select
>
8
<
html:select
property
="hour"
styleId
="amHours"
>
9
<
html:option
value
="1"
>
1
</
html:option
>
10
<
html:option
value
="2"
>
2
</
html:option
>
11
<
html:option
value
="3"
>
3
</
html:option
>
12
<
html:option
value
="4"
>
4
</
html:option
>
13
<
html:option
value
="5"
>
5
</
html:option
>
14
<
html:option
value
="6"
>
6
</
html:option
>
15
<
html:option
value
="7"
>
7
</
html:option
>
16
<
html:option
value
="8"
>
8
</
html:option
>
17
<
html:option
value
="9"
>
9
</
html:option
>
18
<
html:option
value
="10"
>
10
</
html:option
>
19
<
html:option
value
="11"
>
11
</
html:option
>
20
<
html:option
value
="12"
>
12
</
html:option
>
21
</
html:select
>
22
<
html:select
property
="hour"
styleId
="pmHours"
style
="display:none"
>
23
<
html:option
value
="13"
>
13
</
html:option
>
24
<
html:option
value
="14"
>
14
</
html:option
>
25
<
html:option
value
="15"
>
15
</
html:option
>
26
<
html:option
value
="16"
>
16
</
html:option
>
27
<
html:option
value
="17"
>
17
</
html:option
>
28
<
html:option
value
="18"
>
18
</
html:option
>
29
<
html:option
value
="19"
>
19
</
html:option
>
30
<
html:option
value
="20"
>
20
</
html:option
>
31
<
html:option
value
="21"
>
21
</
html:option
>
32
<
html:option
value
="22"
>
22
</
html:option
>
33
<
html:option
value
="23"
>
23
</
html:option
>
34
<
html:option
value
="0"
>
0
</
html:option
>
35
</
html:select
>
点
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之间的整数)
38
</
td
>
39
</
tr
>
40
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
2
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
3
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
4
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
5
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
6
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
7
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
8
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
9
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
10
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
11
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
12
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
13
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
14
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
15
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
16
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
17
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
18
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
19
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
20
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
21
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
22
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
23
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
24
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
25
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
26
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
27
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
28
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
29
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
30
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
31
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
32
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
33
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
34
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
35
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
36
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
37
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
38
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
39
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
40
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
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![](https://i-blog.csdnimg.cn/blog_migrate/1fa987a29c6482f53d401256f96355eb.gif)
String[] commonNeeds
=
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
2
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
3
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
4
![](https://i-blog.csdnimg.cn/blog_migrate/1fa987a29c6482f53d401256f96355eb.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/ca75c07623e1b494fee67e8f316fc310.gif)