谁在S​​truts 2中调用了拦截拦截方法

时间:2015-03-07 21:15:41

标签: java struts2 struts2-interceptors

我正在使用Struts2拦截器,在咨询配置管理器(struts.xml)后,容器为相关的操作类创建Action代理。现在是时候执行拦截器链了,我有一个简单的问题 - 谁在Myinterceptor类中调用了截距方法。

public class MyInterceptor  implements Interceptor{

    public void destroy() {
        // TODO Auto-generated method stub

    }

    public void init() {
        // TODO Auto-generated method stub

    }

    public String intercept(ActionInvocation ai) throws Exception {
        // TODO Auto-generated method stub
        long t1=System.currentTimeMillis();

        ValueStack s= ai.getStack();
        String val=s.findString("name");
        s.set("name", val.toUpperCase()+"_changed");

        return ai.invoke();

    }

}

根据我的理解,它由相应的动作类的actionproxy调用,在spring AOP中完成相同的行,其中proxyfactory bean执行类似的操作来调用类(切入点)的建议。 / p>

但我没有任何文件可以支持这一点。 请让我知道我是对的。

3 个答案:

答案 0 :(得分:0)

您将其作为方法intercept的参数。您不必大范围地远离拦截器实例,因为调用者在拦截时将自身传递给每个拦截器实例。

调用此方法的位置是DefaultActionInvocation

public class DefaultActionInvocation extends Object implements ActionInvocation
     

默认ActionInvocation实现

答案 1 :(得分:0)

ActionInvocation类

  1. Framework首先调用ActionInvocation的invoke()方法来开始执行Action。

  2. ActionInvocaton通过执行堆栈中的第一个拦截器来启动调用过程。

答案 2 :(得分:0)

您的拦截必须覆盖界面intercept()的方法Interceptor。只需在方法中添加@Override注释即可。

@Override
public String intercept(ActionInvocation ai) throws Exception {
   //your code
}