如何在jsp和servlet中向客户端发送响应后运行进程?

时间:2014-09-07 01:45:24

标签: java jsp servlets

我有一个动态Web项目(JSP和Servlet):

  1. 客户端将文件上传到服务器
  2. 保存客户端文件
  3. 显示“您的结果将在大约1小时内生效,我们会将结果发送到您的电子邮箱。”
  4. 处理客户端的文件
  5. 将结果发送到客户的电子邮箱。
  6. 我该怎么做(4)?

2 个答案:

答案 0 :(得分:0)

您可以使用异步流程。您可以使用Quartz之类的调度程序在后台执行任务。

答案 1 :(得分:0)

如果您使用的是Servlet 3.0,则可以使用其异步功能。 e.g:

@WebServlet(urlPatterns={"/processFile"}, asyncSupported=true)
@MultipartConfig
public class CorreoServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        // (2) Save client's file
        final Part filePart = request.getPart("file"); // <input name="file" ...

        ...

        AsyncContext asyncContext = req.startAsync();
        asyncContext.start(new Runnable() {
            @Override
            public void run() {
                // (4) Process client's file
                // (5) Send result to client's email.
            }
        });

        // (3) Show "Your result will ...

    }

}

也许你想看看: