struts2通过Interceptor接口实现自定义拦截器

index.jsp

<a href="${pageContext.request.contextPath }/aop/user_save">测试拦截器</a>

struts.xml(对所有方法进行拦截)

<package name="" namespace="/aop" extends="struts-default">
    <!--配置自定义拦截器-->
    <interceptors>
        <!--声明自定义拦截器-->
        <interceptor name="myInterceptor" class="cn.yang.aop.MyInterceptor"></interceptor>
        <!--声明自定义拦截器栈-->
        <interceptor-stack name="myStack">
            <interceptor-ref name="myInterceptor"></interceptor-ref>
            <interceptor-ref name="defaultStack"></interceptor-ref>
        </interceptor-stack>
    </interceptors>
    <!--配置默认拦截器栈-->
    <default-interceptor-ref name="myStack"></default-interceptor-ref>
    
    <action name="user_*" class="cn.yang.action.UserAction" method="{1}">
        <result name="success">/jsps/success.jsp</result>
    </action>
</package>

struts.xml(对指定方法进行拦截)

<package name="" namespace="/aop" extends="struts-default">
	<interceptors>
		<interceptor name="myInterceptor" class="cn.yang.aop.MyInterceptor"></interceptor>
	</interceptors>
	<action name="user_*" class="cn.yang.action.UserAction" method="{1}">
		<result name="success">/jsps/success.jsp</result>
		<interceptor-ref name="defaultStack"></interceptor-ref>
		<interceptor-ref name="myInterceptor"></interceptor-ref>
	</action>
	<action name="test" class="cn.yang.action.TestAction" method="test">
		<result name="success">/jsps/success.jsp</result>
	</action>
</package>


UserAction.java

public String save(){
	System.out.println("UserAction-->save()");
	return SUCCESS;
}

MyInterceptor.java

/*invocation对象的常用方法还有:

    1:invocation.getProxy().getAction();//获得Action类的对象

    2:invocation.getProxy().getAtionName();//获得struts.xml配置文件中的action标签的name属性值

    3:invocation.getProxy().getMethod();//对应动作类要执行的方法

    4:invocation.getProxy().getNamespace();//struts.xml配置文件中的package标签的namespace属性的值

*/

<!--通过实现Interceptor接口定义拦截器-->
public class MyInterceptor implements Interceptor {

	@Override
	public void destroy() {
		System.out.println("destroy()...");
	}

	@Override
	public void init() {
		System.out.println("init()...");
	}

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		System.out.println("intercept()...");
		<!--此方法相当于过滤器中的doFilter-->
		invocation.invoke();
		return null;
	}

}


你可能感兴趣的:(struts2通过Interceptor接口实现自定义拦截器)