关闭

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

标签: strutsstruts2.0
49人阅读 评论(0) 收藏 举报
分类:

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4049次
    • 积分:167
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档