struts2學習-簡單的攔截器

第一個接口:java

package com.struts2.interceptorDemo;


/**
 * @author Administrator
 *
 */
public interface Dog {
//兩個方法的聲明
   public void info();
   public void run(); 
}
ide

接口的實現類測試

package com.struts2.interceptorDemo;


/**
 * @author Administrator
 *
 */
public class DogImpl implements Dog{


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


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


}
this

攔截器的定義spa

package com.struts2.interceptorDemo;


public class DogInterceptor {
   //第一個攔截器
public void method1(){
System.out.println("模擬方法1");
}
//第二個攔截器
public void method2(){
System.out.println("模擬方法1");
}
}
代理

代理工廠orm

package com.struts2.interceptorDemo;


import java.lang.reflect.Proxy;


public class MyProxyFactory {
    public static Object getProxy(Object o){
    
    ProxyHandle handle=new ProxyHandle();
    
    handle.setTarget(o);
    
    return Proxy.newProxyInstance(DogImpl.class.getClassLoader(), o.getClass().getInterfaces(), handle);
    }
}
接口

handle類get

/**
 * 
 */
package com.struts2.interceptorDemo;


import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;


/**
 * @author Administrator
 *
 */
public class ProxyHandle implements InvocationHandler {

    private Object target;
    DogInterceptor dogInterceptor=new DogInterceptor();
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object result=null;
if(method.getName().equals("INFO")){
dogInterceptor.method1();
result=method.invoke(target, args);
dogInterceptor.method2();
}else{
result=method.invoke(target, args);
}
return result;
}
public void setTarget(Object o) {
this.target = o;
}


}
it


測試類

/** *  */package com.struts2.interceptorDemo;/** * @author Administrator * */public class TestDog {/*** @param args*/public static void main(String[] args) {//建立一個實例          Dog dogProxy=new DogImpl();          Dog dog=null;          Object proxy=MyProxyFactory.getProxy(dogProxy);          if(proxy instanceof Dog){         dog=(Dog)proxy;          }          dog.info();          dog.run();} }

相關文章
相關標籤/搜索