struts拦截器

struts拦截器

  1. 配置拦截器
 <interceptors>
         <interceptor name="" class="">
         <!--拦截器栈-->
         <interceptor-stack name="">
                    <interceptor-ref name="">
                    </interceptor-stack>
         </interceptor>

2.默认拦截器

  <!--将拦截器myintertceptor配置为默认拦截器-->
    <default-interceptor-ref name="myInterceptor"/>
在struts.xml配置一个包时,可以为其指定默认拦截器,一旦指定了,如果该包中的Action
没有指定其他拦截器,则默认拦截器会起作用.  
如果需要多个拦截器作为默认拦截器,定义成一个拦截器栈

3. 实现拦截器类
自定义拦截器需要实现.Interceptor接口,该接口提供了三个方法

public interface Interceptor extrends Serializable{
  void init();
  void destroy();
  String Intercept(ActionInvocation invocation) throws Exception;
  }
public abstract class AbstractInterceptor implements Interceptor{
public void init(){}
public void destroy(){}
public abstract String Intercept(ActionInvocation invocation) throws Exception;

AbstractInterceptor类提供了init()和destroy()方法的空实现,并且会在程序开始和结束时各执行一遍。
自定义拦截器,只需继承这个抽象类,在struts.xml定义自定义的拦截器,在struts.xml中的Action中使用拦截器。

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

public class MyInterceptor extends AbstractInterceptor{

    @Override
    public String intercept(ActionInvocation arg0) throws Exception{
        System.out.println("拦截器正在运行");
        String resultString =arg0.invoke();
        System.out.println("拦截器已经结束....");
        return resultString;
    }
}

ActionInvocation参数是对被拦截Action的一个引用,invoke总是映射到第一个拦截器
通过调用该参数的invoke方法,将控制权传给下一个拦截器或Action的execute方法或者返回一个
控制字符串停止后续的拦截器.
4.拦截器的方法过滤
在Action中使用拦截器,默认情况下回拦截Action中所有的方法,但是在某些情况下,可能只需要
拦截Action中的一个或多个方法,有时候也希望不拦截某个方法。
MethodFilterInterceptor抽象类,该类继承了AbstractInterceptor,并重写了interceptor()方法,
同时还提供了doInterceptor()的抽象方法,用户可以自定义拦截逻辑,实现方法和Abstract类似。
在MethodFilterInterceptor提供了两个重要方法:
setExcludeMethods(String excludeMethods):设置不需要过滤的方法。
setIncludeMethods(String excludeMethods):设置需要过滤的方法。如果出现冲突,以次为准。

     <interceptor-ref name="">
      <parm name="excludeMethods">excute,register</parm>
      </interceptor-ref>

5.使用拦截器实现权限控制
拦截器的invocation参数可以轻易的访问到请求相关的ActionContext实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值