【问题标题】:Is it necessary for doGet() or doPost() to execute completely in order to send a response or is a response sent immediately on writer.print()?doGet() 或 doPost() 是否需要完全执行才能发送响应,或者是否立即在 writer.print() 上发送响应?
【发布时间】:2016-03-10 05:42:04
【问题描述】:

我已经为我正在使用的 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 生成的用于处理请求的线程会被阻塞? (即不返回线程池)

【问题讨论】:

    标签: servlets httpresponse


    【解决方案1】:

    允许调用doSomethingElse()。但是你不能在这个方法(或以后)中向客户端发送一些数据,因为你调用了writer.close()

    【讨论】:

    • 感谢您对此进行调查!您能告诉我 servlet 为处理请求而生成的线程在什么情况下会被阻塞? (即不返回线程池)
    • 对不起,我对 servlet 线程不是很熟悉。或许this topic可以帮到你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 2013-06-01
    相关资源
    最近更新 更多