何时提交或刷新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容器在“你的”方法之后为你做。