從一個高水平看,Struts 2 是一個 pull-MVC(或 MVC2)框架。Struts 2 的模型-視圖-控制器模式由下面的五個核心部件實現(xiàn):
動作
攔截器
值棧/OGNL
結(jié)果/結(jié)果類型
Struts 2 與傳統(tǒng)的 MVC 框架稍有不同,其中動作擔(dān)任模型的角色,而不是控制器的角色,雖然有一些重疊。
http://wiki.jikexueyuan.com/project/struts-2/images/struts_2_architecture.gif" alt="" />
上面的圖描繪模型,視圖和控制器到 Struts 2 高級架構(gòu)??刂破魇怯?Struts 2 調(diào)度 servlet 過濾器和攔截器實現(xiàn)的,模型是由動作實現(xiàn)的,視圖是由結(jié)果類型和結(jié)果結(jié)合而成的。值棧和 OGNL 提供共同主線,連接和集成其他組件。
除了上面的組件,還有很多與配置相關(guān)的信息。不僅要配置 web 應(yīng)用程序,也要配置動作,攔截器,結(jié)果,等等。
這是 Struts 2 MVC 模式的體系結(jié)構(gòu)的概述。我們將在后續(xù)章節(jié)中更詳細的介紹每個組件。
以上面的圖為基礎(chǔ),它可以解釋 Struts 2 中用戶的請求的生命周期,如下所示:
為了請求一些資源(即頁面),用戶發(fā)送請求到服務(wù)器。
FilterDispatcher 查看請求,然后確定適當(dāng)?shù)膭幼鳌?/p>
配置的攔截器功能適用于如驗證,文件上傳等等。
執(zhí)行選定的動作來執(zhí)行所請求的操作。
再次,如果需要,配置的攔截器應(yīng)用于做任何后處理。