我希望用户发帖,处理帖子中的数据并将请求转发到 jsp 页面。 jsp 页面被发送回用户,然后服务器应该完成一项工作。这项工作需要花费大量时间,因此用户不应等待。
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
//... get posted data ...
request.getRequestDispatcher("/page.jsp").forward(request, response);
//do-someting
}
我希望在连接关闭并且用户获得 page.jsp 后完成“做某事”。当然,“做某事”完全是服务器端的,比如更新数据库等。所以即使在用户离开页面后,服务器也会继续工作。在转发到 jsp 页面后,我试图刷新并关闭 servlet 中的输出流,但这会导致异常。 jsp 页面中的刷新和关闭也会导致异常。我该怎么做?
最佳答案
如果您的工作(做某事)完全独立于应该在 jsp 中显示的内容,那么您可以使用以下之一:
- 计时器
- 一个线程(在线程池中)
- 一个更强大的库,如 Quartz这将为您提供强大的调度功能
关于java - 在 servlet 中关闭 http 连接后执行作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12414811/