jsp内置对象out和response.getWriter()区别

最近遇到一个问题response.getWriter.write(2)会在浏览器中弹出一个下载对话框,而out.write()则不会弹出对象。综上:

首先介绍write()和print()方法的区别:

1.write():仅支持输出字符类型数据、字符、字符数组、字符串等

2.print():可以将各种类型(包括Object)的数据通过默认编码转成bytes字节形式,这些字节都通过write(int c )方法输出。

介绍response.getWriter()和out的区别:

1.out和response.getWriter的类不一样,一个JspWriter,另一个是java.io.PrintWriter

2.执行原理不同:JspWriter相当于一个带缓存功能的printWriter,它不是直接将数据输出到页面,而是将数据刷新到response的缓冲区后在输出,response.getWriter()直接输出数据(response.print()),所以(out.print)只能在其后输出。

3.out为jsp的内置对象,刷新jsp页面,自动初始化获得out对象,所以使用out对象是需要刷新页面的。

   而response.getWriter()响应信息通过out对象输出到网页上,当响应结束时它自动被关闭,与jsp页面无关,无需刷新页面

   形象的比喻:当我们调用response.getWriter()这个对象同时获得了网页的画笔,这时你就可以通过这个画笔在网页上画任何你想要显示的东西。

4.out的print方法和println方法在缓冲区溢出并没有自动刷新时候会产生ioexception,

    而response.getWrite()方法的print和println都是抑制ioexception一场的,不会有ioexception


out.println(""),方法不能将页面布局换行,只能领html代码换行,要实现页面布局换行可以:out.println("
")

你可能感兴趣的:(javaee)