日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Struts2 自定义拦截器(方法拦截器)

發(fā)布時(shí)間:2025/3/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts2 自定义拦截器(方法拦截器) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)自:http://05061107cm.iteye.com/blog/365504

struts2系統(tǒng)自帶了很多攔截器,有時(shí)需要我們自己定義,一般有兩種方式:?


一、實(shí)現(xiàn)Interceptor接口?
Java代碼??
  • public?interface?Interceptor?extends?Serializable{??
  • ?????public?void?init();??
  • ?????public?void?destroy();??
  • ?????public?String?intercept(ActionInvocation?invocation)();??
  • }??

  • 實(shí)現(xiàn)上述方法?

    二、繼承AbstractInterceptor類,重寫intercept()方法即可?
    ? 此方法更可行,其實(shí)AbstractInterceptor類也就是實(shí)現(xiàn)了Interceptor接口?
    Java代碼??
  • invocation.invoke();表示該方法執(zhí)行完后執(zhí)行Action的execute()方法或者執(zhí)行下一個(gè)攔截器??
  • invocation.getAction();?可以將該法強(qiáng)制轉(zhuǎn)換為Action的類類型??

  • 三、方法攔截器:繼承MethodFilterInterceptor類,重寫doIntercept()方法

    MethodFilerInterceptor實(shí)現(xiàn)方法過濾中用到的兩個(gè)參數(shù)

    execludeMethods:該參數(shù)指定攔截器拒絕攔截的方法列表,多個(gè)方法用“,”隔開,指定了這個(gè)參數(shù),攔截器不會(huì)攔截指定列表中的方法,就是所謂的黑名單
    includeMethods:該參數(shù)指定攔截器需要攔截的方法列表,如果指定了參數(shù),則指定的Action在執(zhí)行前會(huì)被攔截,即白名單。

    定義好自定義攔截器后,就要使用自定義攔截器,在struts.xml文檔中?

    一、包內(nèi)定義攔截器?

    Xml代碼??
  • <package....>??
  • ?????<interceptors>??
  • ??????????<interceptor?name="myinterceptor"?class="....">??
  • ??????????</interceptor>??
  • ?????</interceptors>??
  • </package>??

  • 二、action內(nèi)使用攔截器?
    Xml代碼??
  • <action?.....>??
  • ?????<result.....></result>??
  • ?????<interceptor-ref?name="defaultStack"></interceptor-ref>??
  • ?????<interceptor-ref?name="myinterceptor"></interceptor-ref>??
  • </action>??

  • 主要:可以看出使用了自定義攔截器的action要配置默認(rèn)攔截器的引用,因?yàn)槟J(rèn)攔截器包含了參數(shù)的讀取、session的管理等功能?

    一下是例子:

    MyMethodInterceptor

    public class MyMethodInterceptor extends MethodFilterInterceptor{ protected String doIntercept(ActionInvocation invocation) throws Exception { // TODO Auto-generated method stub System.out.println("進(jìn)入MyMethodInterceptor方法攔截器!!!!!!!!!!!!!"); Map session = invocation.getInvocationContext().getSession(); String name = (String) session.get("uname"); if (name != null) { return invocation.invoke(); } return "input"; } }

    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> <constant name="struts.i18n.encoding" value="UTF-8"></constant> <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant> <!-- <constant name="struts.action.extension" value="action,abc"></constant>--> <package abstract="true" name="pk1" namespace="/" extends="struts-default"></package> <package name="pk2" extends="pk1"> <interceptors> <interceptor name="test1" class="org.interceptors.MyTimerInterceptor"/> <interceptor name="method1" class="org.interceptors.MyMethodInterceptor"> <param name="excludeMethods">login</param> </interceptor> <interceptor-stack name="myStack"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="method1"></interceptor-ref> <interceptor-ref name="test1"></interceptor-ref> </interceptor-stack> </interceptors> <!-- <default-interceptor-ref name="myStack"></default-interceptor-ref>--> <action name="login_*_*" class="org.hzy.Actions.LoginAction" method="{1}"> <interceptor-ref name="myStack"></interceptor-ref> <result name="success" type="chain">{2}</result> <result name="input">index.jsp</result> <result name="error">/WEB-INF/Jsp/error.jsp</result> </action> <action name="query_*" class="org.hzy.Actions.QueryAction" method="{1}"> <result>/WEB-INF/Jsp/show.jsp</result> </action> <action name="upload_*" class="org.hzy.Actions.FileUploadAction" method="{1}"> <result>/WEB-INF/Jsp/show.jsp</result> </action> </package> </struts>

    轉(zhuǎn)載于:https://www.cnblogs.com/jpa2/archive/2012/05/23/2527433.html

    與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

    總結(jié)

    以上是生活随笔為你收集整理的Struts2 自定义拦截器(方法拦截器)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。