2

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

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

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

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

4

2 回答 2

2

您需要异步处理上传的文件。Servlet 假定只有在您离开 Servlet 后才会处理请求并关闭连接。如果您在 servlet 中运行处理代码,用户可能永远无法取回视图。

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

于 2012-07-31T17:54:18.180 回答
0

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

于 2013-01-15T22:43:01.580 回答