Struts2 Interceptor 拦截器的使用流程

struts.xml

<struts>
    <package name="default" namespace="/" extends="struts-default">
        <!-- 自定义拦截器组合 -->
        <interceptors>
            <!-- 自定义拦截器 -->
            <interceptor name="my" class="com.tc.MyInterceptor"/>     
            <!-- 自定义拦截器栈 -->
            <interceptor-stack name="myStack">
                <interceptor-ref name="my"></interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </interceptor-stack> 
        </interceptors>

        <!-- 以下两种为默认情况下所依赖的拦截器,根据不同情况酌情选择 -->
        <!-- 整个struts.xml都依赖于myStack拦截器栈 -->
        <default-interceptor-ref name="myStack"></default-interceptor-ref>
        <!-- 整个struts.xml都依赖于my拦截器 -->
        <!-- <default-interceptor-ref name="my"></default-interceptor-ref> -->


        <action name="add" class="com.tc.HelloWorld" method="add">
            <!-- 可添加action的自定义拦截器 -->
            <interceptor-ref name="my"></interceptor-ref>
            <!-- 亦可添加action的自定义拦截器栈 -->
            <interceptor-ref name="myStack"></interceptor-ref>
            <result>/HelloWorld.jsp</result>
        </action>

    </package>
</struts>

拦截器类

/**
 * 自定义拦截器:
 * 实现implements Interceptor
 * 或者
 * 继承extends AbstractInterceptor
 * @author TC
 *
 */
public class MyInterceptor extends AbstractInterceptor{

    /**
     * 拦截器销毁之前调用的方法
     */
    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        System.out.println("destroy");
    }

    /**
     * 拦截器处理之前,调用init方法初始化
     */
    @Override
    public void init() {
        // TODO Auto-generated method stub
        System.out.println("init");
    }

    /**
     * 拦截器处理方法
     */
    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
        // TODO Auto-generated method stub

        System.out.println("执行之前");

        String result = invocation.invoke();

        System.out.println("执行之后");

        return result;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值