java - 在 servlet 处理完成之前转发到 View

标签 java servlets forward

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

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

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

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

最佳答案

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

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

关于java - 在 servlet 处理完成之前转发到 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11746046/

相关文章:

configuration - 如何通过一个端口为 Jetty 提供 https 和 http 服务

java - 如何在用户浏览器中更改 url 而无需在 servlet 中进行客户端重定向

java - 如何在Java中添加一系列数字

java - Hibernate 实体类映射到两个不同的表

java - 我应该为 Servlet 的所有 doGet/doPost 调用实例化一个共享 Gson 对象吗?

html - 另一个窗口中的 Spring 响应 OutputStream

java - Java Web 技术中的 AJAX 自动完成文本框(JSP 和 servlet)

php - 基于PHP转发域名邮箱

java - 如何强制RestController响应csv文件

java - 为页面中的框架实现 PageObjects 模式