Я пишу базовый код, когда узнаю о RequestDispatcher. Я понимаю, что когда вызывается rd.forward(), управление (и обработка ответов) пересылается ресурсу, названному в пути, - в этом случае другому сервлету. Но почему этот код не выдает исключение IllegalStateException (не то, что я хочу) из-за вышеприведенных инструкций out.write()?RequestDispatcher - когда получен ответ?
Я предполагаю, что я действительно спрашиваю, как и когда будут выполняться эти инструкции out.write()?
Спасибо, Джефф
public class Dispatcher extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
out.write("In Dispatcher\n");
String modeParam = request.getParameter("mode");
String path = "/Receiver/pathInfo?fruit=orange";
RequestDispatcher rd = request.getRequestDispatcher(path);
if(rd == null){
out.write("Request Dispatcher is null. Please check path.");
}
if(modeParam.equals("forward")){
out.write("forwarding...\n");
rd.forward(request, response);
}
else if(modeParam.equals("include")){
out.write("including...\n");
rd.include(request, response);
}
out.flush();
out.close();
}
}
Got it. Почему же это не исключение, если я изменю конец кода следующим образом: \t 'out.flush(); \t \t out.write ("код исключения?"); \t \t out.close();' –
Исключение выбрано методом 'forward', если перед этим был вызван флеш – Tala
Точно. Спасибо, Tala. И не забывайте, что все уже очищено, когда оно отправляется Смотрите, почта Талы. –