У меня есть следующий фрагмент кода в моем веб-приложение:заподлицо() в rd.include против rd.forward()
if (request.getParameter("user").equals("luke")||session == null && !(uri.endsWith("html") || uri.endsWith("LoginServlet"))) {
System.out.println("<<<----------denied------------->>>>");
pw.println("zzzzzzzzzz");
this.context.log("Unauthorized access request");
pw.flush();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//res.sendRedirect("login.html");
req.getRequestDispatcher("login.html").include(request,response);
}
Когда я использую Промывка перед Forward(), это бросание IllegalStateException
(так как ответ отправляется в тот момент, когда мы вызываем flush, и позже мы пытаемся повторно отправить ответ, используя forward), но код работает нормально даже после того, как я предоставил флеш до rd.include()
. Почему здесь не исключение?
ТИА
thats right, но flush фиксирует состояние выходного потока, а ответ отправляется клиенту, то почему в случае включения исключение не возникает, когда ответ отправляется снова rd.include(). –
@jayendrabhatt Не отправлено _again_. Содержимое «include» добавляется (добавляется) в ответ ** body **. –
Извинения за мое незнание, но к тому времени, когда мы пытаемся добавить информацию, используя include для ответа, ответ уже исчез (из-за флеша). Затем, как страница будет включена? Пожалуйста, исправьте меня, если я ошибаюсь –