拦截器的三种实现方式!

拦截器的第一种实现方式:直接实现interceptor

拦截器的第二种实现方式: 继承 AbstractInterceptor ( AbstractInterceptor 实现了 interceptor接口,并对init,destory进行了空实现

public class TheInterceptor1 implements Interceptor {
	public void destroy() {
		System.out.println("destroy invoked !!");
	}
	public void init() {
		System.out.println("init invoked !!!");
	}
	public String intercept(ActionInvocation invocation) throws Exception {
		System.out.println("intercept1 invoked before !!!");
		String value = invocation.invoke();
		System.out.println("intercept1 invoked after !!!");
		return value;
	}
}



拦截器的第三种实现方式: 继承 MethodsFilterInterceptor (对指定方法进行拦截

public class TheInterceptor3 extends MethodFilterInterceptor {
	
	protected String doIntercept(ActionInvocation invocation) throws Exception {
		invocation.addPreResultListener(new TheListener());
		System.out.println("doIntercept3 invoked before !!!");
		invocation.invoke();
		System.out.println("doIntercept3 invoked after !!!");
		return null;
	}
}



配置文件:struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<package name="struts2" extends="struts-default">
		<interceptors>
			<interceptor name="theintercept1" class="db.struts.interceptor.TheInterceptor1">
				<param name="test">init value ~!</param>
			</interceptor>
			<interceptor name="theintercept2" class="db.struts.interceptor.TheInterceptor2"></interceptor>
			<interceptor name="theintercept3" class="db.struts.interceptor.TheInterceptor3"></interceptor>
			<interceptor name="theintercept4" class="db.struts.interceptor.TheInterceptor4"></interceptor>
		</interceptors>
		<global-results>
			<result name="usernameExceptione">/usernameException.jsp</result>
			<result name="passwordException">/passwordException.jsp</result>
		</global-results>
		<global-exception-mappings>
			<exception-mapping result="usernameExceptione"
				exception="UsernameException"></exception-mapping>
			<exception-mapping result="passwordException"
				exception="PasswordException"></exception-mapping>
		</global-exception-mappings>
		<action name="login" class="db.my.struts.loginAction">
			<result name="success">/result.jsp</result>
			<result name="input">/login.jsp</result>
		</action>
		<action name="login2" class="db.my.struts.loginAction2">
			<result name="success">/result.jsp</result>
			<result name="input">/login.jsp</result>
		</action>
		<action name="userAction" class="db.my.struts.UserAction">
			<result name="success">/test2.jsp</result>
		</action>
		<action name="userAction2" class="db.my.struts.UserAction2">
			<result name="success">/test2.jsp</result>
		</action>
		<action name="action1" class="db.my.struts.Action1">
			<result name="success" type="redirectAction">
				<param name="actionName">action2</param>
				<param name="username">${username}</param>
				<param name="password">${password}</param>
				<param name="usernameAndPassword">${usernameAndPassword}</param>
				<param name="kaku">hello world !!!</param>
			</result>
		</action>
		<action name="action2" class="db.my.struts.Action2" method="myExecute">
			<!--
				action 指定了method方法,拦截器就会只拦截指定的这个method方法!
			-->
			<result name="success">/action2.jsp</result>
			<result name="invalid.token">/action3.jsp</result>
			<interceptor-ref name="token"></interceptor-ref>
			<interceptor-ref name="theintercept1"></interceptor-ref>
			<interceptor-ref name="theintercept2"></interceptor-ref>
			<interceptor-ref name="theintercept3">
				<param name="includeMethods">execute,myExecute</param>
				<param name="excludeMethods">myExecute</param>
			</interceptor-ref>
			<interceptor-ref name="defaultStack"></interceptor-ref>
		</action>
		<action name="moden" class="db.my.struts.ModenAction">
			<result name="success">/ModenAccept.jsp</result>
			<result name="input">/action3.jsp</result>
		</action>
		<action name="action4" class="db.my.struts.action4">
			<result name="success">/ModenAccept.jsp</result>
			<interceptor-ref name="theintercept4">
				<param name="includeMethods">getPassword,execute</param>
			</interceptor-ref>
			<interceptor-ref name="defaultStack"></interceptor-ref>
		</action>
	</package>
</struts>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值