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方法  没有被拦截

 

控制台:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值