RequestDispatcher について学びながら、いくつかの基本的なコードを書いています。rd.forward() が呼び出されると、制御 (および応答処理) がパスで指定されたリソース (この場合は別のサーブレット) に転送されることを理解しています。しかし、コードの前半に out.write() ステートメントがあるため、このコードが IllegalStateException をスローしないのはなぜでしょうか?
私が本当に求めているのは、これらの 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();
}
}