如何向服务器提交请求而不需要响应

目标:生成excel报告。 我点击从UI提交button后,调用一个控制器(JAVA)。 之后,我使用过程填充数据,并在服务层进行操作,这需要很长时间,由于我在UI(服务器上有一些负载量)的网关超时错误。 所以,现在我打算从UI调用控制器并告诉用户excel报告将通过电子邮件发送给您,以便用户不会在该屏幕上等待报告。

您可以使用@Async注释使用spring来执行asynchronous任务。 更多的细节你可以在spring看看第25.5.2节。

一旦用户提交来自用户界面的请求,只需从你的控制器input数据库中的信息,并向用户发出信息,说:“我们已经收到你的请求,而且Excel将通过电子邮件发送给你”。

现在在后台有正在运行的工作,你可以使用Thread在服务器端写这个工作,或者更好的使用Spring Batch。 这项工作将做以下

1)这将持续运行的线程,这将检查是否有任何新的条目在这个表中的用户界面,通过一些标志或者你可以find这个。

2)这项工作将生成excel文件和电子邮件给客户

3)一旦文件通过电子邮件发送,在数据库中更新flag = false,以便下一次该作业将仅用于下一次处理的flag = falselogging。

创build一个Java程序,将填充您的Excel表和其他的东西。 然后在你的servlet中使用

 Process p=Runtime.getRuntime().exec(/*run your java program */); 

这将创build一个并行进程,您的servlet将结束