我正在编写一个简单的Web应用程序,它将一些文件上传到服务器,运行一些代码,然后将生成的文件通过电子邮件发送给用户。但是,由于代码可能需要几个小时才能在用户上传某些文件后运行,我希望将它们转发到通知页面。然后,他们应该能够关闭浏览器,同时继续在服务器上处理并等待结果电子邮件。
上传文件后我有这段代码:
request.setAttribute("notification", details);
RequestDispatcher view = request.getRequestDispatcher("views/notification.jsp");
view.forward(request, response);
然后是处理代码。问题是在完成所有处理之前不会转发视图。让用户挂在表单页面上。如果用户关闭浏览器,处理仍然继续,但我想先将用户转发给通知。
答案 0 :(得分:2)
您需要异步处理上传的文件。 Servlet假定只有在离开servlet后才会提供请求并关闭连接。如果在servlet中运行处理代码,用户可能永远不会获得视图。
对于异步处理,您有几个选项,从普通线程,线程池,JMS开始...抓取文件,将其发送到后台运行的某个线程,以便处理无阻塞并立即返回视图。
答案 1 :(得分:0)
使用eclipse和netbeans创建新的servlet时,您会注意到响应对象。在线阅读,您将使用响应对象找到所有答案。