关于forward(html/jsp)解析......

    无论是RequetDispatcher.forward还是HttpServletResponse.sendRedirrect()在调用它们之前都不能有内容已经被实际输出到客户端!!如果缓冲区中已有一些内容,这些内容将被清除!!

JspFractory  
_jspxFactory.releasePageContext(_jspx_page_context)


有多个PrintWriter或者JspWriter对象时  先把内容输出到缓冲区!到jsp页面结束时才把内容输出!!


  在jsp页面中调用pageContext.forward()进行页面转向!Servlet
如果转向html静态文件!因为这是市转向default servlet 没有PrintWriter对象产生 所以在default
serlet会调用getServletOutputStream!然后返回jsp页面!继续完成剩下的页面!!这时又向缓冲区打印!这时就报错   !1
如果要想不报错!只能在jsp页面调用response.getWriter显式的产生PrinterWriter对象!!这样在default servlet 中才会使用这个printWriter对象!输出页面内容!!


     <%
     response.getWriter();
   
     pageContext.forward("test.html");
    %>

 

   html常常出现缓存页面的情况!如果你这次访问成功!下次访问的页面应该失败!但还是正确的页面!这是因为缓存的结果!!

 

如果转向Servlet 但 Servlet中打开了OutputStream流!则会报错!!与jsp页面的out冲突!!
  <%
     pageContext.forward("servlet/testForward");
  
    %>

testForward Servlet
public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException
{
ServletOutputStream sos=response.getOutputStream();
}

再看
<body>
1
<%
      PrintWriter pw= response.getWriter();
      pw.print("3");
   
 %>
 2
</body>
打印出  312

编译的Servlet代码为JspWriter out = null;

 

JspWriter  和 PrintWriter关系!!

JspWriter继承了java.io.Writer
同样 PrintWriter也是其子类!!也就是在jsp页面输出时  只要是Writer子类!则把内容输出到一个缓冲区内!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机二级Web程序设计模拟卷(二)- 卷面总分:110分 答题时间:90分钟 试卷题量:55题 一、单选题(共42题,共84分) 1.在html中绘制表格时,()标记是表格中的换行标记。 A. B. C. D. 正确答案:C 您的答案: 本题解析: 暂无解析 2.使用JavaScript语言中Document的()方法可以在页面上输出字符。 A.document.write() B.document.print() C.document.out() D.document.flush() 正确答案:A 您的答案: 本题解析: 暂无解析 3.下列()实现单击超级链接是弹出确认对话框,询问用户是否真的删除。 A.删除 B.删除 C.删除 D.删除 正确答案:A 您的答案: 本题解析: 暂无解析 4.在HTML中引用外部JavaScript文件中的正确代码为()。 A. B. C. D. 正确答案:A 您的答案: 本题解析: 暂无解析 5.在javaScrpt中window对象的()方法用于打开一个新窗口。 A.openWindow() B.window() C.open() D.close() 正确答案:C 您的答案: 本题解析: 暂无解析 6.Tomcat服务器的默认端口为()。 A.8888 B.8001 C.8080 D.80 正确答案:C 您的答案: 本题解析: 暂无解析 7.JSP中的隐式注释为()。 A.//注释内容 B. C. D./*注释内容*/ 正确答案:C 您的答案: 本题解析: 暂无解析 8.假设在helloapp应用中有一个HelloServlet类,它位于org.javathinker包下,那么这 个类的class文件应该放在()目录下 A.helloapp/HelloServlet.class B.helloapp/WEB-INF/HelloServlet.class C.helloapp/WEB-INF/classes/HelloServlet.class D.helloapp/WEB-INF/classes/org/javathinker/HelloServlet.class 正确答案:D 您的答案: 本题解析: 暂无解析 9.在Servlet中,response.getWriter()返回的是() A.JspWriter对象 B.PrintWriter对象 C.Out对象 D.ResponseWriter对象 正确答案:B 您的答案: 本题解析: 暂无解析 10.在Servlet中,下列语句可以正确获取PrintWriter对象的是() A.PrintWriterout=request.getWriter(); B.PrintWriterout=request.getPrintWriter(); C.PrintWriterout=response.getWriter(); D.PrintWriterout=response.getPrintWriter(); 正确答案:C 您的答案: 本题解析: 暂无解析 11.在访问Servlet时,在浏览器地址栏中输入的路径是在()地方配置的 A. B. C. D. 正确答案:D 您的答案: 本题解析: 暂无解析 12.当一个Servlet首次被请求的时候,服务器首先会调用()方法 A.doGet B.doPost C.doInit D.init 正确答案:D 您的答案: 本题解析: 暂无解析 13.在JSP页面中,类型为HttpServletResponse的内置对象是() A.out B.response C.request D.config 正确答案:B 您的答案: 本题解析: 暂无解析 14.在JSP中如果要导入java.io.*包,应该使用()指令。 A.page B.taglib C.include D.forward 正确答案:A 您的答案: 本题解析: 暂无解析 15.JSP页面经过编译之后,将创建一个()。 A.applet B.servlet C.application D.exe文件 正确答案:B 您的答案: 本题解析: 暂无解析 16. ___________________横线处使用()代码可以将name的值显示在页面。 A.response.print(name); B. C. D.name 正确答案:C 您的答案: 本题解析: 暂无解析 17.如果只希望在多个页面间共享数据,可以使用()作用域 A.request,session B.applicationsession C.request,application D.pageContextrequest 正确答案:A 您的答案: 本题解析: 暂无解析 18.在JSP页面中,保存数

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值