Response.getWriter().write() 与 JSP 中 out.print() 有什么区别?


1. 问题

  • Response.getWriter().write() 与 JSP 中 out.print() 有什么区别?

2. 解答

1. write() 和 print() 方法的区别

  • write():仅支持输出字符类型数据,如:字符、字符数组、字符串等。
  • print()/println():可以将各种类型(包括 Object)的数据通过默认编码转换成 bytes 字节形式,这些字节都通过 write(int c) 方法被输出。

2. Response.getWriter() 和 JSP 中 out 的区别

  • Response.getWriter 和 JSP 中 out 的类不一样:
    • Response.getWriter 是 java.io.PrintWriter,PrintWriter 是一个继承了 Writer 的普通类;
    • out 是 JspWriter,JspWriter 是一个抽象类。
  • 执行原理不同:JspWriter 相当于一个带缓存功能的 PrintWriter,它不是直接将数据输出到页面,而是将数据刷新到 Response 的缓冲区后再输出。也就是说,out 对象实际上是对 PrintWriter 有依赖的,他需要先将要输出的内容存到 Response 的缓冲区里面, 然后等待 JSP 页面中的 out 满足一定条件之后,才会调用输出的方法把内容直接输出到页面上。换句话说,getWriter() 方法的执行结果,总是优先于 out 对象。
    • Response.getWriter.print 直接输出数据
    • out.print 只能在其后输出
  • out 为 JSP 的内置对象,刷新 JSP 页面,自动初始化获得 out 对象,所以使用 out 对象是需要刷新页面的;而 Response.getWriter() 响应信息通过 out 对象输出到网页上,当响应结束时它自动被关闭,与 JSP 页面无关,无需刷新页面。
  • out 的 print() 方法和 println() 方法在缓冲区溢出并且没有自动刷新时候会产生 IOException;而 Response.getWrite() 方法的 print 和 println 中都是抑制 IOException 异常的,因此不会有 IOException。

3. Response.getWriter().write() 与 JSP 中 out.print() 的其他区别

  • out.println(); 方法也不能直接页面布局换行,只能用 HTML 代码换行,例如:out.println("</br>");

原文链接:https://qwert.blog.csdn.net/article/details/105608123

发布了401 篇原创文章 · 获赞 416 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Regino/article/details/105603491