我正在使用 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/