拦截器的三种实现方式!

拦截器的第一种实现方式:直接实现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>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值