Tomcat 的过滤诀窍
2009-11-05 00:00:00 来源:WEB开发网这一新架构为今后的 Tomcat 性能调整与优化提供了一个新的、更 对象友好的基础。Servlet 2.3 过滤器是这个新的内部架构的自然扩展。该架构为 Web 应用程序设计人员提供了一个可移植的执行过滤行为的方法。
调用链
所有过滤器都服从调用的过滤器链,并通过定义明确的接口得到执行。一个执行过滤器的 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> 标记的子标记。
更多精彩
赞助商链接