拦截器的三种实现方式!

来源:互联网 发布:好的交友软件 编辑:程序博客网 时间:2024/05/21 04:01
拦截器的第一种实现方式:直接实现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>



原创粉丝点击