struts --interceptor
2016-04-21 19:41
393 查看
Interceptor 原本是AOP中的概念,本质上是代码段,可以通过织入点(可以是对象,也可以是对象中的方法),来指定Interceptor的代码逻辑在织入点之前还是之后执行,从而起到拦截的作用。
AOP:Aspect,一个关注点的模块化。Interceptor。数据库的事务管理。
Advice:环绕通知
PointCut:Action对象
JoinPoint:Action的执行
正题-----
xwork中的Interceptor,是一组环绕在切入点(Action对象)的执行切面,对Action起拦截作用。
public interface Interceptor extends Serializable{
void destroy();
void init();
String intercept(ActionInvocation invocation) throws Exception;
}
便于ActionInvocation在Interceptor内部进行执行调度:invocation.invoke();意思是对 对象和Action对象共同构成的执行栈进行逻辑执行调度。
Interceptor中,有两种不同的执行逻辑:
1.调用ActionInvocation的invoke方法来指定对执行栈的进一步调度执行,invoke方法触发了执行栈中剩余的的Interceptor和Action形成递归调用链,执行完成并返回结果。
2.直接返回一个String类型的ResultCode来终止执行栈的调度。
xwork的AOP与spring的AOP对比
本质区别是对于切入点的定义不同,拦截器所拦截的对象不同。spring偏重方法级别的拦截,xwork针对Action对象的拦截。
位于invocation.invoke方法调用之前的代码,会在Action对象执行之前执行。
位于invocation.invoke方法调用之后的代码,会在Action对象执行之后执行。
AOP编程的本质是对切入点运行状态的改变。
xwork的AOP中。切入点是Action对象,xwork中拦截器的职责是通过对Action状态(一个对象的状态由此对象的属性来表达)的改变对Action的行为进行扩展。
xwork的Interceptor是对Action对象的属性进行管理。
Action作为运行在属性-行为模式上的对象,特质有三个:
与外部环境的交互接口(环境依赖)
请求数据和响应数据(数据依赖)
构成Action的行为动作与业务逻辑处理对象之间的协作关系。(协作依赖)
----IOC相似。xwork是用AOP来实现IOC。
Interceptor的逻辑意义:1.对事件处理流程中的主要职责和次要职责的有效划分,分而治之。
2.Interceptor在Action周围形成众多的执行层次,为实现AOP编程打下数据结构的基础。
3.Interceptor与Action共同构成的执行栈被ActionInvocation调度执行,应用责任链模式,从而改变事件处理流程的顺序处理逻辑,自然形成AOP模型的雏形。
AOP:Aspect,一个关注点的模块化。Interceptor。数据库的事务管理。
Advice:环绕通知
PointCut:Action对象
JoinPoint:Action的执行
正题-----
xwork中的Interceptor,是一组环绕在切入点(Action对象)的执行切面,对Action起拦截作用。
public interface Interceptor extends Serializable{
void destroy();
void init();
String intercept(ActionInvocation invocation) throws Exception;
}
便于ActionInvocation在Interceptor内部进行执行调度:invocation.invoke();意思是对 对象和Action对象共同构成的执行栈进行逻辑执行调度。
Interceptor中,有两种不同的执行逻辑:
1.调用ActionInvocation的invoke方法来指定对执行栈的进一步调度执行,invoke方法触发了执行栈中剩余的的Interceptor和Action形成递归调用链,执行完成并返回结果。
2.直接返回一个String类型的ResultCode来终止执行栈的调度。
AOP元素 | spring实现机制 | xwork实现机制 |
切面(Aspect) | 拦截器 | 拦截器 |
通知(Advice) | Around、Before 、After | Around、Before 、After |
切入点(Pointcut) | 满足特定条件的方法 | Action对象 |
连接点(Joinpoint) | 方法的执行 | Action的执行 |
位于invocation.invoke方法调用之前的代码,会在Action对象执行之前执行。
位于invocation.invoke方法调用之后的代码,会在Action对象执行之后执行。
AOP编程的本质是对切入点运行状态的改变。
xwork的AOP中。切入点是Action对象,xwork中拦截器的职责是通过对Action状态(一个对象的状态由此对象的属性来表达)的改变对Action的行为进行扩展。
xwork的Interceptor是对Action对象的属性进行管理。
Action作为运行在属性-行为模式上的对象,特质有三个:
与外部环境的交互接口(环境依赖)
请求数据和响应数据(数据依赖)
构成Action的行为动作与业务逻辑处理对象之间的协作关系。(协作依赖)
----IOC相似。xwork是用AOP来实现IOC。
Interceptor的逻辑意义:1.对事件处理流程中的主要职责和次要职责的有效划分,分而治之。
2.Interceptor在Action周围形成众多的执行层次,为实现AOP编程打下数据结构的基础。
3.Interceptor与Action共同构成的执行栈被ActionInvocation调度执行,应用责任链模式,从而改变事件处理流程的顺序处理逻辑,自然形成AOP模型的雏形。
相关文章推荐
- 如何在Eclipse中查看JDK类库的源代码 【转】
- Eclipse将输出结果保存到文件中
- Java urlrewrite+Maven 简单使用
- Java Calendar 基础详解实例
- struts--Action解读
- HashMap内部实现原理
- java并发之Lock与synchronized的区别
- Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC
- Spark-submit 时出现java.lang.ClassNotFoundException
- java容器学习
- java 链表 树
- java并发之Lock
- Java读取properties文件中文乱码问题解决
- struts2动态方法调用
- java发送get/post请求
- 20160421javaweb之上传下载小案例---网盘
- LeetCode145 Binary Tree Postorder Traversal(迭代实现) Java
- struts action和jsp之间的传值
- JAVA多线程专题
- Struts 404 The requested resource is not available