struts2 拦截器

来源:互联网 发布:浦口行知基地气温 编辑:程序博客网 时间:2024/06/05 02:51

拦截器:

实现拦截器:

1.      实现Interceptor接口重写intercept()

Eg:

/**

 * 自定义拦截器

 */

publicclassMyInterceptor implements Interceptor {

    @Override

    publicvoid destroy() {

       System.out.println("destroy");

    }

    @Override

    publicvoid init() {

       System.out.println("init");

    }

    @Override

    public String intercept(ActionInvocation actionInvocation)throws Exception {

       System.out.println("intercept");

       return actionInvocation.invoke();//继续执行

    }

}

2.      struts.xml配置

当需要配置自定义拦截器时,struts自带拦截器失效,然后需要手动加上struts自带的拦截器。

struts-2.3.4-all\src\core\src\main\resources\struts-default.xml文件

2.1

<packagename="testtagmess"namespace="/"extends="struts-default">

    <interceptors><!--注册拦截器 -->

       <interceptorname="myinterceptor"class="com.etc.util.MyInterceptor"></interceptor>

       <interceptor-stackname="myinter"><!--为一组拦截器取别名 -->

              <interceptor-refname="myinterceptor"/><!--使用拦截器 -->

             <interceptor-ref name="defaultStack"/><!--配置自定义拦截器时必须加上 -->

       </interceptor-stack>

    </interceptors>

     <default-interceptor-refname="myinter"/><!--第一种:此包所有action都要拦截 -->

    <actionname="login"class="com.etc.web.LoginAction">

       <result>/pages/login-success.jsp</result>

       <resultname="error">/pages/login-error.jsp</result>

    </action>

</package>

<packagename="testtagmess1"namespace="/test"extends="struts-default">

    <actionname="login1"class="com.etc.web.LoginAction1">

       <result>/pages/login-success.jsp</result>

       <resultname="error">/pages/login-error.jsp</result>

    </action>

</package>

</struts>

 

2.2

<packagename="testtagmess"namespace="/"extends="struts-default">

    <interceptors><!--注册拦截器 -->

       <interceptorname="myinterceptor"class="com.etc.util.MyInterceptor"></interceptor>

       <interceptor-stackname="myinter"><!--为一组拦截器取别名 -->

              <interceptor-refname="myinterceptor"/><!--使用拦截器 -->

             <interceptor-ref name="defaultStack"/><!--配置自定义拦截器时必须加上 -->

       </interceptor-stack>

    </interceptors>

    <actionname="login"class="com.etc.web.LoginAction">

       <result>/pages/login-success.jsp</result>

       <resultname="error">/pages/login-error.jsp</result>

       <!--第二种:此action要进行拦截 -->

       <interceptor-refname="myinterceptor"/><!--使用拦截器 -->

        <interceptor-refname="defaultStack"/><!--配置自定义拦截器时必须加上 -->

    </action>

</package>

<packagename="testtagmess1"namespace="/test"extends="struts-default">

    <actionname="login1"class="com.etc.web.LoginAction1">

       <result>/pages/login-success.jsp</result>

       <resultname="error">/pages/login-error.jsp</result>

    </action>

</package>