<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Loading...

    java .net

    開始學習struts2(五)

    說是struts2的核心就是攔截器
    先看看攔截器的實現
    實現攔截器有這么幾個東西構成
    1、目標對象-將被攔截的對象,這個對象中的方法被調用是將被攔截
    要求目標對象面向接口編程,首先要定義接口
    package com.test.interceptor;

    /**
    * Created by IntelliJ IDEA.
    * User: Administrator
    * Date: 2009-1-9
    * Time: 17:37:23
    * 面向接口編程
    * 目標對象的接口
    */
    public interface TargetInterface {
        public void doSomething();
    }
    目標對象實現
    package com.test.interceptor;

    /**
    * Created by IntelliJ IDEA.
    * User: Administrator
    * Date: 2009-1-9
    * Time: 17:36:26
    * 目標對象
    */
    public class Target implements TargetInterface{
        public void doSomething(){
            System.out.println("do something");
        }
    }

    2、攔截器對象-里面包含在調用目標對象前或后要調用的方法
    package com.test.interceptor;

    /**
    * Created by IntelliJ IDEA.
    * User: Administrator
    * Date: 2009-1-9
    * Time: 17:39:32
    * 攔截器
    */
    public class Interceptor {
        public void before(){
            System.out.println("before");
        }

        public void after(){
            System.out.println("after");
        }
    }

    3、處理器-處理器決定攔截器如何攔截目標對象
    package com.test.interceptor;

    /**
    * Created by IntelliJ IDEA.
    * User: Administrator
    * Date: 2009-1-9
    * Time: 17:41:08
    */
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;

    /**
    * 處理器
    * 在這里將目標對象Target和攔截器Interceptor聯系在了一起
    */
    public class MyHandler implements InvocationHandler{

        /**
         * 目標對象
         * 將來目標對象的方法將被注入interceptor
         */
        private Object object;

        /**
         * 攔截器
         * MyHandler負責將Interceptor這個攔截器注入到傳入的目標對象object
         */
        private Interceptor interceptor = new Interceptor();

        public void setObject(Object object){
            this.object = object;
        }

        /**
         * 實現InvocationHandler接口的方法
         * @param o 在其上調用方法的代理實例
         * @param method 對應于在代理實例上調用的接口方法的 Method 實例
         * @param objects 包含傳入代理實例上方法調用的參數值的對象數組
         * @return  從代理實例的方法調用返回的值
         * @throws Throwable
         */
        public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
            Object result = null;
            interceptor.before();
            result = method.invoke(object,objects);
            interceptor.after();
            return result;
        }
    }

    4、代理對象-用于得到目標對象的代理對象
    package com.test.interceptor;

    /**
    * Created by IntelliJ IDEA.
    * User: Administrator
    * Date: 2009-1-9
    * Time: 17:50:52
    * 代理類
    */
    import java.lang.reflect.Proxy;
    public class MyProxy {
        /**
         * 返回obj的,處理器為MyHandler的代理對象
         * @param obj 目標對象
         * @return  目標對象的代理對象
         */
        public Object getProxy(Object obj){
            MyHandler myHandler = new MyHandler();
            myHandler.setObject(obj);
            return Proxy.newProxyInstance(obj.getClass().getClassLoader(),
                    obj.getClass().getInterfaces(),myHandler);
        }
    }

    5、最后客戶調用代碼
    package com.test.interceptor;

    /**
    * Created by IntelliJ IDEA.
    * User: Administrator
    * Date: 2009-1-9
    * Time: 17:55:45
    * 客戶調用
    */
    public class Client {
        public static void main(String[] args){
            //目標對象
            TargetInterface target = new Target();
            //代理對象
            MyProxy myProxy = new MyProxy();
            //通過代理對象得到目標對象的代理
            TargetInterface proxy = (TargetInterface)myProxy.getProxy(target);
            //通過目標對象的代理調用目標對象的方法
            proxy.doSomething();
        }
    }

    //輸出:
    //before 
    //do something
    //after

    將自己的理解寫了注釋,現在只理解到這個程度,像
    Proxy.newProxyInstance
    里面是怎么實現的,還沒深入考究
    繼續努力

    posted on 2009-01-13 11:26 閱讀(296) 評論(0)  編輯  收藏 所屬分類: 學習java

    公告

    希望有一天

    我能用鼠標雙擊我的錢包

    然后選中一張100元

    按住“ctrl+c”

    接著不停的“ctrl+v”

    嘻嘻~~~笑醒~~~



    導航

    <2009年1月>
    28293031123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    常用鏈接

    留言簿(6)

    隨筆分類(102)

    隨筆檔案(398)

    文章分類

    文章檔案(10)

    有趣網絡

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 香蕉高清免费永久在线视频| 亚洲高清视频免费| 99爱在线精品免费观看| h视频在线免费观看| 亚洲精品无码av中文字幕| 亚洲人成在线电影| 亚洲综合色婷婷七月丁香| 国产男女性潮高清免费网站| 亚洲午夜无码片在线观看影院猛| 日韩亚洲不卡在线视频中文字幕在线观看| 成人性生活免费视频| 亚洲色婷婷六月亚洲婷婷6月| 亚洲网站在线播放| 人妻无码中文字幕免费视频蜜桃| 成年人网站免费视频| 亚洲区小说区图片区| 老子影院午夜伦不卡亚洲| 最近中文字幕免费mv在线视频 | 67194在线午夜亚洲| 一级毛片**不卡免费播| 国产亚洲情侣一区二区无码AV | 黄瓜视频高清在线看免费下载| 久久久久国色av免费看| 91在线免费观看| 美女无遮挡拍拍拍免费视频| 日本免费精品一区二区三区| 国产天堂亚洲精品| 国产精品亚洲一区二区三区| 亚洲国产成AV人天堂无码| 亚洲经典在线中文字幕| 色拍自拍亚洲综合图区| 日韩精品亚洲人成在线观看 | h片在线观看免费| 国产精品免费久久久久久久久 | 亚洲精品无码久久不卡| 亚洲国产中文v高清在线观看| 亚洲第一永久AV网站久久精品男人的天堂AV| 国产成人免费高清在线观看| 国产最新凸凹视频免费| www.亚洲精品.com| 亚洲一级特黄无码片|