Когда ответ сервлета передается или сбрасывается?

Согласно 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(),

Обычно контейнер сервлетов делает это за вас после "вашего" метода.

Другие вопросы по тегам