码迷,mamicode.com
首页 > Web开发 > 详细

jsp内置对象out 和response.getwriter().write()的区别

时间:2018-04-24 20:15:27      阅读:361      评论:0      收藏:0      [点我收藏+]

标签:htm   输入   img   doctype   例子   www   传输   color   enc   

两者的主要区别:
1. 这两个对象的类型是完全不同的:内置对象out的类型是JspWriter;response.getWrite()返回的类型是PrintWriter
2. 获取方式不同:JspWriter是JSP的内置对象,直接使用即可,对象名out是保留字,也只能通过out来调用其相关方法。此外还可以通过内置对象pageContext.getOut();获得;PrintWriter则是在用的时候需要通过内置对象response.getWriter();获得
3. JspWriter的print()方法会抛出IOException;而PrintWriter则不会
4. JspWriter和PrintWriter都继承自java.io.Writer,但JspWriter是抽象类,而PrintWriter不是
 
 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8" buffer="1kb" autoFlush="true" %>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 
11 aaaaaaaaaaaaa
12 <% 
13   for(int i=0;i<9;i++){
14       out.print("b");
15       
16   }
17 %>
18 <br/>
19 <% 
20   response.getWriter().write("cccccccccccc");
21  response.flushBuffer();
22 %>
23 
24 ddddddddddddddddd
25 </body>
26 </html>

先看上面这段代码的输入

技术分享图片

源代码

技术分享图片

也就说明了一间事,当只执行 response.getWriter().write("cccccccccccc");的时候直接想客户端传输了一段文字

而,out.write.相当于把数据缓冲在了,out缓冲区中,等页面结束的时候,调用了writer类的write方法,想客户端输送了自己缓存的文字

好再看一个例子

 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8" buffer="1kb" autoFlush="true" %>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 
11 aaaaaaaaaaaaa
12 <% 
13   for(int i=0;i<900;i++){
14       out.print("b");
15       
16   }
17 %>
18 <br/>
19 <% 
20   response.getWriter().write("cccccccccccc");
21  response.flushBuffer();
22 %>
23 
24 ddddddddddddddddd
25 </body>
26 </html>

我把循环改成了900,也就是说,我的out缓冲区满了,这时候out.writezi自动调用了父类的write方法,把内容输出到了客户端

 

 

jsp内置对象out 和response.getwriter().write()的区别

标签:htm   输入   img   doctype   例子   www   传输   color   enc   

原文地址:https://www.cnblogs.com/albertzhangyu/p/8932998.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!