struts2的拦截器

1. 拦截器是符合DRY原则的。
DRY原则是“Don't Repeat Yourself”的缩写。意思是说,在一个设计里,对于任何东西,都应该有且只有一个表示,其它的地方都应该引用这一处。这样需要改动的时候,只需调整这一处,所有的地方就都变更过来了。

struts2的拦截器是动态配置的(struts-default.xml,struts.xml),具有可插拔性,提供了很好的代码复用,

2. 拦截器是符合AOP的
AOP(Aspect Orient Program 面向切面编程),是OOP的延伸,从程序的运行角度来考虑程序的流程,取得业务处理过程的切面,在特定切面插入特定方法。 AOP最终要实现的效果是方法拦截,实现方式有动态代理和静态织入两种。静态织入就是在程序编译时把辅助方面的业务关系直接插入到主业务方面代码里面;动态代理是在运行时产生一个 代码类来代理处理各个方面的关系,dotnet现在大多数AOP框架都用这个。

struts2是采用动态代理来实现AOP的。被插入到AOP代理方法中的拦截器方法,就是通过拦截器来提供的。

 

3. struts2的拦截器是基于jdk的reflection机制实现的。拦截器实现接口Interceptor的 intercept() 方法,在方法实现中添加调用目标方法之前或者之后的代码,例如,下面的拦截器实现可以打印出目标action的执行时间:

long start = System.currentTimeMillis();

 

String result = invocation.invoke();

 

System.out.println("Cost time : " + System.currentTimeMillis()-start);

 

当然,如果希望时间精确,该interceptor应该放在栈的最底层,也就是目标action方法执行前的最后一个拦截器以及执行后的第一个拦截器。

 

4. struts2常用的default interceptor定义在struts-default.xml中,由struts core jar和xwork jar提供,譬如ParametersInterceptor就由xwork提供。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值