基本思路:
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); });