这是代码:
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);