何时提交或刷新servlet响应?

根据javadoc:

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

应该在将响应提交给客户端之前调用forward(在刷新响应主体输出之前)。响应缓冲区中的未提交输出在转发之前自动清除。

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

这是printwriter println写的。

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 

不,这不对。 就像你在代码中手动刷新它一样

response.flush()

通常,servlet容器在“你的”方法之后为你做。