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拦截器的使用方法

  • 2012-04-10 23:09
  • 109KB
  • 下载

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

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

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

定义拦截器时,可以直接继承AbstractInterceptor抽象类(该类实现了Interceptor接口,并对init和destory方法进行了空实现),再实现抽象方法即可。

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

原文链接:http://joyhaizi.blog.163.com/blog/static/1236638202009893452483/ struts2拦截器interceptor的三种配...

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

动作类实现了 Preparable,ModelDriven 这两个接口,

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

我的struts1.x学的不错.对struts2.x的学习就很有信心了.不过大家要知道,struts1.x和struts2.x是两回事 哦.struts2.x和struts1.x完全没有关系.也不是什...

用struts2拦截器做的一个弱弱方法性能的监控器

有一个小小的任务,就是调查一下网站上线后,访问某个action中的某个方法的性能,比如调用次数,响应时间。 于是,经验匮乏的我想起了struts2的拦截器,权当对这块知识的复习。 关于拦截器的xm...

Struts2拦截器使用方法

一、什么是拦截器? 提到拦截器,使我不得不 想起武侠剧中劫匪们常说的一句话:“此山是我开,此树是我栽,要打此路过,留下买路财!”。难不成程序中也有“打劫”的,说的没错,拦截器就是个打劫的。 在现实生...

struts2拦截器的三种配置方法

方法1. 普通配置法 /register.jsp ...

Struts2拦截器属性excludeMethods、includeMethods配置无效之解决方法

在配置struts2 拦截器属性excludeMethods、includeMethods进行方法过滤时发现不起作用。        经过查看书籍之后发现,要想使方法过滤配置起作用,拦截器需要继承M...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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