拦截器

Posted xiaosuye

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拦截器相关的知识,希望对你有一定的参考价值。

package 拦截器;

public interface 一个接口 {
    public void sys();
}

package 拦截器;

public class 一个类 implements 一个接口{

    @Override
    public void sys() {
        // TODO 自动生成的方法存根
        System.out.println("一个类执行了");
    }

}

package 拦截器;

import java.lang.reflect.Method;

public interface 拦截器接口 {
    public boolean befor(Object proxy,Object obj, Method me,Object[] objs);
    public void around(Object proxy,Object obj, Method me,Object[] objs);
    public void after(Object proxy,Object obj, Method me,Object[] objs);
}

package 拦截器;

import java.lang.reflect.Method;

public class 拦截器类 implements 拦截器接口{

    @Override
    public boolean befor(Object proxy, Object obj, Method me, Object[] objs) {
        // TODO 自动生成的方法存根
        System.out.println("拦截器befor执行了");
        return true;
    }

    @Override
    public void around(Object proxy, Object obj, Method me, Object[] objs) {
        // TODO 自动生成的方法存根
        System.out.println("拦截器around执行了");
    }

    @Override
    public void after(Object proxy, Object obj, Method me, Object[] objs) {
        // TODO 自动生成的方法存根
        System.out.println("拦截器after执行了");
    }

}

package 拦截器;

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

public class 动态代理类 implements InvocationHandler{
    Object obj = null;
    String ljqm = null;
    public 动态代理类(Object obj ,String ljqm) {
        this.obj = obj;
        this.ljqm = ljqm;
    }
    public static Object ss(Object obj ,String ljqm) {
        return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), new 动态代理类(obj,ljqm));
    }
    @Override
    public Object invoke(Object arg0, Method arg1, Object[] arg2) throws Throwable {
        if(ljqm == null) {
            return arg1.invoke(this.obj, arg2);
        }
        Object obj = null;
        拦截器接口 lj= (拦截器接口) Class.forName(ljqm).newInstance();
        if(lj.befor(arg0, this.obj, arg1, arg2)) {
            obj = arg1.invoke(this.obj, arg2);
        }else{
            lj.around(arg0, this.obj, arg1, arg2);
        }
        lj.after(arg0, this.obj,arg1, arg2);
        // TODO 自动生成的方法存根
        return obj;
    }
    
}

package 拦截器;

public class 实现类 {
    public static void main(String[] args) {
        一个接口 u = (一个接口) 动态代理类.ss(new 一个类(), "拦截器.拦截器类");
        u.sys();
    }
}
































































































以上是关于拦截器的主要内容,如果未能解决你的问题,请参考以下文章

什么是拦截器,如何配置拦截器,如何使用拦截器

struts2 拦截器

SpringMVC 拦截器

Okhttp3拦截器-应用拦截器和网络拦截器的区别

SpringBoot支持interceptor(拦截器)

OKHTTP拦截器CallServerInterceptor的简单分析