版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Web过滤技术一、 过滤器技术1、 概述( 1)常规方式的 Web认证形式对于各种Web访问的预处理和后处理问题,传统上 ,开发人员会设计一系列额外的检测程序模块 ,也就是一整套if/else语句 , 而且指定如果其中任何一个检测失败,所有的处理工作都会退出。显然,这种方法是存在很大弊端的,即代码的可读性、可维护性都会被大大降低 ,同时将检测工作融于一般的程序模块,使得整个程序的模块性难以保证( 因为我们这里所说的预处理和后处理功能,一般是指一些基本的系统服务,如安全、登录 ,系统调试等。执行这些功能的过滤器一般是需要与核心模块分开的,而且由于系统职能或规则的变化 ,这些模块随时可能被添加或删
2、除) 。( 2)典型的 Web应用的需求首先假设我们现在想做一个Web Application(例如 BBS) 。要求具备下列功能 :在用户发帖子之前 ,要进行身份认证 ,以确认该用户是已登陆用户。其次是要对删除帖子 ,修改帖子 ,进行权限检查。访问特定资源 ( Web 页、 JSP 页) 时的身份认证那么对待这些要求我们该怎么去做,如果在每个页面中都写检查权限的代码,不是一个好想法 ,且使的程序的可重用性降低,对比设计模式Intercepting Filter(截获过滤 )正好符合 我们的 要求 ,且 在 Servlet2.3中 经过使用过滤器 (Filter)能够 使得 WebApplic
3、ation开发者能够在请求到达Web资源之前截取请求 ,在处理请求之后修改应答。( 3)模块化的解决方法解决这种问题的关键在于,设计一种简单的技术 ,以能够添加或移除额外处理的模块,而这些模块一般都能够完成一定的检测和过滤功能。根据以上的讨论, J2EE 研究人员提出了设计模式 -截取过滤器作为解决方案,这种模式能够在不影响核心处理模块的情况下,实现可插入的过滤器来执行一般的处理功能。( 4) Web 应用中的过滤器及作用Web应用中的过滤器截取从客户端的请求,并做出处理的答复。利用它能够实现验证客户是否来自可信的网络(以处理一个网站的所有客户请求并提供一个核心的认证机制) 、资料内容仅供您学
4、习参考,如有不当或者侵权,请联系改正或者删除。能够对客户提交的数据进行重新编码、 能够验证客户是否已经登录、 能够检查客户的浏览器是否满足本应用的要求并能够产生系统日志等应用。Servlet过滤器是可插入的Web 组件 ,它允许我们实现Web 应用程序中的预处理和后期处理逻辑 ( 也就是说它对于客户的请求附加了额外的操作 ) 。过滤器支持 Servlet 和 JSP 页面的基本请求处理功能 , 比如日志记录、 性能、 安全、 会话处理、 XSLT 转换等。主要为 :( 5)资源访问 ( Web 页、 JSP 页、 servlet)的定制身份认证应用程序级的访问资源的审核和记录应用程序范围内对资
5、源的加密访问,它建立在定制的加密方案基础上对被访问资源的及时转换,包括从 servlet和 JSP 的动态输出截取过滤器的不足采用这种设计模式也会带来一定的问题 , 即在过滤器之间共享信息将变得非常困难 , 这是由于根据其定义和需求 , 每个过滤器的设计和开发都大相径庭。因而如果在不同的过滤器之间需要共享信息的话 , 其代价将是非常昂贵的。因为过滤器是独立运行的部件 , 也就是除了输入和输出外 , 每个过滤器不受任何其它过滤器运行的影响。在设计上 , 过滤器之间不共享任何状态信息 ; 独立性还表现在它对其处理的上游和下游连接的过滤器是 无知 的。它的设计和使用不对与其连接的任何过滤器施加限制
6、, 唯一关心的是其输入数据的 , 然后进行加工处理 , 最后产生数据输出。2、 Servlet过滤器技术( 1) Servlet过滤器是什么 ?Servlet过滤器是小型的Web 组件 ,它们拦截请求和响应 ,以便查看、 提取或以某种方式操作正在客户机和服务器之间交换的数据。过滤器是一般封装了一些功能的Web 组件 ,这些功能虽然很重要 ,可是对于处理客户机请求或发送响应来说不是决定性的。典型的例子包括记录关于请求和响应的数据、处理安全协议、管理会话属性等等。过滤器提供一种面向对象的模块化机制,用以将公共任务封装到可插入的组件中,这些组件经过一个配置文件来声明,并动态地处理。资料内容仅供您学习
7、参考,如有不当或者侵权,请联系改正或者删除。( 2) Servlet过滤器的特性声明式的 :过滤器经过 Web 部署描述符 ( web.xml)中的 XML 标签来声明。这样允许添加和删除过滤器 ,而无需改动任何应用程序代码或JSP 页面。动态的 :过滤器在运行时由Servlet容器调用来拦截和处理请求和响应。灵活的 :过滤器在 Web 处理环境中的应用很广泛 , 涵盖诸如日志记录和安全等许多最公共的辅助任务。过滤器还是灵活的 , 因为它们可用于对来自客户机的直接调用执行预处理和后期处理 , 以及处理在防火墙之后的 Web 组件之间调度的请求。最后 , 能够将过滤器链接起来以提供必须的功能。模
8、块化的 :经过把应用程序处理逻辑封装到单个类文件中 , 过滤器从而定义了可容易地从请求/ 响应链中添加或删除的模块化单元。可移植的 :与 Java平台的其它许多方面一样, Servlet过滤器是跨平台和跨容器可移植的,从而进一步支持了Servler过滤器的模块化和可重用本质。可重用的 :归功于过滤器实现类的模块化设计,以及声明式的过滤器配置方式,过滤器能够容易地跨越不同的项目和应用程序使用。透明的 :资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。在请求 / 响应链中包括过滤器 , 这种设计是为了补充 ( 而不是以任何方式替代 ) servlet 或 JSP 页面提供的核心处理。
9、因而 , 过滤器能够根据需要添加或删除 , 而不会破坏servlet或JSP页面。3、 过滤器 (filters)( 1) Servlet API 2.3的新特性Servlet API 2.3中最重大的改变是增加了filters, filters能够传递request或者修改 response 。Filters并不是servlets;它们不能产生response 。 你能够把过滤器看作是还没有到达servlet的 request的预处理器,或从servlet发出的response的后处理器。过滤器是一个程序 ,它先于与之相关的servlet或 JSP页面运行在服务器上。过滤器可附加到一个或多个
10、servlet或 JSP页面上 ,而且能够检查进入这些资源的请求信息。( 2) filter的主要作用访问日志记录对于到达系统的所有请求,过滤器收集诸如浏览器类型、一天中的时间、转发URL 等相关信息 ,并对它们进行日志记录。利用修改过的请求信息调用资源过滤器在内容经过线路传来并在到达servlet和 JSP 页面之前解压缩该内容,然后再取得响应内容 ,并在将响应内容发送到客户机机器之前将它转换为压缩格式。调用或者阻止资源调用等安全方面过滤器处理身份验证令牌的管理 , 并适当地限制安全资源的访问 , 提示用户进行身份验证和 / 或将她们指引到第三方进行身份验证。将安全逻辑放在过滤器中 , 而不
11、是放在 servlet 或者 JSP 页面中 , 这样提供了巨大的灵活性。在开发期间 , 过滤器能够关闭 ( 在 web.xml 文件中注释掉 ) 。在生产应用中 , 过滤器又能够再次启用。另外还能够添加多个过滤器 , 以便根据需要提高安全、 加密和不可拒绝的服务的等级。会话处理将 servlet 和 JSP 页面与会话处理代码混杂在一起可能会带来相当大的麻烦。使用过滤器来管理会话能够让 Web 页面集中精力考虑内容显示和委托处理 , 而不必担资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。心会话管理的细节。( 3) Servlet 2.3规范中的过滤器过滤器在Servlet 2
12、.3规范中首次引入时,它们只能过滤Web客户机和客户机所访问的指定Web资源之间的内容。如果该资源然后将请求调度给其它Web资源 ,那就不能向幕后委托的任何请求应用过滤器。Servlet2.4规范消除了这个限制。Servlet过滤器现在能够应用于J2EE Web 环境中存在请求和响应对象的任何地方。因此, Servlet过滤器能够应用在客户机和servlet之间、servlet和servlet或JSP页面之间,以及所包括的每个JSP页面之间。这才是我所称的强大能力和灵活性!( 4) javax.servlet包中的3 个接口Filter、FilterChain和FilterConfig从编 程
13、的 角度看,过滤器 类将 实现Filter接口,然后使用这个过滤器类中的FilterChain和FilterConfig接口。该过滤器类的一个引用将传递给FilterChain对象 ,以允许过滤器把控制权传递给链中的下一个资源。FilterConfig对象将由容器提供给过滤器,以允许访问该过滤器的初始化数据。( 5) Filter接口该接口主要实现了以下方法:public void init(FilterConfig filterConfig)throws ServletException这个方法在容器实例化过滤器时首先被调用,它主要设计用于使过滤器为处理做准备。该方法接受一个FilterCo
14、nfig类型的对象作为输入。而且利用它能获取在web.xml文件中指定的 filter初始化参数。public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws java.io.IOException,ServletException与servlet拥有一个service()方法 (这个方法又调用doPost()或者doGet()来处理请求一样,过滤器拥有单个用于处理请求和响应的方法doFilter()。这个方法接受三个输入参数:一个ServletRequest、resp
15、onse和一个FilterChain对象。利用该方法执行实际的过滤的操作,因为它是一个完成过滤行为的方法;同时它也是上一个过滤器调用的方法。引入的FilterChain对象参数的主要目的是为了向后续的过滤器提供所要调用的信息。资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。public void destroy():容器在销毁过滤器实例前被调用,在其中能够释放资源。( 6) Filter链介绍过滤器链 :所有过滤器都服从调用的过滤器链,并经过定义明确的接口得到执行。Web 应用程序能够指定许多过滤器来完成相关的工作,那么它们就组成一个过滤器链来完成相应的工作。过滤器链的结构图do
16、Filter()方法每个request和response都会传到filter接口的doFilter()方法中 ,也就是说在FilterChain对象中包含着所有将被执行的filters。一个 filter 能够在 doFilter() 方法中对 request 和过调用其它的方法获得数据 , 或赋予获得的对象新的行为response 进行处理。 ( 它能够经),然后 ,当前的filter调用chain.doFilter()方法把控制权传递给下一个filter。在调用返回时 , filter能够在doFilter()方法结束的地方,对response进行附加的处理,例如 ,对response进行
17、日志管理。如果filter想停止request处理过程并获得对response的完全控制,则不要去调用下一个filter。因此过滤器能够:在请求得到处理以前修改请求的标题提供它自己的请求版本以供处理在请求处理以后和被传回给用户以前修改响应先取得由容器进行的所有请求处理,并产生自己的响应4、 编程实现过滤器的步骤:建立一个过滤器涉及下列五个步骤:( 1)建立一个实现Filter接口的类。这个类需要三个方法,分别是 :doFilter- doFilter方法包含主要的过滤代码资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。init- init方法建立设置操作init方法只在此过滤器第
18、一次初始化时执行,不是每次调用过滤器都执行它。对于简单的过滤器 ,可提供此方法的一个空体。但有两个原因需要使用init。首先 , FilterConfig对象提供对 servlet 环境及 web.xml 文件中指派的过滤器名的访问。因此 ,普遍的办法是利用 init将 FilterConfig对象存放在一个字段中 , 以便 doFilter方法能够访问 servlet环境或过滤器名。其次 , FilterConfig对象具有一个 getInitParameter方法 , 它能够访问部署描述符文件 ( web.xml)中分配的过滤器初始化参数。destroy-而 destroy 方法进行清除。此方法在利用一个给定的过滤器对象永久地终止服务器( 如关闭服务器 ) 时调用。大多数过滤器简单地为此方法提供一个空体,不过 ,可利用它来完成诸如关闭过滤器使用的文件或数据库连接池等清除任务。( 2)在 doFilte
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 案件审理团队建设方案
- 托管出租合同范本
- 双人单身合同范本
- 甜瓜收购合同范本
- 餐饮装修材料合同范本
- 房屋建造承包合同范本
- 小学五年级数学小数除以整数单元练习例题
- 售卖车库合同范本
- 近五年的工程合同范本
- 冲压加工合同范本
- 美国FDA关于食品接触材料的塑料制品法规要求
- 应用地球化学元素特征判别沉积环境
- 人教版四年级下册语文第三单元测试卷及答案(2)
- 田麦久《运动训练学》(第2版)配套题库(含考研真题)
- 2016出资证明书(货币出资)(共1页)
- 商务英语教学课件:unit5 Travel and Visits
- 民航概论课程标准
- MACD二次绿柱缩短的选股公式.doc
- 尾矿库闭库工程施工组织设计方案范本
- 化工企业事故案例分析(中毒事故)
- 儿童日常习惯培养积分表
评论
0/150
提交评论