【问题标题】:when is servlet response committed or flushed?servlet 响应何时提交或刷新?
【发布时间】:2015-08-25 07:33:51
【问题描述】:

根据javadoc:

在-request.getRequestDispatcher("/Test").forward(request,response);

应该在响应提交到 客户端(在刷新响应体输出之前)。响应缓冲区中未提交的输出在转发之前会自动清除。

当这个响应被提交或被刷新时,我感到困惑?

这是在printlnprintwriter 中写的吗?

【问题讨论】:

  • 这个 Javadoc,你是从哪个类和方法中获取这个引用的?

标签: java jsp servlets forward requestdispatcher


【解决方案1】:

不,不是。 就像您在代码中手动刷新它一样

response.flush().

通常 servlet 容器会在“你的”方法之后为你完成。

【讨论】:

  • 正如你所说的Normally the servlet container do it for you after "your" method.,那么每次你在一个方法中调用forward时,这保证是未提交的。
【解决方案2】:

PrintWriter上调用flush()会提交响应。

forward 方法允许一个 servlet 对请求进行初步处理,并允许另一个资源生成响应。

您可以在转发之前拥有许多out.write 语句,但您不能在转发之前调用flush。 喜欢

PrintWriter out = response.getWriter();
out.write("forwarding...\n");
rd.forward(request, response); //this is good

但是如果

out.write("forwarding...\n");
 out.flush();
 rd.forward(request, response); //this throws an exception

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 2014-07-09
    • 2013-08-15
    • 2013-06-25
    • 2016-12-09
    • 2013-08-16
    • 2012-07-03
    相关资源
    最近更新 更多