Tomcat的过滤诀窍 - 编程入门网
滤器的 Java 类必须执行这一 javax.servlet.Filter 接口。这一接口含 有三个过滤器必须执行的方法:
doFilter(ServletRequest, ServletResponse, FilterChain) :这是一个完 成过滤行为的方法。这同样是上游过滤器调用的方法。引入的 FilterChain 对 象提供了后续过滤器所要调用的信息。 init(FilterConfig) :这是一个容器所调用的初始化方法。它保证了在第一 次 doFilter() 调用前由容器调用。您能获取在 web.xml 文件中指定的初始化 参数。 destroy() :容器在破坏过滤器实例前, doFilter() 中的所有活动都被该 实例终止后,调用该方法。 请注意: Filter 接口的方法名及语义在最近的几个 beta 周期中曾有过不 断的改变。Servlet 2.3 规范仍未处于最后的草案阶段。在 Beta 1 中,该接口 包括 setFilterConfig() 和 getFilterConfig() 方法,而不是 init() 和 destroy() 。 嵌套调用在 doFilter() 方法执行中发生。除非您建立一个过滤器明确阻止 所有后续处理(通过其它过滤器及资源处理器),否则过滤器一定会在 doFilter 方法中作以下的调用: FilterChain.doFilter(request, response); 安装过滤器:定义与映射 容器通过 Web 应用程序中的配置描述符 web.xml 文件了解过滤器。有两个 新的标记与过滤器相关: <filter> 和 <filter-mapping> 。应该 指定它们为 web.xml 文件内 <web-app> 标记的子标记。 Tomcat的过滤诀窍(3)时间:2010-12-13 IBM Sing Li过滤器定义的元素 <filter> 标记是一个过滤器定义,它必定有一个 <filter- name> 和 <filter-class> 子元素。<filter-name> 子元素给 出了一个与过滤器实例相关的、基于文本的名字。<filter-class> 指定 了由容器载入的实际类。您能随意地包含一个 <init-param> 子元素为过 滤器实例提供初始化参数。例如,下面的过滤器定义指定了一个叫做 IE Filter 的过滤器: 清单 1.过滤器定义标记
容器处理 web.xml 文件时,它通常为找到的每个过滤器定义创建一个过滤器 实例。这一实例用来服务所有的可用URL 请求;因此,以线程安全的方式编写过滤器是最为重要的。 过滤器映射及子元素 <filter-mapping> 标记代表了一个过滤器的映射,指定了过滤器会对 其产生作用的 URL 的子集。它必须有一个 <filter-name> 子元素与能找 到您希望映射的过滤器的过滤器定义相对应。接下来,您可以使用<servlet-name> 或 <url-pattern> 子元素来指定映射。 <servlet-name> 指定了一个过滤器应用的 servlet (在 web.xml 文件 中的其它地方已定义)。您能使用<url-pattern> 来指定一个该过滤器 应用的 URL 的子集。例如, /* 的样式用来代表该过滤器映射应用于该应用程 序用到的每个 URL,而 /dept/humanresources/* 的样式则表明该过滤器映射只 应用于人力资源部专有的 URL。 容器使用这些过滤器映射来确定一个特定的过滤器是否应参与某个特定的请 求。清单 1 是为应用程序的所有 URL 定义的应用于 IE Filter 的一个过滤器 映射: 清单 2.过滤器映射标记
创建一个简单的过滤器 现在该来定义我们的第一个过滤器了。这是一个不重要的过滤器,检查请求 标题以确定是不是使用Internet E |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |