【问题标题】:Show java servlet process in web在 Web 中显示 java servlet 进程
【发布时间】:2018-07-19 06:31:38
【问题描述】:

我正在开发一个小型网络应用程序,它查询一些数据库来进行数据预测,然后返回一个带有预测结果的对象。

这已经有点工作了,但是 servlet 中的数据处理可能会超过半小时,具体取决于查询过滤器,我通常在提交时设置一个 javascript “加载” div,但这有点难过。

所以问题是,我能否在 servlet 正在处理时以某种方式向 Web 客户端发送消息,这样看起来页面就不会死掉? (使用有关流程进展的实际信息改进加载 div)

【问题讨论】:

    标签: javascript java servlets


    【解决方案1】:

    只需在发送请求之前添加预加载器,并在成功时删除该预加载器。

    var isBool = false;
    function communicateWithServer(){
        $("#preloader").show();
        var isBool = false;
        $.ajax({
            url : 'url',
            data : {
    
            },
            type : 'POST',
            dataType : 'text',
            success : function(response) {
                 isBool=true;
                 $("#preloader").hide();
                 //Show success
            },
            error : function(request, textStatus, errorThrown) {
                 $("#preloader").hide();
                 //show error
            }
        });
       secondComm();
    }
    function secondComm(){
    
        $.ajax({
                url : 'url2',//send the response from your second servlet to this
                data : {
    
                },
                type : 'POST',
                dataType : 'text',
                success : function(response) {
    
                     $("#preloader").text(response.value);
                     if(!isBool){secondComm();}
                     //
                },
                error : function(request, textStatus, errorThrown) {
                     if(!isBool){secondComm();}
                     //show error
                }
            });
    
    }
    

    请不要与jquery 混淆,您也可以不使用jquery。

    function communicateWithServer() {
      document.getElementById("preloader").style.display = 'block';
      var xhttp = new XMLHttpRequest();
      xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
          //show success
        } else {
          //show error
        }
        document.getElementById("preloader").style.display = 'none';
      };
      xhttp.open("GET", url, true);
      xhttp.send();
    }
    

    【讨论】:

    • 问题是,例如,我如何每隔几秒钟向该 ajax 帖子发送一条消息,其中包含有关处理进展情况的信息?
    • 您的意思是要发送某种百分比值吗?
    • 例如,“X clients proccessed out of 1.000.000”,每隔几秒更新一次
    • 我想你为什么不创建另一个 servlet 并在第一次通信初始化后开始与第二个通信并接收数据。我正在更新示例。
    • 更新请看
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多