快速业务通道

Tomcat的过滤诀窍 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
"localhost_devworks_log."  suffix=".txt"         timestamp="true"/>       </Context>

编辑代码区的 devworks/WEB-INF 下的 web.xml 文件,以包括下列的过滤器 定义及映射:

<web-app>    <filter>      <filter-name>IE Filter</filter-name>      <filter-class>com.ibm.devworks.filters.IEFilter</filter- class>    </filter>    <filter-mapping>      <filter-name>IE Filter</filter-name>    <url-pattern>/*</url-pattern>    </filter-mapping> </web-app>

在 $TOMCAT_HOME/webapps 目录下创建一个叫做 devworks 的新目录,并将 所有 devworks 目录下的东西(包括所有子目录)从源代码区复制到该位置。现 在就准备好启动 Tomcat 4 了。

使用下面的 URL 来访问一个简单的 index.html 页面: http://<hostname>/devworks/index.html

如果您使用的是 Internet Explorer,就能看见如图 2 所示的定制的“拒绝 访问”信息。

图 2. IEFilter 在遇到 Internet Explorer 的运行效果

Tomcat的过滤诀窍(5)

时间:2010-12-13 IBM Sing Li

如果您使用的是 Netscape,那就能看见如图 3 所示的确切的 HTML 页面。

图 3. IEFilter 用Netscape 浏览器的浏览效果

编写转换资源的过滤器

现在该来试一下更复杂的过滤器了。该过滤器:

从过滤器定义的实例初始化参数中读取一组 "search" 及 "replace" 文本

过滤被访问的 URL,将出现的第一个 "search" 文本替代为 "replace" 文本

在我们深入研究这个过滤器的过程中,您将对内容转换/替代过滤器的架构加 深了解。相同的架构能用于任何加密、压缩及转换(如由 XSLT 转换来的 SML)过滤器。

核心机密是在链式处理的过程中传递一个定制的响应对象的包装版本。该定 制的包装响应对象须隐藏原响应对象(从而对其实现 包装),并提供一个定制 的流以供后续处理器写入。如果工作(文本替换、转换、压缩、加密…等)能迅 速完成,定制流的执行就能中止后续记录并完成需要的工作。然后定制的流就会 将经转换的数据写入包装的响应对象(也就是说,简单的字符替换加密)。如果 工作无法迅速完成,定制的流就需等待,直到后续处理器完成对流的写入(也就 是说,当其关闭或刷新流时)。然后它才完成转换工作,并将经转换的输出结果 写入“真正的”响应中。

在我们的过滤器( ReplaceTextFilter )中,定制的包装响应对象叫作 ReplaceTextWrapper 。定制流的执行叫做 ReplaceTextStream 。您能在 com.ibm.devworks.filters 包中的 ReplaceTextFilter.java 文件里找到源代 码。现在就让我们来研究一下源代码吧。

清单 7. ReplaceTextStream 类

class ReplaceTextStream  extends ServletOutputStream {     private OutputStream intStream;     private ByteArrayOutputStream baStream;     private boolean closed = false;     private String origText;     private String newText;     public ReplaceTextStream(OutputStream outStream,                 String searchText,                 String replaceText) {       intStream = outStream;       baStream = new ByteArrayOutputStream();       origText = searchText;       newText = replaceText;     }

这是定制的输出流代码。intStream 变量包含了对来

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号