struts2中的拦截器深入-方法拦截器

struts2中给我们提供了一个MethodFilterInterceptor类,该类是 AbstractInterceptor的子类,可以实现对Action方法的拦截 

方法拦截器比action拦截器更加细粒度的控制,主体实现与action实现一致,但是方法拦截是继承MethodFilterInterceptor类,重写其doIntercept方法;

实现代码如下:

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

/**
 *使用方法拦截器进行拦截
 * @author agog
 *
 */
public class ListInterceptor extends MethodFilterInterceptor {
	@Override
	protected String doIntercept(ActionInvocation invocation) throws Exception {
		System.out.println("方法拦截器被执行");
		return invocation.invoke();
	}
}
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="user" extends="struts-default" namespace="/">
		
		<interceptors>
			<!-- 配置拦截器 -->
			<interceptor name="time" class="cn.xsx.interceptor.TimeInterceptor"></interceptor>
			<interceptor name="loginInterceptor" class="cn.xsx.interceptor.LoginInterceptor"></interceptor>
			<!-- 配置方法拦截器 -->
			<interceptor name="methodInterceptor" class="cn.xsx.interceptor.ListInterceptor"></interceptor>
			<!-- 定义自定义拦截器栈 (一个拦截器栈里可以包含多个拦截器引用)-->
			<interceptor-stack name="znStack">
				<!-- 引用方法拦截器 -->
				<interceptor-ref name="methodInterceptor">
					<!-- 设定参数 -->
					<param name="includeMethods">list,add</param>
				</interceptor-ref>
				
				<!-- 引用拦截器 -->
				<interceptor-ref name="loginInterceptor"></interceptor-ref>						
				<interceptor-ref name="time"></interceptor-ref>
				<!-- 引用默认拦截器栈(引用拦截器栈与引用拦截器栈的方式一样) -->
				<interceptor-ref name= "defaultStack"></interceptor-ref>				
			</interceptor-stack>			
		</interceptors>
		<!-- 定义默认的拦截器(或者拦截器栈) -->
		<default-interceptor-ref name="znStack">		
		</default-interceptor-ref>
		<global-results>
			<result name="login">/login.jsp</result>
		</global-results>
		<action name="hello" class="cn.xsx.action.HelloAction">
			<result>/WEB-INF/index.jsp</result>
			<!-- 引用自定义拦截器栈 -->
			<!-- <interceptor-ref name="znStack"></interceptor-ref> -->
		</action>
		<action name="hello" class="cn.xsx.action.HelloAction">
			<result>/WEB-INF/index.jsp</result>
			<!-- 引用自定义拦截器栈 -->
			<!-- <interceptor-ref name="znStack"></interceptor-ref> -->
		</action>
		<action name="list" class="cn.xsx.action.HelloAction" method="list">
			<result>/WEB-INF/index.jsp</result>
		</action>
		<action name="add" class="cn.xsx.action.HelloAction" method="add">
			<result>/WEB-INF/index.jsp</result>
		</action>
		<action name="login" class="cn.xsx.action.LoginAction">
			<result>/success.jsp</result>
		</action>
	</package>
    

</struts>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值