一、cron表達式簡單介紹和下載 1、在上一篇博客“Quartz.net 定時任務之簡單任務”中,我簡單介紹了quartz的使用,而這篇博客我將介紹cron的具體使用(不足之處望大神斧正) 1、cron是為了方便編寫定時執行作業時間擴展出來的插件,這個有很多版本(網頁版,窗體版等),cron表達式的 ...
一、cron表達式簡單介紹和下載
1、在上一篇博客“Quartz.net 定時任務之簡單任務”中,我簡單介紹了quartz的使用,而這篇博客我將介紹cron的具體使用(不足之處望大神斧正)
1、cron是為了方便編寫定時執行作業時間擴展出來的插件,這個有很多版本(網頁版,窗體版等),cron表達式的存在,從而大大減低設置作業人員的操作難度和開發人員的編寫難度。
2、cron表達式下載地址:https://www.oschina.net/code/snippet_98719_23426 下載下來之後,我打開頁面我們會看到如下的界面 (為網頁版)
註:如果網頁路徑失效,或者下載失敗的碼友,請不要著急,繼續往下看
二、cron表達式的使用
1、在網上也看到了很多關於cron的使用說明的文章(在此感謝各位好心分享的大神),運用cron表達式有2個關鍵的地方
(1)、cron的怎麼使用到項目中?
(2)、cron表達式怎麼反解析到對應的輸入框中?
2、cron運用到項目中和反解析
(1)、在上一篇博客中,我簡單介紹了quartz的使用,從而會有一些小bug和美觀不足的缺點,在編寫這篇博客之前我做了小小的美化,如下圖
註:模板是使用的layer後臺框架 模板編寫者:Layui_初學者
laery下載地址:http://layer.layui.com/
(2)、這次美化之後後臺的架構也做了小小的變化。下麵截圖說明
(3)、把下載好的layer放在Js->lib->layer文件夾下 說明Js->lib文件夾下放了jquery 這裡不做介紹
(4)、好了回歸正題,在大家在上面的截圖可以看出,下載下來的Cron表達式存放路徑是在Content->Cron 路徑,下麵我們需要一個容器來放cron的頁面,建立控制器(Quartz)如下
可以看到在quartz控制器裡面我們建立了2個視圖 CronUse 視圖、SetCron視圖,不難看出兩個視圖的作用 CronUse視圖是我們使用Cron的視圖,SetCron是我們設置Cron的視圖
(5)、2個視圖分別建好之後,我們在CronUse視圖編寫如下代碼

1 @{ 2 ViewBag.Title = "Cron的使用"; 3 Layout = "~/Views/Shared/_Layout.cshtml"; 4 } 5 <link href="~/Content/BeginnerAdmin/plugins/layui/css/layui.css" rel="stylesheet" /> 6 <link href="~/Content/BeginnerAdmin/css/global.css" rel="stylesheet" /> 7 <script src="~/Js/lib/jquery-3.2.1/jquery-3.2.1.js"></script> 8 <script src="~/Js/lib/layer/layer.js"></script> 9 <script src="~/Js/lib/jquery-3.2.1/jquery-3.2.1.min.js"></script> 10 11 12 <div class="layui-form-item"> 13 <label class="layui-form-label">Cron表達式</label> 14 <div class="layui-input-block" style="width:200px"> 15 <input type="text" id="Cron" name="title" onclick="SetCron()" required lay-verify="required" placeholder="點擊設置Cron表達式" autocomplete="off" class="layui-input"> 16 </div> 17 </div> 18 19 <fieldset class="layui-elem-field site-demo-button"> 20 <legend>任務控制區</legend> 21 <div> 22 <button id="OpenTask" class="layui-btn">開啟任務</button> 23 <button id="CloseTask" class="layui-btn layui-btn-danger">關閉任務</button> 24 </div> 25 </fieldset> 26 27 <script type="text/javascript"> 28 function SetCron() { 29 layer.open({ 30 type: 2, 31 area: ['870px', '660px'], 32 fixed: false, //不固定 33 maxmin: true, 34 content: '/Quartz/SetCron' 35 }); 36 // window.open("/Quartz/SetCron", "", "top=100,left=300,width=870,height=660"); 37 } 38 39 $(document).ready(function () { 40 $("#OpenTask").click(function () { 41 var cron = $("#Cron").val(); 42 if (cron === '') { 43 layer.tips('請設置Cron表達式', '#Cron', { 44 tips: 3 45 }); 46 return false; 47 } 48 $.ajax({ 49 url: "CronQuartzs", 50 type: 'post', 51 data: { cron: cron }, 52 dataType: "json", 53 async: "false", 54 success: function (data) { 55 if (data.ResultSign === 0) { 56 layer.alert("開啟成功"); 57 } else { 58 layer.alert("開啟失敗--" + "錯誤信息:" + data.Message); 59 } 60 } 61 }); 62 }); 63 $("#CloseTask").click(function () { 64 $.ajax({ 65 url: "CloseTask", 66 type: 'post', 67 data: {}, 68 dataType: "json", 69 async: "false", 70 success: function (data) { 71 if (data.ResultSign === 0) { 72 layer.alert("關閉成功"); 73 } else { 74 layer.alert("關閉失敗--" + "錯誤信息:" + data.Message); 75 } 76 } 77 }); 78 }); 79 }); 80 </script>View Code
(6)、在SetCron視圖編寫如下代碼

1 @{ 2 ViewBag.Title = "設置Cron"; 3 Layout = null; 4 } 5 6 <!DOCTYPE html> 7 <html> 8 <head> 9 <title>Cron表達式生成器</title> 10 <link href="~/Content/Cron/easyui.css" rel="stylesheet" type="text/css" /> 11 <link href="~/Content/Cron/icon.css" rel="stylesheet" type="text/css" /> 12 <script src="~/Js/lib/jquery-3.2.1/jquery-3.2.1.min.js"></script> 13 <script src="~/Content/Cron/jquery.easyui.min.js" type="text/javascript"></script> 14 <script src="~/Content/Cron/cron.js" type="text/javascript"></script> 15 <script src="~/Js/lib/layer/layer.js"></script> 16 <style type="text/css"> 17 .line { 18 height: 25px; 19 line-height: 25px; 20 margin: 3px; 21 } 22 23 .imp { 24 padding-left: 25px; 25 } 26 27 .col { 28 width: 95px; 29 } 30 </style> 31 @*來源於http://jason.hahuachou.com/cron/index.htm網站,並下載源代碼。*@ 32 </head> 33 <body> 34 35 <center> 36 <div class="easyui-layout" style="width: 830px; height: 540px; border: 1px rgb(202, 196, 196) solid; 37 border-radius: 5px;"> 38 <div style="height: 100%;"> 39 <div class="easyui-tabs" data-options="fit:true,border:false"> 40 <div title="秒"> 41 <div class="line"> 42 <input type="radio" checked="checked" name="second" onclick="everyTime(this)"> 43 每秒 允許的通配符[, - * /] 44 </div> 45 <div class="line"> 46 <input type="radio" name="second" onclick="cycle(this)"> 47 周期從 48 <input class="numberspinner" style="width: 60px;" data-options="min:1,max:58" value="1" 49 id="secondStart_0"> 50 - 51 <input class="numberspinner" style="width: 60px;" data-options="min:2,max:59" value="2" 52 id="secondEnd_0"> 53 秒 54 </div> 55 <div class="line"> 56 <input type="radio" name="second" onclick="startOn(this)"> 57 從 58 <input class="numberspinner" style="width: 60px;" data-options="min:0,max:59" value="0" 59 id="secondStart_1"> 60 秒開始,每 61 <input class="numberspinner" style="width: 60px;" data-options="min:1,max:59" value="1" 62 id="secondEnd_1"> 63 秒執行一次 64 </div> 65 <div class="line"> 66 <input type="radio" name="second" id="sencond_appoint"> 67 指定每分鐘在第幾秒執行 68 </div> 69 <div class="imp secondList"> 70 <input type="checkbox" value="1">01 71 <input type="checkbox" value="2">02 72 <input type="checkbox" value="3">03 73 <input type="checkbox" value="4">04 74 <input type="checkbox" value="5">05 75 <input type="checkbox" value="6">06 76 <input type="checkbox" value="7">07 77 <input type="checkbox" value="8">08 78 <input type="checkbox" value="9">09 79 <input type="checkbox" value="10">10 80 </div> 81 <div class="imp secondList"> 82 <input type="checkbox" value="11">11 83 <input type="checkbox" value="12">12 84 <input type="checkbox" value="13">13 85 <input type="checkbox" value="14">14 86 <input type="checkbox" value="15">15 87 <input type="checkbox" value="16">16 88 <input type="checkbox" value="17">17 89 <input type="checkbox" value="18">18 90 <input type="checkbox" value="19">19 91 <input type="checkbox" value="20">20 92 </div> 93 <div class="imp secondList"> 94 <input type="checkbox" value="21">21 95 <input type="checkbox" value="22">22 96 <input type="checkbox" value="23">23 97 <input type="checkbox" value="24">24 98 <input type="checkbox" value="25">25 99 <input type="checkbox" value="26">26 100 <input type="checkbox" value="27">27 101 <input type="checkbox" value="28">28 102 <input type="checkbox" value="29">29 103 <input type="checkbox" value="30">30 104 </div> 105 <div class="imp secondList"> 106 <input type="checkbox" value="31">31 107 <input type="checkbox" value="32">32 108 <input type="checkbox" value="33">33 109 <input type="checkbox" value="34">34 110 <input type="checkbox" value="35">35 111 <input type="checkbox" value="36">36 112 <input type="checkbox" value="37">37 113 <input type="checkbox" value="38">38 114 <input type="checkbox" value="39">39 115 <input type="checkbox" value="40">40 116 </div> 117 <div class="imp secondList"> 118 <input type="checkbox" value="41">41 119 <input type="checkbox" value="42">42 120 <input type="checkbox" value="43">43 121 <input type="checkbox" value="44">44 122 <input type="checkbox" value="45">45 123 <input type="checkbox" value="46">46 124 <input type="checkbox" value="47">47 125 <input type="checkbox" value="48">48 126 <input type="checkbox" value="49">49 127 <input type="checkbox" value="50">50 128 </div> 129 <div class="imp secondList"> 130 <input type="checkbox" value="51">51 131 <input type="checkbox" value="52">52 132 <input type="checkbox" value="53">53 133 <input type="checkbox" value="54">54 134 <input type="checkbox" value="55">55 135 <input type="checkbox" value="56">56 136 <input type="checkbox" value="57">57 137 <input type="checkbox" value="58">58 138 <input type="checkbox" value="59">59 139 </div> 140 </div> 141 <div title="分鐘"> 142 <div class="line"> 143 <input type="radio" checked="checked" name="min" onclick="everyTime(this)"> 144 分鐘 允許的通配符[, - * /] 145 </div> 146 <div class="line"> 147 <input type="radio" name="min" onclick="cycle(this)"> 148 周期從 149 <input class="numberspinner" style="width: 60px;" data-options="min:1,max:58" value="1" 150 id="minStart_0"> 151 - 152 <input class="numberspinner" style="width: 60px;" data-options="min:2,max:59" value="2" 153 id="minEnd_0"> 154 分鐘 155 </div> 156 <div class="line"> 157 <input type="radio" name="min" onclick="startOn(this)"> 158 從 159 <input class="numberspinner" style="width: 60px;" data-options="min:0,max:59" value="0" 160 id="minStart_1"> 161 分鐘開始,每 162 <input class="numberspinner" style="width: 60px;" data-options="min:1,max:59" value="1" 163 id="minEnd_1"> 164 分鐘執行一次 165 </div> 166 <div class="line"> 167 <input type="radio" name="min" id="min_appoint"> 168 指定每小時在第幾分執行 169 </div> 170 <div class="imp minList"> 171 <input type="checkbox" value="1">01 172 <input type="checkbox" value="2">02 173 <input type="checkbox" value="3">03 174 <input type="checkbox" value="4">04 175