Struts2架構
所有的請求先經過strutsPrepareAndExecuteFilter核心過濾器,核心過濾器把請求交給ActionMapper。
ActionMapper判斷每次請求的目的地,請求要到達的Action和Method等信息,然後把這些信息封裝到ActionMapping對象,返回給核心過濾器Filter。
Filter根據Actionmapping對象,判斷本次請求是否需要Struts2處理。需要處理,把ActionMapping轉交給ActionProxy。
ActionProxy拿到ActionMapping先在ConfigurationManager(配置文件管理器)中讀取配置文件src/struts.xml。然後把讀取信息返回給ActionProxy。
ActionProxy創建一個Action和Interceptors集合交給ActionInvocation。
ActionInvocation遞歸調用20個默認的攔截器,如果所有攔截器都放行再調用Action,返回執行結果String給配置文件,把這個結果交給相應的Result,Result根據結果轉發或者重定向到action或jsp頁面。然後再執行攔截器的後處理方法,最終響應到瀏覽器。如果攔截器不放行,則跳過Action直接到達Result處理。
.
.
.
查看源碼
Struts2本質就是攔截器:
- 攔截器幫我們封裝了很多功能。
- 可插拔式設計,可以自定義。
- AOP思想,縱向重複代碼橫向抽取。