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; } }