1. 程式人生 > >struts2自定義攔截器並配置攔截器使其生效

struts2自定義攔截器並配置攔截器使其生效

首先編寫一個struts2的攔截器,要繼承 MethodFilterInterceptor

並獲取其中的方法

package star.july.d_interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionProxy;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

//自定義一個攔截器
public class Interceptor extends MethodFilterInterceptor{

	@Override
	protected String doIntercept(ActionInvocation invocation) throws Exception {
		//攔截器的方法
		//獲得代理物件
		ActionProxy proxy = invocation.getProxy();
		System.out.println(proxy);
		//獲取被代理物件action
		Object action = proxy.getAction();
		System.out.println(action);
		//獲取action的名稱
		String actionName = proxy.getActionName();
		System.out.println(actionName);
		//獲得方法
		String method = proxy.getMethod();
		System.out.println(method);
		//獲取名稱空間
		String namespace = proxy.getNamespace();
		System.out.println(namespace);
		//配置
		System.out.println(proxy.getConfig());
		//執行結果
		System.out.println(proxy.getExecuteResult());
		//呼叫
		System.out.println(proxy.getInvocation());

		
		System.out.println("1、在action之前");
		
		//放行
		invocation.invoke();
		
		System.out.println("3、在action之後");
		return null;
	}

}


再在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="interceptor" namespace="/interceptor" extends="struts-default">
		<interceptors>
			<!--  為自己建立的攔截器配置 -->
			<interceptor name="myinterceptor" class="star.july.d_interceptor.Interceptor" ></interceptor>
			<interceptor-stack name="mystack">
				<interceptor-ref name="myinterceptor"></interceptor-ref>
				<!-- 預設的攔截器 -->
				<interceptor-ref name="defaultStack"></interceptor-ref>
			</interceptor-stack>
			</interceptors>
			
			<action name="inter_*" class="star.july.d_interceptor.TypesAction"  method="{1}">
				<!--  引用攔截器棧 -->
				<interceptor-ref name="mystack"></interceptor-ref>
				<result name="success">/property.jsp</result>
			</action>
	</package>
	
 
</struts>