java - 在请求 Dispatcher.forward 方法之后从另一个 Servlet 调用一个 Servlet

标签 java jsp servlets

我正在使用 java servlet 编写网页。当用户订阅时,他将收到一封包含激活链接的电子邮件。目前,servlet 在发送电子邮件后将用户(使用请求调度程序)重定向到感谢页面,这需要一些时间。我想在创建和发送电子邮件之前将用户重定向到页面,然后由另一个 servlet 执行电子邮件创建,而无需用户等待。这可能吗?使用 request Dispatcher.forward 方法后,如何从另一个 servlet 中调用 servlet?那可能吗?如果不是,那么做我想做的事的最佳方法是什么?谢谢。

最佳答案

您的问题实际上有两个不同的问题:

  • 您想重定向到另一个页面
  • 您想在重定向后继续处理

从 servlet 重定向到另一个 URL 很简单,只需调用:

response.sendRedirect("url?param=value");

对于第二部分,似乎可以在将响应发送到客户端之后继续在 servlet 中进行处理。根据我对 Tomcat 7 servlet 容器的测试,如果 ContentLength 设置为 0(因为正文为空)并且输出流关闭,则可以执行此操作。我永远无法从 servlet 规范中得到确认,但正如我上面所写的,它可以在 Tomcat 上运行:

response.sendRedirect("url?param=value");
response.setContentLength(0);
response.getOutputStream().close();
// continue after connection with client is closed
// generate and send email

关于java - 在请求 Dispatcher.forward 方法之后从另一个 Servlet 调用一个 Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25854077/

相关文章:

Java swing 应用程序不工作

java - 使用 while 循环将多个 LinearLayout 添加到 ScrollView 中

jsp - 使用 authToken 连接到 GTalk 服务器(XMPP、Smack)

grails - Grails:按名称查找域类

java - 使用servlet在新窗口中打开pdf文件

java - 在 jboss 中从本地硬盘提供静态内容作为 7

java - 如何为类层次结构配置 Orika classMap?

java - 如何在 CQ5 中执行 JSP 之前调用 Servlet/Filter?

javascript - 在jsp中将Dropdown字段设置为必填字段

java - 如何运行每月向客户发送一次账单的程序?