struts2--拦截器

1、拦截器:拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。

  --Params拦截器:Parameters拦截器将把表单字段映射到ValueStack栈的栈顶对象的各个属性中。如果某个字段在模型里没有匹配的属性,Param拦截器将尝试ValueStack栈中的下一个对象;

  --ModelDriven拦截器:如果Action类实现了ModelDriven接口,则拦截器将把ModelDriven接口的getModel()方法返回的对象置于栈顶;

2、使用paramsPrepareParamsStack 拦截器栈:

  --struts.xml中写入:

    <default-interceptor-ref name=”paramsPrepareParamsStack”></default-interceptor-ref>

  --使用该拦截器栈:params -> modelDriven -> params

  --相比于defaultStack, paramsPrepareParamsStack能够先将参数赋给ValueStack栈顶对象;

3、Preparable拦截器:负责为getModel() 准备model;

4、自定义拦截器:

  --实现Interceptor接口;

  --AbstractInterceptor类实现了Interceptor接口,因此自定义的拦截器可以继承该类,它提供了空白的init方法和destroy方法的实现;

public class MyInterceptor extends AbstractInterceptor {
    private static final long serialVersionUID = 1L;

    @Override
    public String intercept(ActionInvocation invocation) throws Exception{
        System.out.println("before");
        String result = invocation.invoke();
        System.out.println("after");
        return result;
    }
}
原文地址:https://www.cnblogs.com/tengtao93/p/5142133.html