基本思路:
1. 操作狀態在類中以靜態變量方式(或公共類存儲公共變量方式,SESSION方式、COOKIE方式)存在
2. 前台采用AJAX方式激發后台進行業務邏輯操作,並實時更新操作狀態信息
3. 前台定時取后台操作狀態並顯示
4. 在獲取最后操作結果后結束定時器
示例:
1. 前台采用進度條方式進行顯示,定義如下
<div id="progressbarShow" data-toggle="topjui-progressbar"></div>
2. 后台設置操作狀態,以靜態變量方式為例
private static int value = 0; private static String msg = "";
3. 后台業務邏輯實時更新操作狀態,如
private String test() { //重置操作狀態 value = 0; msg = "reading"; // 設置操作返回值 JSONObject jsonObject = new JSONObject(); jsonObject.put("title", "提示信息"); try { //循環業務邏輯代碼; value = *****; msg = ******; //循環任務結束 jsonObject.put("statusCode", 200); jsonObject.put("message", "操作成功"); } catch (InterruptedException e) { e.printStackTrace(); jsonObject.put("statusCode", 300); jsonObject.put("message", "操作失敗"); } return jsonObject.toString(); }
4. 后台實時監控方法,如
private String checkStatus() { JSONObject jsonObject = new JSONObject(); jsonObject.put("value", value); jsonObject.put("msg", msg); return jsonObject.toString(); }
5. 前台調用並實時監控,如
// 設置定時器 var testTimer; // 關閉定時器 clearInterval(testTimer); // 開啟定時器實時監控 testTimer = setInterval(function(){ loadProcess(); }, 500); // 實時監控程序 function loadProcess(){ $.getJSON("indexHandle.jsp?flags=checkStatus", function (data) { $('#progressbarShow').iProgressbar('setValue', data.value); }); } // 激發后台業務邏輯處理 $.getJSON("indexHandle.jsp?flags=test", function (data) { if(data.statusCode){ // 操作成功后相關處理 } else { // 操作失敗后相關處理 } // 重置進度條狀態 $('#progressbarShow').iProgressbar('setValue',0); // 關閉定時器 clearInterval(testTimer); });