sturts2 自定义拦截器的详解

自定义拦截器 方式 一

实现 接口 Interceptor
拦截器的生命周期(不可能是每个访问都创建一遍 拦截器)

随着程序的开始 而 创建
随着程序的结束 而 销毁

public class Myintercept01  implements  Intercetor{
    //下面 三个都是 生命周期方法

    @Override
    public void init(){

    }
    //拦截方法
    @Override
    public String intercept(ActionInvocation  actionInvocation) throws Exception{
        return "";

    }
    //销毁方法
    @Override
    public void destroy(){


    }

}

自定义拦截器方法 二
继承 AbstractInterceptor

public class Myintercept02 extends AbstractInterceptor{
    @Override
    public  String intercept(ActionInvocation actionInvocation) throws ExceptionP{

    return "";

}

(常用的)自定义过滤器方式三
继承方法 过滤 拦截器 MethodFilterInterceptor

public class Myintercept03 extends MethodFilterInterceptor{
    //拦截方法
    @Override
    protected String doIntercept(ActionInvocation invocation) throws Excetion{
        //前处理
        System.out.prinln("前处理");

        //放心方法
        //所有的拦截器都执行完毕后 会拿到一个字符串
        //这个字符串 就是 action 类 执行完毕后 返回的字符串 

        String result = invocation.invoke();

        //后处理
        System.out.println("后处理");

        return result;
    }
}

配置 自定义拦截器
可以指定 拦截 或者 不拦截 那些方法

public class Demo01Actin
extends ActionSupport{
public String  add();

    return "success";

}

publuic String delete(){
    System.out.println("delete");
    return "success";
}

public String update (){
    System.out.println("update");
    return "success";
}

public  String find(){
    System.out.println("find");
    return "success";
}

配置 struts.xml

<?xml version="1.0" encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"
>
<struts>
<package name="inter" namespace ="/" extends ="struts-default">
<!--注册拦截器-->
<interceptors>
<!--注册你自己定义的拦截器-->
<interceptor name="Myintercept03" class = "com.lanou.intercept.Myintercept03"></interceptor>
<!-- 2.注册拦截器栈-->
<interceptor-stack name="myStack">
<!--引入拦截器>
<interceptor-ref name ="Myintercept03">
<!--设置不想拦截的方法 不想 拦截的就写到中间 用逗号隔开>
<parm name ="inexcludeMethods">add,update</param>
</interceptor-ref>
<!-- 除了应用自己的拦截器 还要使用系统默认的拦截器 -->
    <!-- 建议 : 先放自己的拦截器 在放系统的拦截器
    自己写的拦截器 可能会用 到系统的拦截器中的一些功能
     -->
     <!-- 引入系统默认的拦截器栈 -->
     <interceptor-ref name="defaultStack"></interceptor-ref>
    </interceptor-stack>
    </interceptors>

    <!-- 设置默认走的 拦截器是哪个 -->
    <default-interceptor-ref name="myStack"></default-interceptor-ref>

    <!--  配置登录的Action-->
        <action name="Demo01Action_*" class="com.lanoug.intercept.Demo01Action"
            method="{1}">
            <result name="success">/hello.jsp</result>
        </action>

    </package>
</struts>

猜你喜欢

转载自blog.csdn.net/qq_36390044/article/details/79967481