когда происходит фиксация или сброс ответа сервлета?
Согласно 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