2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁常見問題正文

Java培訓:實現自定義攔截器

更新時間:2023-12-28 來源:黑馬程序員 瀏覽量:

IT培訓班

  在Struts2框架中,通常開發人員所編寫的自定義攔截器類都會直接或間接地實現com.opensymphony.xwork2.interceptor.Interceptor接口。Interceptor接口中的主要代碼如下所示:

public interface Interceptor extends Serializable {
   void init();
   void destroy();
   String intercept(ActionInvocation invocation) throws Exception;
}

  從上述代碼中可以看出,該接口共提供了以下三個方法。

  (1)void init():

  該方法在攔截器被創建后會立即被調用,它在攔截器的生命周期內只被調用一次。可以在該方法中對相關資源進行必要的初始化。

  (2)void destroy():

  該方法與init()方法相對應,在攔截器實例被銷毀之前,將調用該方法釋放和攔截器相關的資源,它在攔截器的生命周期內,也只被調用一次。

  (3)String intercept(ActionInvocation invocation)throws Exception:

  該方法是攔截器的核心方法,用于添加真正執行攔截工作的代碼,實現具體的攔截操作,它返回一個字符串作為邏輯視圖,系統根據返回的字符串跳轉到對應的視圖資源。每攔截一個動作請求,該方法就會被調用一次。該方法的ActionInvocation參數包含了被攔截的Action的引用,可以通過該參數的invoke()方法,將控制權轉給下一個攔截器或者轉給Action的execute()方法。

  除了實現Interceptor接口可以自定義攔截器以外,在實際開發過程中,更常用的一種方式是繼承抽象攔截器類AbstractIntercepter。該類實現了Interceptor接口,并且提供了init()方法和destroy()方法的空實現。使用時,可以直接繼承該抽象類,而不用實現那些不必要的方法。AbstractIntercepter類中定義的方法如下所示:

public abstract class AbstractInterceptor implements Interceptor {
   public void init() {}
   public void destroy() {}
   public abstract String intercept(ActionInvocation invocation) throws Exception;
}

  從上述代碼中可以看出,AbstractInterceptor類已經實現了Interceptor接口的所有方法,一般情況下,只需繼承AbstractInterceptor類,實現interceptor()方法就可以創建自定義攔截器。需要注意的是,只有當自定義的攔截器需要打開系統資源時,才需要覆蓋AbstractInterceptor類的init()方法和destroy()方法。與實現Interceptor接口相比,繼承AbstractInterceptor類的方法更為簡單。

  本文版權歸黑馬程序員Java培訓學院所有,歡迎轉載,轉載請注明作者出處。謝謝!

  作者:黑馬程序員Java培訓學院

  首發:https://java.itheima.com

分享到:
在線咨詢 我要報名
和我們在線交談!