Java 在servlet处理完成之前转发到视图

Java 在servlet处理完成之前转发到视图,java,servlets,forward,Java,Servlets,Forward,我正在编写一个简单的web应用程序,它将一些文件上传到服务器,运行一些代码,然后通过电子邮件将生成的文件发送给用户。但是,由于在用户上传了一些文件后,代码可能需要几个小时才能运行,因此我想将它们转发到通知页面。然后,他们应该能够在服务器上继续处理时关闭浏览器,并等待结果电子邮件 上传文件后,我有以下代码: request.setAttribute("notification", details); RequestDispatcher view = request.getRequestDispat

我正在编写一个简单的web应用程序,它将一些文件上传到服务器,运行一些代码,然后通过电子邮件将生成的文件发送给用户。但是,由于在用户上传了一些文件后,代码可能需要几个小时才能运行,因此我想将它们转发到通知页面。然后,他们应该能够在服务器上继续处理时关闭浏览器,并等待结果电子邮件

上传文件后,我有以下代码:

request.setAttribute("notification", details);
RequestDispatcher view = request.getRequestDispatcher("views/notification.jsp");
view.forward(request, response);

然后处理代码如下。问题是,在所有处理完成之前,视图不会被转发。让用户挂起在表单页面上。如果用户关闭浏览器,处理仍将继续,但我希望先将用户转发到通知。

您需要异步处理上载的文件。servlet假定只有在您离开servlet之后,请求才会得到服务,连接才会关闭。如果您在servlet中运行处理代码,用户可能永远无法获得视图


对于异步处理,您有几个选项,从普通线程、线程池、JMS。。。抓取文件,将其发送到后台运行的某个线程,以便处理不会阻塞,并立即返回视图。

使用eclipse和netbeans创建新servlet时,您将注意到响应对象。在线阅读,您将使用response对象找到所有答案。

谢谢您的建议。我曾想过使用线程,但我对它知之甚少。您有什么建议或资源需要我参考吗?@Ryion:请阅读一般信息,然后查看
ExecutorService