Я пишу базовый код, когда узнаю о RequestDispatcher. Я понимаю, что при вызове rd.forward() управление (и обработка ответов) перенаправляется на ресурс, указанный в пути — в данном случае на другой сервлет. Но почему этот код не генерирует исключение IllegalStateException (не то, чтобы я этого хотел) из-за операторов out.write() ранее в коде?
Я думаю, что я действительно спрашиваю, как или когда эти операторы 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();
}
}