JSP Servlet加载时的加载屏幕

6tqwzwtp  于 2023-09-28  发布在  其他
关注(0)|答案(2)|浏览(99)

我有这样一个JSP,我在其中选择某些参数并点击“提交”按钮,在点击**“提交”**后,我将调用一个JavaScript函数,如下所示

<body>
<input type=button class="button"  id = "submit" value="Evaluate" 
onclick="JavaScript:return evaluateFunction()">
</body>

evaluateFunction()中,我正在收集所有参数,并在新的弹出窗口中调用一个新的Servlet,如下所示:

<script>
function evaluateFunction(){
var win = window.open('ConfirmEvaluate?parameters,'mywindow','width=600,height=500,titlebar=no')
}
</script>

现在的问题是ConfirmEvaluate servlet需要一些时间从数据库中获取数据(大约15-20秒,基于输入的大小),并在转发的JSP中显示数据(比如userdata.jsp)现在我想在Servlet从数据库加载数据的15-20秒内显示加载GIF或屏幕。我该怎么办,任何帮助将不胜感激。
我已经在SO中经历了一些类似的问题,但没有一个有具体的答案。

clj7thdc

clj7thdc1#

这是您正在寻找的解决方案。你可以用这个例子来解决你的问题。

<script>
//when page loads, the ajax request starts
$(document).ready(function() {
    $(this).scrollTop(0);
    getposts(username);
    });

//ajax request that will show and hide the loader depending on response
 var getposts = function (username) {
     var params = {
            user: username        
        };
$.get("../GetUserFeed",$.param(params),function(responseXml) {      
        $("#user-feed").append($(responseXml).find("feed").html()); // Parse XML, find <data> element and append its HTML to HTML DOM element with ID "somediv".
        $('#logo-loader').hide();
           if(isBlank(responseXml)){
            $('#logo-loader-completed').show();
            $('#logo-loader-image').hide();
        }
    });
 };

 </script>
g6ll5ycj

g6ll5ycj2#

你必须使用 AJAX 。像您的示例中这样的Servlet请求是同步的。这意味着它将等待处理完成,然后执行下一个活动。
使用 AJAX 请求,您可以发送请求,然后执行其他操作,而不必等待它完成处理,因为它是异步的。
我会以以下方式处理这个问题:
您在ConfirmEvaluate中获取用户详细信息,并将用户重定向到userdata,然后一旦用户在页面上,就执行 AJAX 请求以获取需要很长时间处理的信息。当发出请求时,你可以显示一个加载图标,但是当你从 AJAX 请求中得到响应时,你可以隐藏这个加载图标。看看这篇关于如何制作AJAX requests with servlets的精彩文章
我最近不得不实现这样的东西,这里是一些示例代码:

<script>
//when page loads, the ajax request starts
$(document).ready(function() {
    $(this).scrollTop(0);
    getposts(username);
    });

//ajax request that will show and hide the loader depending on response
 var getposts = function (username) {
     var params = {
            user: username        
        };
$.get("../GetUserFeed",$.param(params),function(responseXml) {      
        $("#user-feed").append($(responseXml).find("feed").html()); // Parse XML, find <data> element and append its HTML to HTML DOM element with ID "somediv".
        $('#logo-loader').hide();
           if(isBlank(responseXml)){
            $('#logo-loader-completed').show();
            $('#logo-loader-image').hide();
        }
    });
 };

 </script>

相关问题