如何在不需要响应的情况下向服务器提交请求

时间:2012-11-09 08:24:25

标签: java javascript excel spring-mvc

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

3 个答案:

答案 0 :(得分:0)

用户提交来自用户界面的请求后,只需在您的控制器中输入数据库,并向用户发送消息“我们已收到您的请求,并且将通过电子邮件发送给您”。

现在在后台有正在运行的作业,您可以使用Thread在服务器端编写此作业或更好地使用Spring Batch。这项工作将遵循以下

1)这将是持续运行的线程,它将检查此表中的UI是否有任何新条目,通过一些标志或者你可以找到它。

2)此作业将生成excel文件并通过电子邮件发送给客户

3)一旦通过电子邮件发送文件,请在数据库中更新flag = false,以便下次此作业只接受flag = false记录以供下次处理。

答案 1 :(得分:0)

创建一个java程序,用于填充excel表和其他内容。然后在你的servlet中使用

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

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

答案 2 :(得分:0)

您可以使用具有@Async注释的spring执行异步任务。有关详细信息,您可以在春季查看25.5.2部分。