JAVA WEB 前台实时监控后台程序运行

基本思路:

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);
    });
posted @ 2019-04-29 02:37  醉黑泥  阅读(4329)  评论(0编辑  收藏  举报