快速业务通道

软件体系架构模式在J2EE中的应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25
11-22

3、解决方案与结构

管道和过滤器体系架构模式把系统任务分成为几个独立的处理步骤。这些步骤采用通过系统的数据流连接。一个步骤的输出是下一个步骤的输入。每个处理步骤由一个过滤器组件实现,它处理或者转化数据,并且系统的输入可以是多种数据源。

这种体系架构模式具有许多特性,如下:

过滤器是独立运行的部件.也就是除了输入和输出外,每个过滤器不受任何其他过滤器运行的影响.在设计上,过滤器之间不共享任何状态信息。

独立性还表现在它对其处理的上游和下游连接的过滤器是"无知"的.它的设计和使用不对与其连接的任何过滤器施加限制,唯一关心的是其输入数据的,然后进行加工处理,最后产生数据输出。

4、非软件描述 基于各种流体工作的系统,普遍都采用由输送管道连接起来的处理结构.例如我们冬天见到的供暖系统中,处理器包括加热器,过滤器,调节阀,流量表等,每个处理器都有流体的入口和出口,它们通过各种管道连接在一起形成了整个系统.这样的结构在城市的自来水系统也可以看到。见下图:

软件体系架构模式在J2EE中的应用

5、优点与缺点

5.1 优点

通过使用过滤器交换增加了灵活性

通过重组增加了灵活性

过滤器组件的重用

流水线的快速原型

并行处理提高效率

5.2 缺点

共享状态信息或者昂贵或者不灵活

数据转换额外开销。

错误处理

Servlet2.3 Filter

1、Servlet Filter概述

凡是开发过J2EE的web application的人员都知道,经常需要处理以下几种情况:

访问特定资源(Web 页、JSP 页、servlet)时的身份认证

应用程序级的访问资源的审核和记录

应用程序范围内对资源的加密访问,它建立在定制的加密方案基础上

对被访问资源的及时转换, 包括从 servlet 和 JSP 的动态输出

在servlet2.3之前这些功能处理是很难实现的,但是Java Servlet 2.3 规范新增了不少激动人心的功能,其中之一便是过滤器(Filter),其实这就是我们所说的管道和过滤器体系架构在J2EE中的应用实践. 通过使用该模式使得Web Application开发者能够在请求到达Web资源之前截取请求,在处理请求之后修改应答。其结构图如下:

软件体系架构模式在J2EE中的应用

一个执行过滤器的Java 类必须实现javax.servlet.Filter 接口。这一接口含有三个方法:

init(FilterConfig):这是容器所调用的初始化方法。它保证了在第一次 doFilter() 调用前由容器调用。它能获取在 web.xml 文件中指定的filter初始化参数。

doFilter(ServletRequest, ServletResponse, FilterChain):这是一个完成过滤行为的方法。它同样是上一个过滤器调用的方法。引入的 FilterChain 对象提供了后续过滤器所要调用的信息。

destroy():容器在销毁过滤器实例前,doFilter()中的所有活动都被该实例终止后,调用该方法。

软件体系架构模式在J2EE中的应用

软件体系架构模式在J2EE中的应用(3)

时间:2009-11-22

2、Filter链介绍

所有过滤器都服从调用的过滤器链,并通过定义明确的接口得到执行。WebApplication可以指定许多过滤器来完成相关的工作.那么它们就组成一个过滤器链来完成相应的工作.其结构如下图:

软件体系架构模式在J2EE中的应用

3、例子

3.1 简单filter

在PetStore1.3.1中的就存在两个Filter过滤器.其中一个过滤器,完成字符集的编码的转化,如大家经常遇到的汉字编码问题,你只需配置为GBK即可.它从Web.xml之中读取这些参数的配置信息,然后进行编码的转化.另一个是安全校验Fliter,它负责进行安全检查哪些页面可以进行,哪些不可。它们组成一个Filter链,结构图和实现代码如下:

软件体系架构模式在J2EE中的应用

public class EncodingFilter implements Filter { private FilterConfig config = null; // default to ASCII private String targetEncoding = "ASCII"; public void init(FilterConfig config) throws ServletException { this.targetEncoding = config.getInitParameter(

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