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