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

原创 2016年08月30日 10:49:44

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>



版权声明:本文为博主原创文章,未经博主允许不得转载。

【Struts2】:拦截器实现方法过滤

众所周知,我们在使用Struts2进行项目开发的时候,如果为某个Action配置拦截器,那么这个拦截器就会拦截该Action内的所有方法。但是在有些情况下,我们不需要拦截所有的方法,只想拦截指定的方法...
  • u010929604
  • u010929604
  • 2016年05月31日 16:32
  • 1775

struts2拦截器(拦截指定方法)

 拦截器方法过滤:让拦截器有选择的拦截Action中的某个方法!   Action中使用拦截器,默认情况下会拦截Action中所有的方法,但是在某些情况下...
  • u014449742
  • u014449742
  • 2014年04月15日 22:57
  • 1254

struts2拦截器 获得请求方法名和请求参数

SSI框架为基础开发的,hulian平台 struts2拦截器里如何知道你请求的是那个方法 使用:invocation.getInvocationContext().getName(); //...
  • johennes
  • johennes
  • 2013年11月22日 17:03
  • 6126

struts2拦截器的使用方法

  • 2012年04月10日 23:09
  • 109KB
  • 下载

struts2拦截器interceptor的三种配置方法

原文链接:http://joyhaizi.blog.163.com/blog/static/1236638202009893452483/ struts2拦截器interceptor的三种配...
  • liliiii
  • liliiii
  • 2015年08月04日 10:39
  • 635

【Struts2】:拦截器实现方法过滤

众所周知,我们在使用Struts2进行项目开发的时候,如果为某个Action配置拦截器,那么这个拦截器就会拦截该Action内的所有方法。但是在有些情况下,我们不需要拦截所有的方法,只想拦截指定的方法...
  • u010929604
  • u010929604
  • 2016年05月31日 16:32
  • 1775

struts2.x的常量配置,动态方法调用,通配符,拦截器,ValueStack和标签

我的struts1.x学的不错.对struts2.x的学习就很有信心了.不过大家要知道,struts1.x和struts2.x是两回事 哦.struts2.x和struts1.x完全没有关系.也不是什...
  • a19880813
  • a19880813
  • 2013年08月16日 14:26
  • 925

Struts2 的 Preparable, ModelDriven 接口方法里无法获得参数,理解 拦截器与责任链

动作类实现了 Preparable,ModelDriven 这两个接口,
  • beyond4314403
  • beyond4314403
  • 2014年04月20日 14:41
  • 1110

Struts2学习笔记(十)方法拦截器

定义拦截器时,可以直接继承AbstractInterceptor抽象类(该类实现了Interceptor接口,并对init和destory方法进行了空实现),再实现抽象方法即可。...
  • fumier
  • fumier
  • 2015年04月24日 15:30
  • 770

struts2拦截器interceptor的三种配置方法

1、struts2拦截器interceptor的三种配置方法 方法1. 普通配置法 package name="struts2" extends="struts-def...
  • xyw591238
  • xyw591238
  • 2016年07月19日 10:45
  • 5462
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts2中的拦截器深入-方法拦截器
举报原因:
原因补充:

(最多只允许输入30个字)