WEB开发网
开发学院软件开发Java Tomcat 的过滤诀窍 阅读

Tomcat 的过滤诀窍

 2009-11-05 00:00:00 来源:WEB开发网   
核心提示: 这是定制的输出流代码, intStream 变量包含了对来自响应对象的实际流的引用,Tomcat 的过滤诀窍(9), baStream 是我们输出流的缓冲版本,后续处理器就写入这里,我们使用布尔型的 closed 标识来避免异常情况,请注意, closed 标记标明了 close() 是否在此实

这是定制的输出流代码。 intStream 变量包含了对来自响应对象的实际流的引用。 baStream 是我们输出流的缓冲版本,后续处理器就写入这里。 closed 标记标明了 close() 是否在此实例流中被调用。构造器将来自响应对象的流引用存储起来并创建了缓冲流。它还将文本字符串存储起来供以后的替代操作使用。


清单 8. write() 方法
  public void write(int i) throws java.io.IOException { 
     baStream.write(i); 
   } 

我们须提供自己的源于 ServletOutputStream 的 write() 方法。在此,我们当然是写入缓冲流。所有来自后续处理器的更高级输出方法都将以最低级别使用该方法,以保证所有的写入都指向缓冲流。


清单 9. close() 及 flush() 方法
  public void close() throws java.io.IOException { 
     if (!closed) { 
      processStream(); 
      intStream.close(); 
      closed = true; 
     } 
    } 
   
  public void flush() throws java.io.IOException { 
    if (baStream.size() != 0) { 
       if (! closed) { 
       processStream();      // need to synchronize the flush! 
       baStream = new ByteArrayOutputStream(); 
       } 
      } 
    } 

close() 及 flush() 方法是我们完成转换的语句。根据后续处理器不同,其中的一个或两个程序都有可能被调用。我们使用布尔型的 closed 标识来避免异常情况。请注意,我们将实际的替代工作委托给了 processStream() 方法。

上一页  4 5 6 7 8 9 10  下一页

Tags:Tomcat 过滤 诀窍

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接