我有这个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中经历过一些类似的问题,但他们都没有得到具体答案。
答案 0 :(得分:0)
你必须使用AJAX。像示例中的Servlet请求是同步的。这意味着它将等待处理完成然后执行下一个活动。
使用AJAX请求,您可以发送请求,然后执行其他操作而无需等待它完成处理,因为它是异步的。
我接近这个的方式是通过以下方式:
您在ConfirmEvaluate中获取用户详细信息,并将用户重定向到userdata,然后一旦用户在页面上,就执行AJAX请求以获取需要很长时间处理的信息。发出请求后,您可以显示加载图标,但是当您收到来自AJAX请求的响应时,您可以隐藏此加载图标。查看有关如何制作AJAX requests with servlets
的精彩文章我最近必须实现这样的东西,下面是一些示例代码:
Returns
(Function): A reducer that invokes every reducer inside the reducers object, and constructs a state object with the same shape.