我有这样一个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中经历了一些类似的问题,但没有一个有具体的答案。
2条答案
按热度按时间clj7thdc1#
这是您正在寻找的解决方案。你可以用这个例子来解决你的问题。
g6ll5ycj2#
你必须使用 AJAX 。像您的示例中这样的Servlet请求是同步的。这意味着它将等待处理完成,然后执行下一个活动。
使用 AJAX 请求,您可以发送请求,然后执行其他操作,而不必等待它完成处理,因为它是异步的。
我会以以下方式处理这个问题:
您在ConfirmEvaluate中获取用户详细信息,并将用户重定向到userdata,然后一旦用户在页面上,就执行 AJAX 请求以获取需要很长时间处理的信息。当发出请求时,你可以显示一个加载图标,但是当你从 AJAX 请求中得到响应时,你可以隐藏这个加载图标。看看这篇关于如何制作AJAX requests with servlets的精彩文章
我最近不得不实现这样的东西,这里是一些示例代码: