struts2之拦截器相关类

1:拦截器和拦截器栈是一个级别的,也就是说一个拦截器栈中包括许多拦截器, 一个拦截器栈中还可以包括许多拦截器栈,配置如下方式:
<interceptors>
           <!-- 先定义拦截器 -->
           <interceptor name="myInterceptor" class="com.zzz.struts2.interceptor.MyInterceptor">
              <!-- 指定系统初始化给拦截器的参数 -->
              <param name="hello">张钊钊</param>
           </interceptor>
           <!-- 加到自己设置的拦截器栈里边去 -->
           <interceptor-stack name="myStack">
              <interceptor-ref name="myInterceptor">
              </interceptor-ref>
              <interceptor-ref name="defaultStack"></interceptor-ref>
           </interceptor-stack>
       </interceptors>
拦截器的使用:1.先定义;2.在引用使用;
<interceptor name="myInterceptor" class="com.zzz.struts2.interceptor.MyInterceptor">
<interceptor-ref name="myInterceptor">
              </interceptor-ref>
 2:struts2中有一个系统默认的拦截器栈是 defaultStack,如果你手动引用自己的拦截器,系统默认的拦截器栈将不起作用;这样必需手动引入系统的拦截器栈<interceptor-ref name="defaultStack">
              </interceptor-ref>
如果想改变系统默认的拦截器栈,可以这样配置:
<default-interceptor-ref name="myStack">
</default-interceptor-ref>其中myStack是自己定义的拦截器栈名字;
如果拦截器栈中有多个拦截器,在执行action之前的顺序跟配置拦截器的顺序一致,而在action之后执行的顺序是相反的;
 
3:抽象的拦截器类AbstractInterceptor
1:Interceptor这个超级拦截器接口,有三方法需要实现,但是如果不想使用init();
    destroy()方法,可以去继承这个抽象拦截器类;
它的使用跟上边的没有什么区别;
 
4:方法过滤拦截器MethodFilterInterceptor

1:上边的拦截器都要是针对整个action的,如果针对某个方法进行拦截可以去继承这个类;
它的使用跟上边的使用方法差不多,只是需要要配置它对那个方法进行拦截,方法过滤拦截器最好不要配置到自己设置默认的拦截器栈里边,自己手动配置.
interceptor-ref name="myInterceptor3">
              <param name="includeMethods">execute</param>
              <param name="excludeMethods">execute</param>
           </interceptor-ref>
           <interceptor-ref name="defaultStack"></interceptor-ref>
其中includeMethods ,excludeMethods是固定写法: includeMethods 包含拦截那些方法,多个方法需要用”,”隔开; excludeMehtods是排除拦截的那些方法;
5:鉴听器PreResultListener接口
1:它的鉴听点在拦截器执行完某个action方法后,在渲染视图之前做一些事情;让某个类去实现这个接口;
然后向需要它的拦截器中注册进去如下代码:
publicclass MyInterceptor3 extends MethodFilterInterceptor {
    privatestaticfinallongserialVersionUID = 3756655410194005443L;
    @Override
    protected String doIntercept(ActionInvocation invocation) throws Exception {
       //把鉴听器注册到拦截中去;
       invocation.addPreResultListener(new MyListener());
       System.out.println("my Interceptor3");
       String result=arg0.invoke();
       System.out.println("my interceptor3 finshed!");
       return result;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一位远方的诗人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值