重写拦截器和自定义拦截器

1):重写拦截器的方式
 
重写拦截比较简单首先确定重写的拦截器:
 
例如:DefaultWorkflowInterceptor拦截器
I:找到DefaultWorkflowInterceptor的源代码 复制源代码
 
II:在自己创建的工程里加入DefaultWorkflowInterceptor的整个包的路径
     com.opensymphony.xwork2.interceptor
     创建一个类DefaultWorkflowInterceptor张贴复制DefaultWorkflowInterceptor的源代码
这样就可以重写源码代码  根据自己的需求
当程序查找引用包的时候首先在classpath搜索 ,所以在工程里的重写的拦截器优先
每个拦截器都是实现了
init: 该方法将在拦截器被创建后立即被调用, 它在拦截器的生命周期内只被调用一次. 可以在该方法中对相关资源进行必要的初始化
interecept: 每拦截一个请求, 该方法就会被调用一次.
destroy: 该方法将在拦截器被销毁之前被调用, 它在拦截器的生命周期内也只被调用一次. 
 
Struts 会依次调用为某个 Action 而注册的每一个拦截器的 interecept 方法.
每次调用 interecept 方法时, Struts 会传递一个 ActionInvocation 接口的实例.
ActionInvocation: 代表一个给定 Action 的执行状态, 拦截器可以从该类的对象里获得与该 Action 相关联的 Action 对象和 Result 对象. 在完成拦截器自己的任务之后, 拦截器将调用 ActionInvocation 对象的 invoke 方法前进到 Action 处理流程的下一个环节.
AbstractInterceptor 类实现了 Interceptor 接口. 并为 init, destroy 提供了一个空白的实现
 
举例
I:首先创建一个类名字:LoginInterceptor 且继承AbstractInterceptor类
 
II:重写intercept方法
 
       @Override
      public  String intercept(ActionInvocation invocation)  throws  Exception {
          //在这里就可以写 你要做的逻辑判断
          return  invocation.invoke();
     }
 
III:在配置文件中进行配置加载 自定义拦截器
 
< interceptors >
     
    < interceptor  name =  "loginInterceptor"  class = "survey.interceptors.LoginInterceptor"  >
      </ interceptor
                < interceptor-stack  name =  "crudStack" >
//放在这个位置会首先执行,放在 paramsPrepareParamsStack拦截器栈后面则会等 paramsPrepareParamsStack栈的拦截器都执行完了在执行这个 loginInterceptor
位置影响着执行顺序
                  < interceptor-ref  name = "loginInterceptor"  ></ interceptor-ref >
                  < interceptor-ref  name = "paramsPrepareParamsStack"  > </ interceptor-ref >
                </ interceptor-stack >
  </ interceptors >
//设置为默认默认引用的拦截器栈
<  default-interceptor-ref  name = "crudStack" ></  default-interceptor-ref  >
 
 
 
 

转载于:https://www.cnblogs.com/lflx/p/4398134.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值