java 拦截器(转载自别人)
来源:互联网 发布:小学语文同步课堂软件 编辑:程序博客网 时间:2024/06/06 01:49
原文地址:http://blog.sina.com.cn/s/blog_68eebafc0100pp6o.html
拦截器是调用方法的改进.当称某个实例是拦截器是,这是就其行为上而言的;
//从代码的角度来看,拦截器就是一个类,这个类也包含方法,只是这个方法是个特殊方法,它会在目标方法调用之前“自动”执行。
//拦截器方法大都是通过代理的方式来调用的
//jdk动态代理只能对实现了接口的实例来生成代理,因此必须提供一个接口:
public interface Dog {
public void info();
public void run();
}
//它的实现:
public class DogImpl implements Dog {
public void info() {
}
public void run() {
}
}
//拦截dog实例的拦截器类:
public class DogIntercepter {
public void method1(){
}
public void method2(){
}
}
称其为拦截器,只是就它的行为而言,并不是它在代码实现上与普通java类有什么特别之处
关键是下面的ProxyHandler类,该类实现InvocationHandler接口,该接口可以动态调用目标对象的方法
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class ProxyHandler implements InvocationHandler {
private Object target;
DogIntercepter di = new DogIntercepter();
public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {
}
public void setTarget(Object o){
}
}
其与上面的两个地方耦合:
1.与拦截器耦合:上面类固定使用DogIntercepter拦截器
2.与被拦截的方法耦合:上面类制定拦截器名为info的方法
这两个耦合也需要解决,通常的解决方案是将拦截器类放在配置文件中指定,将需要被拦截的目标方法也放在配置文件中指定。
系统还需要一个代理工厂,代理工厂的主要作用是更具目标对象生成一个代理对象。
public class MyProxyFactory {
public static Object getProxy(Object object){
}
}
主程序:
public class TestDog {
public static void main(String[] args) {
}
}
- java 拦截器(转载自别人)
- 转载自某大牛-Struts2拦截器
- Java面试知识点(转载别人)
- (转载)struts2利用自带的上传拦截器 进行多图表和文本上传
- java 拦截器和过滤器区别(转载)
- java 拦截器和过滤器区别(转载)
- 转载:java 拦截器、过滤器、监听器 的区别
- java 拦截器和过滤器区别(转载)
- java 拦截器、过滤器、监听器 (转载,自己学习)
- Struts2自定拦截器
- struts2自带拦截器
- 揭示win32 api拦截细节 转载自www.hookbase.com
- [转载] 第五章 拦截器
- Struts2 的基石--拦截器(Interceptor)(转载自http://www.blogjava.net/max/archive/2006/12/06/85925.html)
- 转自别人的文章 java null 完全解读
- 转载一篇别人的学习Java之路
- struts2 拦截器使用及自带的拦截器
- Struts2拦截器(翻译自Struts2官方网站)
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 使用监听器对Spring bean id进行唯一校验
- 九度OJ 题目1092:Fibonacci
- python greenlet 实现机制
- java读写src目录下的properties文件
- java 拦截器(转载自别人)
- 结束多层循环
- 几种华丽无比开发方式
- 分割
- Sun ONE 服务器部署应用程序,报错。
- 唠骚 2013年终奖
- OSGI化你的应用的一个推荐方式
- window系统进程详解 .
- Java实现多个客户端聊天程序