struts2(四)

来源:互联网 发布:淘宝15万贷款技术 编辑:程序博客网 时间:2024/06/01 09:05
拦截器(interceptor):struts2是框架,封装了很多功能,而struts2封装的功能都在拦截器里面,struts2有很多拦截器,但不是每个都执行,每次只执行默认的一部分。


拦截器什么时候执行:在action对象创建之后,action的方法执行之前。


拦截器的底层原理:
(一):aop思想:面向切面编程,通俗的说就是不修改源代码的情况下扩展功能。底层是动态代理。

(二):责任链模式,java中的设计模式当中的一种。责任链和过滤链很相似,过滤链:一个请求可以有多个过滤器进行过滤,每个过滤器只有做放行才能到下个过滤器。
责任链模式:要一次性进行多个操作,例如:添加,修改,删除。首先进行添加,添加执行之后做类似放行的操作,再进行修改操作,修改之后再做类似放行的操作再做删除操作。


aop思想和责任链模式如何应用到拦截器:拦截器在action对象创建之后,action中的方法执行之前执行,在action方法执行之前执行默认拦截器,使用aop思想,在action中没有直接调用拦截器的方法,而是使用配置文件进行操作。
在执行拦截器的时候,执行很多拦截器,这时候使用了责任联模式,就是说假如执行三个拦截器,执行拦截器1,放行,再执行拦截器2,放行,再执行拦截器3,放行,再执行action中的方法。
 
过滤器和拦截器的区别:
(过滤器):理论上可以过滤任意内容。
(拦截器):拦截器只会拦截action。

自定义拦截器:
拦截器结构:查看源代码之后发现,例如modeldriven这个拦截器,它首先继承一个类,它的父类实现了一个接口。
class ModelDrivenInterceptor extends AbstractInterceptor
class AbstractInterceptor implements Interceptor
在接口里有三个方法,init,destroy,intercept:拦截逻辑的操作。
在开发中一般使用写一个类继承MethodFilterInterceptor,它可以让action里面的某个方法不进行拦截。
让拦截器和action有关系,使用配置文件方式,而不是在action中调用拦截器的方法。 

原创粉丝点击