Struts2 interceptor

看看com.opensymphony.xwork2.interceptor.Interceptor的定义
public interface Interceptor extends Serializable {
    void destroy();
    void init();
    String intercept(ActionInvocation invocation) throws Exception;
}

自定义一个简单的Interceptor

public class AroundInterceptor implements Interceptor {
    public AroundInterceptor() {
        // TODO Auto-generated constructor stub
    }
    public void destroy() {
    }
    public void init() {
    }
    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
        System.out.println("before invocation");
        String result = invocation.invoke();
        System.out.println("after invocation");
        return result;
    }
}

ActionInvocation保存了action的状态和interceptors

所以我们写在invocation.invoke()之前的代码,执行在action调用之前;写在invocation.invoke()之后的代码,执行在action调用之后。

An ActionInvocation represents the execution state of an Action. It holds the Interceptors and the Action instance. By repeated re-entrant execution of the invoke() method, initially by the ActionProxy, then by the Interceptors, the Interceptors are all executed, and then the Action and the Result.


可以为一个action配置interceptor

<action name="register" class="org.apache.struts.register.action.Register" method="execute">
    <interceptor-ref name="timer" />
    <interceptor-ref name="logger" />
    <interceptor-ref name="defaultStack">
        <param name="exception.logEnabled">true</param>
        <param name="exception.logLevel">ERROR</param>
    </interceptor-ref>
    <result name="success">thankyou.jsp</result>
    <result name="input">register.jsp</result>
</action>

可以为一个package配置一个interceptor

<package name="default" namespace="/" extends="struts-default">
    <interceptors>
    <interceptor name="aroundInterceptor" class="interceptor.AroundInterceptor"/>
    <interceptor-stack name="appDefaultStack">
      <interceptor-ref name="defaultStack">
         <param name="exception.logEnabled">true</param>
         <param name="exception.logLevel">ERROR</param>
      </interceptor-ref>
      <interceptor-ref name="aroundInterceptor"/>
    </interceptor-stack>
    </interceptors>
    <default-interceptor-ref name="appDefaultStack" />
</package>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值