长篇连载 ,如何一次通过310-083考试
pass 310-083 (002-design pattern)
上一篇 /
下一篇 2008-09-16 10:31:19
/ 个人分类:Certification_SCWCD5
第一种设计模式
Interception Filter.
概述:一旦构建起来了一个网络应用程序,你可能需要一个前端的组件,来控制后面的流程。比如一个受保护的资源,只有通过了认证的客户才可以访问,没有通过认证的用户,就只能去浏览别的资源。或者是从IE浏览器发出的请求我们接受,然后转发到后台,其余浏览器发出的请求我们拒绝。在一个就是封装客户的请求以及封装请求结果,例如加密用户的信用卡号码等等需求。有或者我们只是限制某些ip可以访问,其余的不可以。就好比北京奥运会网络直播,就只能中国大陆用户,那些海外的华人,华侨就无法通过网络来观看现场直播的能诸多功能(本人深受其害)。
那么好,我们就用一个最简单的,谁都会的登陆用户的例子来说明,这样的一个简单的功能你一定会做,不就是一个用户登陆嘛。。多简单,对!的确是一个用户登陆,所以我们一般使用一个东西(文件,或者servlet)来判断,然后利用session.比如一个servlet -checkLogin
String username
= request.getParameter(“username”);
String
password = request.getParameter(“password”);
if(userName.equals(“password”))
{
HttpSession
session = request.getSession(“true”);
session.setAttribute(“isLogin”,
“yes”);
RequestDispatcher
rd = request.getRequestDispatcher(“afterLogin.html”);
rd.forward(request,response);
…
}
没错,所有的需要安全验证的资源都会判断session,而这个session正是来源于我们的那个总授权的checkLogin.这就是一个interception filter的一个典型例子。所以吧你需要统一认证,判断的部分集中在一起,以后如果需要更改判断的约束条件,就只需要修改filter本身,而程序的跳转,业务逻辑完全不受影响。
以下图片说明了filter之间的认证,传递关系。

优点:由于本身就是filter,所以可以通过filterChain来传递,利用filterManager来管理,多个不同的filter可以松耦合,因此各个部分可以被充分的利用和重用;所有的filter都在web.xml中配置,所以日后如果需要维护,更换不同的filter,只需要修改配置文件即可修改filter跟程序之间的搭配关系,不需要碰到现有的代码,非常有利于扩展。
缺点:由于过分的松耦合,每一个部分不会依赖于另外的部分,所以不同的filter之间要利用协议来传递信息共享。
举例:可以利用Wrapper来封装客户的请求还有回应信息;控制不同客户端访问不同的代码;国际化或者本地化显示资源;对于session的共享控制;页面的转发跳转,log等.
考试:记住以下的要点,有助于通过考试。
1. Centralizes Control with Loosely
Coupled Handlers.
2. Improves Reusability.
3. Declarative and Flexible
Configuration.
4. Information Sharing is
Inefficient.
5. Reduce line of codes in
application.
导入论坛
引用链接
收藏
分享给好友
推荐到圈子
管理
举报
TAG: