- 19
- 0
- 约 3页
- 2015-09-26 发布于重庆
- 举报
拦截器的实现原理
在了解Struts2中拦截器使用方式之前,先展示拦截器的底层实现原理是如何的。之前也说了拦截器是一个普通的Java对象,而被拦截的正常执行业务逻辑功能的类也是一个普通的Java对象,那么如何使这两个对象进行关联,并且如何知道这两个对象执行的先后顺序。技术要点
本节代码演示拦截器如何实现,介绍的知识点如下:
拦截器类和被拦截类内容。
运用反射机制调用类和类方法。
设置拦截器处理类,配置拦截器在何时执行以及拦截器类和被拦截类执行先后顺序。
设置代理对象类实现拦截器拦截功能。
测试程序运行结果显示拦截功能正常执行情况演示代码功能执行类:Java代码 package com.liu;
public interface ExecuteFunctionInterface {
public void execute();
}
功能执行接口:
Java代码 !---------文件名:ExecuteFunctionInterface.java-------- package com.liu;
public interface ExecuteFunctionInterface {
public void execute();
}
拦截器类:
Java代码 !---------文件Interceptor.java--------
package com.liu;
public class Interceptor {
// 拦截执行功能类之前执行方法
public void beforeDoing() {
System.out.println(before doing Something...);
}
// 拦截执行功能类之后执行方法
public void afterDoing() {
System.out.println(after doing Something...);
}
}
拦截器处理类:Java代码 !---------文件InterceptorHandler.java--------
package com.liu;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
//拦截器处理类
public class InterceptorHandler implements InvocationHandler {
private Object object; private Interceptor inter = new Interceptor();
// 设置需要拦截的执行功能类
public void setObject(Object object) {
this.object = object;
} // 接口invoke方法,proxy是代理实例,method是实例方法,args是代理类传入的方法参数。
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
inter.beforeDoing(); // object提供该方法的类实例,args是调用方法所需的参数值的数组
Object returnObject = method.invoke(object, args);
inter.afterDoing();
return returnObject;
}
}
代理对象类:
Java代码 !----------文件名:ProxyObject.java----------package com.liu;
import java.lang.reflect.Proxy;
public class ProxyObject {
private InterceptorHandler handler = new InterceptorHandler();
// 得到执行类的代理对象实例public Object getProxy(Object object) {
handler.setObject(object);
// 创建对象实例
Return Proxy.newProxyInstance(ExecuteFunction.class.getClassLoader(),
object.getClass().getInterfaces(), handler);}
}测试程序:
Java代码 !---------------文件名:TestInterceptor.java---------------package
您可能关注的文档
- 开关电源LED PSU的能效计算公式.xls
- 开发基于PlugInFrame的ImageJ插件.doc
- 开放式基金投资数学模型论文.doc
- 开源软件的商业模式和研究.doc
- 开窗技术治疗老年退变性腰椎管狭窄症的安全性及疗效.pdf
- 开级配混凝土空隙率设计方法研究.pdf
- 开题报告电子科学与技术系毕业设计本科模板.doc
- 异位妊娠保守治疗患者心理应激及心理干预应用研究进展.pdf
- 异位嗜铬细胞瘤的临床及影像学诊断.pdf
- 异常类的定义及处理.doc
- 全过程工程管理造价咨询工程监理项目服务方案投标方案(技术部分).doc
- 招标代理服务投标技术服务方案(技术方案).doc
- AI大模型与AIGC技术在公安领域的应用解决方案(99页 PPT).pptx
- 工业4.0智能制造数字工厂规划方案.pptx
- 树立社会主义核心价值观.docx
- 三年(2023-2025)中考历史真题分类汇编(全国)专题21 科技文化与社会生活(解析版).docx
- 2025年中考道德与法治真题完全解读(吉林卷).pdf
- 2025年中考道德与法治真题完全解读(安徽卷).pdf
- 三年(2023-2025)中考历史真题分类汇编(全国)专题14 人民解放战争(解析版).pdf
- 三年(2023-2025)广东中考历史真题分类汇编:专题03 中国近代史(八年级上册)(解析版).docx
原创力文档

文档评论(0)