问题
According to javadoc:
in-request.getRequestDispatcher("/Test").forward(request,response);
forward should be called before the response has been committed to the client (before response body output has been flushed).Uncommitted output in the response buffer is automatically cleared before the forward.
I am getting confused when this response is committed or been flushed?
is this writing in println
of printwriter
.
回答1:
Calling flush()
on the PrintWriter
commits the response.
forward
method allows one servlet to do preliminary processing of a request and another resource to generate the response.
You can have many out.write
statements before forwarding but you can't call flush
before forwarding.
like
PrintWriter out = response.getWriter();
out.write("forwarding...\n");
rd.forward(request, response); //this is good
but if
out.write("forwarding...\n");
out.flush();
rd.forward(request, response); //this throws an exception
回答2:
No it's not. Just when you flush it manually in your code like
response.flush()
.
Normally the servlet container do it for you after "your" method.
来源:https://stackoverflow.com/questions/30749730/when-is-servlet-response-committed-or-flushed