拦截器的基本使用方法

一、定义一个拦截器类

1、实现Interceptor接口(最原始的方法)

Public void destroy()

Public void init()在启动服务器的时候执行

Public String intercept(ActionInvocation invocation){

   Invocation.invoke();

}

2、在struts中定义拦截器

<interceptors>

    <interceptor name="" class="" > </interceptor>

</interceptors>

 

1、action使用拦截器

<interceptor-ref name="" ></interceptor-ref>

 

注意:一旦在action里定义了自己的拦截器,默认的拦截器就不再起作用,我们要在action最后加上默认的拦截器:defaultStack;拦截器配置里可以添加属性:

<interceptor name="" class="" > 

    <param name="test">test属性的值</param>

</interceptor>。获得该属性值的方法如下:

 

在拦截器类里定义一个方法

Private String test ; 

Public void setTest(){}

Public void getTest(){}

<interceptors>

<interceptor name="" class="test1" > 

    <param name="test"> zhuyingming </param>

</interceptor>

</interceptors>

解释:启动服务时先在test1类里并执行setTest方法把<param>里的值赋值给test ,再执行init方法

 

 

二、继承AbstractInterceptor

 

1、定义拦截器的可以直接继续AbstractInterceptor(该类实现了Interceptor接口,并提供了空实现的initdestroy的方法),只需要实现其抽象方法intercept即可,默认拦截excute方法,其他的与原始定义拦截器的使用方式一样。

 

 

 

三、方法拦截器

指定方法的拦截 MethodFilterInterceptor 抽象类 该类继承 AbstractInterceptor

 

实现doInterceptor方法

Public String doInterceptor (ActionInvocation invocation)

excludeMethods 不过率的方法

includeMethods 拦截的方法

两种都有的话 为includeMethods

在使用的时候指定

<interceptor-ref name="theInterceptor1">

<param name="excludeMethods">MethodName</param>

<param name="includeMethods">MethodName</param>

</interceptor-ref>

 

1)如果即没有指定includeMethods也没有指定excludeMethods的方法默认的时includeMethos方法

2)如果仅仅指定了includeMethods的方法,没有包含在includeMethods里的方法就不会被拦截。(与执行不执行没有关系)s

 

(3)拦截器执行 和 方法执行

<action name = " actionName" class="actionClass" method="methodName">

   <interceptor-ref name="">

          <param name="includeMethods">execute</param>

          <param name="excludeMethods">Myexecute</param>

   </interceptor-ref>

</action>

action执行的方法是MethodName 方法execute不执行

如果Myexecute方法在excludeMethods里面,则拦截器不执行,方法仍然会执行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值