首先來定義自訂的 Interceptor 類別內容。程式內容如下:
可以看到上面自訂的 Interceptor 實作了 HandlerInterceptor ,因此我們需要實作其中三個 Method,分別為:preHandle、postHandler、afterCompletion,這三個 Method 執行時間點分別是有順序的,稍後透過 Log 紀錄就可以清楚瞭解。
接著來設定 Spring 設定檔 ( 如同前面範例為:mercury-servlet.xml ) 宣告要使用該 Interceptor ,內容如下:
在Spring 設定檔中可以宣告 Interceptor 需要攔截哪些 Request URL,如同上面設定該 Interceptor 只會針對符合 /common/* 的 Request 去動作。為了紀錄整個過程在 Controller 裡面插入 Log,如下:
接著來試著執行,Log 完整紀錄如下:
由此看到執行的順序為 preHandle > Controller > postHandle > afterCompletion。當然也可以使用多個 Interceptor ,範例設定如下:
多個 Interceptor 執行結果如下:
以上為基本、簡單的 Spring MVC 應用 Interceptor 介紹,最後附上檔案的配置。
其他 Spring Framework 相關教學可以參考本篇整理。