我耗时约5分钟,它会每秒输出结果,我想将进度显示给客户端浏览器。
这就是我的想法:
创建一个servlet,doPost方法将调用该函数并继续在后台运行,并在进度期间将输出写入会话。
servlet doGet方法将返回我保存在会话中的输出,并编写客户端JavaScript以每5秒获取一次输出,直到结束。
但是使用这种方法,对doPost的第一个请求将挂起客户端,因为servlet不会关闭连接。在调用任务之前,我尝试冲洗并关闭打印机,但是连接仍然打开。
尽管我可以在ajax中设置超时并让我的获取结果代码运行,但是我认为这是一种非常肮脏的方式。
也许我整个事情做错了。
总结:
我想要的是客户端请求可以触发任务运行,客户端将实时获取进度。