首先编写一个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>