思诚科技 seecen LOGO
咨询热线:0791-87557233
  首页 |   Java EE  
关于思诚
关注官方微信

利用Java Servlets 2.4实现过滤

来源:网络    更新时间:2014-12-3



  ServletAPI很久以前就已成为企业应用开发的基石,而Servlet过滤器则是对J2EE家族的相对较新的补充。本文将向您介绍Servlet过滤器体系结构,定义过滤器的许多应用,并指导您完成典型过滤器实现的三个步骤。同时本文还会透露bean的一些激动人心的变化,预计刚发布的JavaServlet2.4规范会引入这些变化。

  Servlet过滤器是可插入的Web组件,它允许我们实现Web应用程序中的预处理和后期处理逻辑。过滤器支持servlet和JSP页面的基本请求处理功能,比如日志记录、性能、安全、会话处理、XSLT转换,等等。过滤器最初是随JavaServlet2.3规范发布的,最近定稿的2.4规范对它进行了重大升级。在此我将向您介绍Servlet过滤器的基础知识――比如总体的体系结构设计、实现细节,以及在J2EEWeb应用程序中的典型应用,还会涉及一些预计最新的Servlet规范将会提供的扩展功能。

  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组件的情况下删除它们。过滤器仅只是改动请求和响应的运行时处理,因而不应该将它们直接嵌入Web应用程序框架,除非是通过ServletAPI中良好定义的标准接口来实现。

  • 上一篇文章:

  • 下一篇文章:
  •  

    0791-87557233

    重视每个来电 珍惜您的时间
    思诚者开发沙龙
    江西思诚科技有限公司  赣ICP备17006097号  CopyRight©2014 - 2018