Servlet跳转中inclued()方法中JSP和Html要放在另一个Servlet响应结果前面?

这是代码:

request.setCharacterEncoding("utf-8");
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");

    PrintWriter out = response.getWriter();
    out.println("<html><head><Title>Main</Title></head>");
    out.println("<body>");

    /*重点
    request.getRequestDispatcher("header.html").include(request, response);
    request.getRequestDispatcher("login.html").include(request, response);
    request.getRequestDispatcher("index.jsp").include(request, response);
    request.getRequestDispatcher("CounterSerVlet").include(request, response);
    */



    out.println("</body></html>");
    out.close();

只要把最后一句放最前面其他HTMl和jsp文档都显示不了,这是为什么啊?

这是按照上面的顺序

图片说明

这是把CounterSerVlet的包含结果放在了最顶上

图片说明

out.close();这个放最前面?你都关闭输出了

科普一下 PrintWriter 流的基本知识,PrintWriter 是输出内容的一个类,必须先创建后在使用 print 输出内容,输出完成之后执行 close 。
一旦 close 就说明同道关闭就无法再进行 print 了,因为状态不一致了,如果还想继续输出,就只能重新建立一个输出流对象了。
这是一种基本规则,好比门关闭了,要向进去,不得重新打开吗,硬闯肯定不可行。

JSP和Html肯定是要放在另一个Servlet最前面的
要不然就先进到另一个Servlet了 你当前servlet后面的代码就不执行了
除非你把下面代码也放到另一个Servlet里面
这样的话进到另一个Servlet了同时哪些页面也都加载执行了

 request.getRequestDispatcher("header.html").include(request, response);
    request.getRequestDispatcher("login.html").include(request, response);
    request.getRequestDispatcher("index.jsp").include(request, response);