ITPub博客

首页 > Linux操作系统 > Linux操作系统 > pass 310-083 (002-design pattern)

pass 310-083 (002-design pattern)

原创 Linux操作系统 作者:powerbat 时间:2008-09-16 10:31:19 0 删除 编辑
第一种设计模式

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.

225526_200809161033021.gif

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/225526/viewspace-448512/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-09-09

  • 博文量
    10
  • 访问量
    7477