struts2自定义拦截器(创建拦截器,拦截器配置)
1.拦截器创建:
2.拦截器API:
校验失败不放行,直接return字符串,如:success ,跳转页面返回信息
3.拦截器配置:struts.xml
web.xml,添加过滤器
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
MyInterceptor过滤器:
public class MyInterceptor extends MethodFilterInterceptor{
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
//前处理
System.out.println("before处理");
//放行
String result = invocation.invoke();
//后处理
System.out.println("after处理");
return result;
}
}
Action:InterceptorAction
public class InterceptorAction extends ActionSupport{
public String print() throws Exception {
System.out.println("Action.....print");
return SUCCESS;
}
public String list() throws Exception {
System.out.println("Action.....list");
return SUCCESS;
}
public String add() throws Exception {
System.out.println("Action.....add");
return SUCCESS;
}
}
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>
<constant name="struts.devMode" value="true"></constant>
<package name="result" namespace="/" extends="struts-default">
<interceptors>
<!-- 1.注册拦截器 -->
<interceptor name="myInterceptor" class="com.it.action.MyInterceptor"></interceptor>
<!-- 2.注册拦截器栈 -->
<interceptor-stack name="myStack">
<!-- 自定义拦截器引入 -->
<interceptor-ref name="myInterceptor">
<!-- 指定哪些方法不拦截
<param name="excludeMethods">add</param> -->
<!-- 拦截哪些方法 -->
<param name="includeMethods">print,list</param>
</interceptor-ref>
<!-- 默认的拦截器 -->
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 3.指定默认拦截器 -->
<default-interceptor-ref name="myStack"></default-interceptor-ref>
<action name="DemoAction1_*" class="com.it.action.InterceptorAction" method="{1}">
<result name="success" type="dispatcher">/hello.jsp</result>
</action>
</package>
</struts>
hello.jsp
<h1>testDemo</h1>
效果:
(1):print方法
控制台:
(2)list方法
控制台:
(3)add方法 没有被拦截
控制台:
还没有评论,来说两句吧...