天天看點

Spring 攔截器|學習筆記

開發者學堂課程【Java 面試疑難點串講 3:開發工具及架構:Spring 攔截器】學習筆記,與課程緊密聯系,讓使用者快速學習知識。

課程位址:

https://developer.aliyun.com/learning/course/26/detail/562

Spring 攔截器

1、為什麼 Spring MVC 沒有像 Struts 2.x 那樣的攔截器棧?

如果要從個人的角度來看,我認為不使用攔截器棧會更好。首先必須要明确一點,在 Spring 的設計之中,它實際上隻是更加忠實于原始的 MVC 技術的提升。

如果要處理請求使用 DisptacherServlet 完成,這一點要比 Struts 2.x 使用 Filter 更好。

因為 Struts 2.x 占用了過濾器的過程,而這一過程對開發很不友善,因為在實際的開發裡面過濾器需要完成可能許多的輔助功能,但是 Struts 2.x 做的時候考慮到與Struts 1.x 區分,是以沒有使用 Servlet,那麼如果使用者要實作一些 AOP 有關的設計,該怎麼辦呢?是以在這樣的情況下, Struts 2.x 提出了攔截器。

但是由于 Struts 2.x 攔截器裡面所需要承載的内容過多,是以它提出拉攔截器棧。   

如果在傳統的 MVC 開發裡面,需要進行攔截的操作控制,那麼最簡化的處理是使用多個過濾器完成。

是以,Spring MVC 也采用了同樣的模式來進行處理,它的攔截器是基于配置的方式完成,按照過濾器的使用模式,是以你需要有多個攔截器那麼就在配置裡面編寫多個攔截器的配置即可,因為所有的攔截器會按照路徑攔截。

我們認為大家需要的主要部分是驗證的處理上,而 Spring MVC 用大家熟悉的模式定義攔截器,這一點比 Struts 2.x 要強。

比較中會發現兩者各有優勢所在。

舉例配置一下攔截器站:

Spring 攔截器|學習筆記

這樣我們就可以配置多個攔截器站。