Servlets doGet()或doPost()是否需要完全执行才能发送响应,还是在writer.print()上立即发送响应?

Servlets doGet()或doPost()是否需要完全执行才能发送响应,还是在writer.print()上立即发送响应?,servlets,httpresponse,Servlets,Httpresponse,我已经为正在使用的web服务编写了回调。该服务向我的web应用发送请求,并要求我在3秒内发送响应 我从doPost()方法内部调用了两个方法。 我想做的是在其中一个方法执行后返回响应,然后执行第二个方法 这是我尝试做的一个例子- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

我已经为正在使用的web服务编写了回调。该服务向我的web应用发送请求,并要求我在3秒内发送响应

我从doPost()方法内部调用了两个方法。 我想做的是在其中一个方法执行后返回响应,然后执行第二个方法

这是我尝试做的一个例子-

protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        PrintWriter writer = response.getWriter();
        try {
            this.doSomething();

            writer.print("200 - OK");
            writer.flush();
            writer.close();

        } catch (Exception e) {

            writer.print("400 - Bad Request");
            writer.flush();
            writer.close();
        }

        this.doSomeThingElse();

    }
允许这样做吗?还是在doPost()方法完全执行后发送响应


另外,servlet生成以处理请求的线程在什么情况下被阻塞?(即,它不会返回到线程池)

允许调用
doSomethingElse()
。但是,由于您调用了
writer.close()

,因此无法使用此方法(或更高版本)将某些数据发送到客户端,谢谢您的研究!您能告诉我servlet生成的用于处理请求的线程在什么情况下被阻塞吗?(即,它不会返回到线程池)对不起,我对servlet线程不是很熟悉。也许你能帮上忙。