JspWriter与PrintWriter有什么关系



JspWriter与PrintWriter有什么关系?JspWriter与PrintWriter的用法实例。jsp内置对象out能向页面输出内容,而response对象的.getWriter().write()方法也可以向页面输出,那么JspWriter与PrintWriter的关系如何呢?下载了tomcat源码后发现JspWrite使用了包装器模式,对printWriter中的write方法进行了重写,主要是增加了带缓存区的功能,而out对象的初始化方法,恰恰就是利用reponse.getWrite()来赋值,所以本是同根生.
在JspWriterImpl.java类中,有如下方法:
private void initOut() throws IOException {
       if (out == null) {
           out = response.getWriter();
       }
   }

   public void write(int c) throws IOException {
       ensureOpen();
       if (bufferSize == 0) {
           initOut();
           out.write(c);
       }
       else {
           if (nextChar >= bufferSize)
               if (autoFlush)
                   flushBuffer();
               else
                   bufferOverflow();
           cb[nextChar++] = (char) c;
       }
   }