一、Struts2拦截器原理:
Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的 拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器。
比如:应用要求用户登陆,且必须为指定用户名才可以查看系统中某个视图资源;否则,系统直接转入登陆页面。对于上面的需求,可以在每个Action的执行实际处理逻辑之前,先执行权限检查逻辑,但这种做法不利于代码复用。因为大部分Action里的权限检查代码都大同小异,故将这些权限检查的逻辑放在拦截器中进行将会更加优雅。
1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.
2. 拦截器栈(Interceptor Stack)。Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用。
拦截器的基本使用顺序:
第一步:建立拦截器的继承类(继承 AbstractInterceptor重写里面的intercept方法)
在intercept方法里面写上需要拦截的代码;
通过 String re = invoke.invoke(); 获得对应action的返回值;
第二步:配置拦截器:
第三步:使用拦截器:(注意:在使用自己写的拦截器后默认的拦截器失效,有一些功能不能实现需要写上默认的拦截器 <interceptor-ref name="defaultStack"/>)
拦截器栈:
拦截器栈 也是一个拦截器(多个拦截器组成的一个拦截器) 使用方法和拦截器一样