如何在servlet完成其工作时设置中间(等待/处理)页面

use*_*192 1 redirect jsp servlets

我们正在使用Java JSP/Servlet技术.当用户在我们的网站上提交表单时,表单由servlet处理,需要5到15秒才能完成其工作并将结果发送回浏览器.如何设置一个中间页面,告诉用户正在处理请求并要求用户在结果显示之前等待一段时间?

我猜测中间页面将有一个元标记或使用javascript检查并定期查看结果是否可用.

但是,如果servlet已经重定向到中间(等待)页面,我不知道servlet将如何完成它的工作?servlet是否需要在处理用户请求的服务器上启动新线程,然后立即将用户重定向到等待页面?或者,还有更好的方法?

我知道我可以使用AJAX.但我想知道如果不使用AJAX我能做到这一点.

Bal*_*usC 5

我不会这么做的.这将涉及令人讨厌的会话黑客/令牌/重定向.

我只是使用JavaScript在按下提交按钮时显示一些动画gif.

<input type="submit" value="submit" 
    onclick="document.getElementById('loader').style.display = 'block';">
...
<img id="loader" src="loader.gif" style="display: none;" />
Run Code Online (Sandbox Code Playgroud)

在Servlet代码,就没有设置响应标头和/或写入/冲洗的第一位到响应身体之前完成的长时间运行的过程.否则页面将立即消隐.换句话说,你不能HttpServletResponse,直到长期运行过程中以任何方式真的完了.这样,带有动画gif的原始表单将尽可能长地呈现给最终用户.