长篇连载 ,如何一次通过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:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2009-01-09  
    123
45678910
11121314151617
18192021222324
25262728293031

我的存档

数据统计

  • 访问量: 523
  • 日志数: 10
  • 建立时间: 2008-09-09
  • 更新时间: 2008-09-25

RSS订阅

Open Toolbar