知识大全 Java实现的拦截器
Posted 知
篇首语:听闻少年二字,当与平庸相斥。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java实现的拦截器相关的知识,希望对你有一定的参考价值。
Java实现的拦截器 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
拦截器在在流行的开源框架中很常见 依赖的技术就是Java的动态代理
理解拦截器的核心原理对理解这些开源框架的体系结构至关重要
下面以一个简单的模型的来说明拦截器的实现的一般方法
模型分为以下模块
业务组件 是被代理和被拦截的对象
代理处理器 实现了InvocationHandler接口的一个对象
代理对象 Proxy对象
拦截器 普通的JavaBean 在调用业务方法的之前或者之后会自动拦截并执行自己的一些方法
客户端 执行业务处理的入口
以下是模型的实现
一 业务组件 分为业务接口和业务类
/**
* 业务组件接口
*/
public interface BusinessInterface
public void doSomething();
/**
* 业务组件
*/
public class BusinessClass implements BusinessInterface
public void doSomething()
System out println( 业务组件BusinessClass方法调用:doSomething() );
二 代理处理器 包含了业务对象绑定动态代理类的处理 并实现了 InvocationHandler接口的invoke方法
import java lang reflect InvocationHandler;
import java lang reflect Method;
import java lang reflect Proxy;
/**
* 动态代理处理器工具
*/
public class DynamicProxyHandler implements InvocationHandler
private Object business; //被代理对象
private InterceptorClass interceptor = new InterceptorClass(); //拦截器
/**
* 动态生成一个代理类对象 并绑定被代理类和代理处理器
*
* @param business
* @return 代理类对象
*/
public Object bind(Object business)
this business = business;
return Proxy newProxyInstance(
//被代理类 的ClassLoader
business getClass() getClassLoader()
//要被代理 的接口 本方法返回对象会自动声称实现了这些接口
business getClass() getInterfaces()
//代理处理 器对象
this);
/**
* 代理要调用的方法 并在方法调用前后调用连接器的方法
*
* @param proxy 代理类对象
* @param method 被代理的接口方法
* @param args 被代理接口方法的参数
* @return 方法调用返回的结果
* @throws Throwable
*/
public Object invoke(Object proxy Method method Object[] args) throws Throwable
Object result = null;
interceptor before();
result=method invoke(business args);
interceptor after();
return null; //To change body of implemented methods use File | Settings | File Templates
三 拦截器 普通的JavaBean 在调用业务方法的之前或者之后会自动拦截并执行自己的 一些方法
/**
* 拦截器
*/
public class InterceptorClass
public void before()
System out println( 拦截器InterceptorClass方法调用:before()! );
public void after()
System out println( 拦截器InterceptorClass方法调用:after()! );
四 模拟客户端 执行业务处理的入口
/**
* 客户端
*/
public class Client
public static void main(String args[])
DynamicProxyHandler handler = new DynamicProxyHandler();
BusinessInterface business = new BusinessClass();
BusinessInterface businessProxy = (BusinessInterface) handler bind(business);
businessProxy doSomething();
cha138/Article/program/Java/hx/201311/27143
相关参考
struts拦截器使用 一方法调用之后使用的拦截器实现interceptor接口 拦截器一定是线程安全的就是要同步 publicinterfaceInterceptorextendsSeri
Struts2教程9:实现自已的拦截器 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在上一篇中
Hibernate拦截器简单描述 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Hibernat
Structs2.0拦截器 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! <sproper
SpringmvcSession拦截器 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 未登录不允
10分钟学懂Struts2.0拦截器 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 简介 在S
过滤器是在javaweb中你传入的requestresponse提前过滤掉一些信息或者提前设置一些参数然后再传入servlet或者struts的action进行业务逻辑比如过滤掉非法url(不是log
知识大全 iphone5 6.1越狱版 手机卫士黑名单只能拦截电话,不能拦截短信~~~请问怎么解决啊
iphone56.1越狱版手机卫士黑名单只能拦截电话,不能拦截短信~~~请问怎么解决啊?谢谢!在360手机卫士里面==》骚扰拦截==》点右上角的设置==》在来电拦截设置里面的拦截模式里自己设置最下面也
百度手机卫士呗被拦截的短信在什么地方查看您好,您可在骚扰拦截——短信拦截中找到被拦截的短信。感谢您的支持!怎么查看金山手机卫士中被拦截的短信到通讯管理--拦截记录中查看即可百度手机卫士怎么防骚扰百度手
由于航天技术的发展,未来战争的领域将伸展到太空。随着太空武器的不断出现,各种反太空武器也应运而生,拦截卫星就是其中的一种。 拦截卫