background image

Java 教程:

 

使用 Java Servlets 2.4 过滤器执行过滤

Servlet 过滤器是什么?
  Servlet 

 

过滤器是小型的 Web 组件,它们拦截请求和响应,以便查看、提取或以某

 

种方式操作正在客户机和服务器之间交换的数据。过滤器是通常封装了一些功能的 Web 
组件,这些功能虽然很重要,但是对于处理客户机请求或发送响应来说不是决定性的。典
型的例子包括记录关于请求和响应的数据、处理安全协议、管理会话属性,等等。过滤器提
供一种面向对象的模块化机制,用以将公共任务封装到可插入的组件中,这些组件通过
一个配置文件来声明,并动态地处理。
  Servlet 过滤器中结合了许多元素,从而使得过滤器成为独特、强大和模块化的  
Web 组件。也就是说,Servlet 过滤器是:

 

  声明式的:过滤器通过 Web 部署描述符(web.xml)

 

中的 XML 标签来声明。这样允

 

许添加和删除过滤器,而无需改动任何应用程序代码或 JSP 页面。

 

  动态的:过滤器在运行时由 Servlet 容器调用来拦截和处理请求和响应。

 

  灵活的:过滤器在 Web 处理环境中的应用很广泛,涵盖诸如日志记录和安全等许
多最公共的辅助任务。过滤器还是灵活的,因为它们可用于对来自客户机的直接调用执行

 

预处理和后期处理,以及处理在防火墙之后的 Web 组件之间调度的请求。最后,可以将
过滤器链接起来以提供必需的功能。
  模块化的:通过把应用程序处理逻辑封装到单个类文件中,过滤器从而定义了可容
易地从请求/响应链中添加或删除的模块化单元。

 

  可移植的:与 Java 平台的其他许多方面一样,Servlet 过滤器是跨平台和跨容器可

 

移植的,从而进一步支持了 Servler 过滤器的模块化和可重用本质。
  可重用的:归功于过滤器实现类的模块化设计,以及声明式的过滤器配置方式,过
滤器可以容易地跨越不同的项目和应用程序使用。
  透明的:在请求/响应链中包括过滤器,这种设计是为了补充(而不是以任何方式替
代)servlet   

或 JSP 页面提供的核心处理。因而,过滤器可以根据需要添加或删除,而不

 

会破坏 servlet   

或 JSP 页面。

 

  所以 Servlet 过滤器是通过一个配置文件来灵活声明的模块化可重用组件。过滤器动
态地处理传入的请求和传出的响应,并且无需修改应用程序代码就可以透明地添加或删

 

除它们。最后,过滤器独立于任何平台或者 Servlet 容器,从而允许将它们容易地部署到

 

任何相容的 J2EE 环境中。

 

  在接下来的几小节中,我们将进一步考察 Servlet 过滤器机制的总体设计,以及实

 

现、配置和部署过滤器所涉及的步骤。我们还将探讨 Servlet 过滤器的一些实际应用,最
后简要考察一下模型-视图-控制器(MVC)

 

体系结构中包含的 Servlet 过滤器,从而结束

本文的讨论。
  Servlet 过滤器体系结构

 

  正如其名称所暗示的, Servlet 过滤器用于拦截传入的请求和/或传出的响应,并监
视、修改或以某种方式处理正在通过的数据流。过滤器是自包含、模块化的组件,可以将它
们添加到请求/

 

响应链中,或者在无需影响应用程序中其他 Web 组件的情况下删除它们。