Struts2的自定义拦截器
自定义拦截器有三个方式:
1. 第一种:定义一个类,实现 Interceptor接口
1. 第二种:定义一个类,继承 AbstractInterceptor
1. 第三种:定义一个类,继承 MethodFilterInterceptor
继承 AbstractInterceptor
要重写intercept方法
代码
编写一个普通 java类,继承 AbstractInterceptor
/**
* 自定义拦截器
* @author Johnny.Chen
*
*/
public class MyInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("拦截了...");
//放行
String invoke = invocation.invoke();
return invoke;
}
}
第二步:在struts.xml中配置拦截器
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "struts-2.3.dtd" >
<struts>
<!-- 开启开发者模式 -->
<constant name="struts.devMode" value="true"></constant>
<!-- 配置拦截器 -->
<package name="MyDefault" extends="struts-default">
<!-- 拦截器 -->
<interceptors>
<interceptor name="MyInterceptor" class="com.interceptor.MyInterceptor"></interceptor>
</interceptors>
</package>
<package name="demo" extends="MyDefault">
<action name="index" class="com.action.DemoAction" method="index">
<!-- 引用拦截器 -->
<interceptor-ref name="MyInterceptor"></interceptor-ref>
<result name="index">/success.jsp</result>
</action>
</package>
</struts>
继承MethodFilterInterceptor
要重写doIntercept方法
可以解决登陆请求被拦截
public class MyInterceptor2 extends MethodFilterInterceptor {
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
System.out.println("拦截了...");
//放行
String invoke = invocation.invoke();
return invoke;
}
}