使用拦截器的方法过滤特性

        如果我们希望对Action中的部分方法实现拦截,Struts2为了实现方法过滤的功能,定义了一个名为MethodFilterInterceptor的类,该类继承了AbstractInterceptor。若想自定义的拦截器能够实现方法过滤的功能可以继承MethodFilterInterceptor类,该类重写了父类AbstractInterceptor的intercept方法,又提供了一个doIntercept的抽象方法,在此方法中用户可以自定义拦截器。
MethodFilterInterceptor提供了两个非常重要的方法,用于方法的过滤:
setIncludeMethods(String includeMethods)
setExcludeMethods(String excludeMethods),
setExcludeMethods的主要的作用是排除要过滤的方法,例如setExcludeMethods("execute"),这样Action的execute方法将不会被拦截,
setIncludeMethods方法正好相反,setIncludeMethods("execute"),这样execute方法将被拦截。


       以硬编码的形式设置要过滤的方法的灵活性不够,因袭可以通过struts.xml配置文件来设置方法是否过滤是不错的选择:
<interceptor name="FilterhelloInterceptor">
    <param name="excludeMethods">execute</param>
</interceptor>
struts.xml是通过属性来设置的,name="excludeMethods"表示要添加排除过滤的方法,当前配置的拦截过滤的方法时execute方法。若要排除多个方法,则使用都好分开
<interceptor name="FilterhelloInterceptor">
    <param name="excludeMethods">execute,aa,bb,cc,dd</param>
</interceptor>
以上的配置过滤掉了execute,aa,bb,cc,dd方法,这些方法不会被拦截器所拦截。


也可以使用includeMethods参数指定要拦截的方法名。
<interceptor name="FilterhelloInterceptor">
    <param name="includeMethods">execute,aa,bb,cc,dd</param>
</interceptor>


下面给出一段继承自MethodsFilterInterceptor类的自定义拦截器
package com.inter;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

public class FilterhelloInterceptor extends MethodFilterInterceptor {
 
private static final long serialVersionUID = 1L;

@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
        System.out.println("using the MethodFilterInterceptor...");
        String result = invocation.invoke();
        return result;
}
public void setExcludeMethods(String excludeMethods){
super.setExcludeMethods(excludeMethods);
}
        @Override
public void setIncludeMethods(String includeMethods) {
super.setIncludeMethods(includeMethods);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值