快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
xplorer 浏览器来查看 URL 的。如果是 Internet Explorer 浏览器,过滤器就显示“拒绝访问”的信息。尽管操作并不 重要,但这个示例演示了:

一个过滤器的一般剖析

一个在请求到达资源处理器前检查其标题信息的过滤器

如何编写一个过滤器来阻止基于运行时间检测到的条件(验证参数、源 IP、 时间…等等)的后续处理

此过滤器的源代码作为 IEFilter.java , com.ibm.devworks.filters 包的 一部分位于源代码发布区中。现在就让我们来仔细研究一下该过滤器的代码。

清单 3. 使用Filter 接口

public final class IEFilter  implements Filter {    private FilterConfig filterConfig = null;

所有的过滤器都须执行 Filter 接口。我们创建了一个局部变量以容纳由容 器在初始化过滤器时传递进来的 filterConfig 。这有时发生在第一次调用doFilter() 前。

清单 4. doFilter 方法

public void doFilter(ServletRequest  request, ServletResponse response,               FilterChain chain)    throws IOException, ServletException {     String browserDet =      ((HttpServletRequest) request).getHeader("User- Agent").toLowerCase();     if ( browserDet.indexOf("msie") != -1) {        PrintWriter out = response.getWriter();        out.println ("<html><head></head><body>");        out.println("<h1>Sorry, page cannot be  displayed!</h1>");        out.println("</body></html>");        out.flush();        return;       }

Tomcat的过滤诀窍(4)

时间:2010-12-13 IBM Sing Li

doFilter() 完成了大部分工作。我们来检查一下叫做“用户代理”标题的请 求标题。所有的浏览器都提供这个标题。我们将其转换成小写字母,然后查找说 明问题的标识字符串 "msie"。如果检测到了 Internet Explorer,我们就从响 应对象中获取一个 PrintWriter 来写出自己的响应。在写出了定制的响应后, 方法无需连到其它过滤器就能返回。这就是过滤器阻止后续处理的方法。

如果浏览器并非 Internet Explorer,我们就能进行正常的链式操作,让后 续过滤器和处理器能在得到请求时获得执行的机会:

清单 5. 进行正常链式操作

chain.doFilter(request,  response);    }

随后,我们粗略地执行该过滤器中的 init() 和 destroy() 方法:

清单 6. init() 和 destroy() 方法

public void destroy() {    }   public void init(FilterConfig filterConfig) {    this.filterConfig = filterConfig;    } }

测试 IEFilter

假设您安装了 Tomcat 4 beta 3 (或更新版本)并能使用,请按下列步骤启 动 IEFilter 并运行:

在 $TOMCAT_HOME/conf 目录下的 server.xml 文件里创建一个新的应用程序 上下文,如下所示:

<!-- Tomcat Examples Context -->      <Context path="/examples" docBase="examples" debug="0"           reloadable="true">      ...       </Context>      <Context path="/devworks" docBase="devworks" debug="0"           reloadable="true">       <Logger className="org.apache.catalina.logger.FileLogger"             prefix=

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号