когда происходит фиксация или сброс ответа сервлета?
Согласно javadoc:
В-request.getRequestDispatcher("/Test").forward(request,response);
Переадресация должна быть вызвана до того, как ответ был зафиксирован в клиент (до того, как вывод тела ответа был промыт).Незафиксированный вывод в буфере ответов автоматически очищается перед пересылкой.
Я начинаю путаться, когда этот ответ зафиксирован или был смыт?
- это запись в println
из printwriter
.
2 ответа:
Вызов
flush()
наPrintWriter
фиксирует ответ.
forward
метод позволяет одному сервлету выполнять предварительную обработку запроса, а другому ресурсу-генерировать ответ.Вы можете иметь много операторов
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