- Java EE實(shí)用教程
- 鄭阿奇編著
- 533字
- 2018-12-30 08:34:14
2.2 Struts 2工作流程結(jié)構(gòu)
前面簡(jiǎn)要介紹了從Struts 1和WebWork到Struts 2的發(fā)展過(guò)程,下面簡(jiǎn)單介紹Struts 2的工作流程結(jié)構(gòu)。
Struts 2的工作流程結(jié)構(gòu)圖如圖2.3所示。

圖2.3 Struts 2的工作流程結(jié)構(gòu)圖
該流程圖概括了Struts 2的整個(gè)工作過(guò)程,從發(fā)出請(qǐng)求直至最終生成響應(yīng)并返回給客戶端一個(gè)頁(yè)面的全部過(guò)程。下面分步講解整個(gè)流程的工作情況。
(1)客戶端提交一個(gè)(HttpServletRequest)請(qǐng)求。
(2)請(qǐng)求被提交到一系列(主要是3層)的過(guò)濾器(Filter),如(ActionContextCleanUp、其他過(guò)濾器(SiteMesh等)、FilterDispatcher)。注意:這里是有順序的,先是ActionContext CleanUp,再是其他過(guò)濾器(SiteMesh等),最后到FilterDispatcher。
(3)FilterDispatcher接收到請(qǐng)求后,詢問(wèn)ActionMapper是否需要調(diào)用某個(gè)Action來(lái)處理這個(gè)(HttpServletRequest)請(qǐng)求,如果ActionMapper決定需要調(diào)用某個(gè)Action,F(xiàn)ilterDispatcher則把請(qǐng)求的處理交給ActionProxy。
(4)ActionProxy通過(guò)Configuration Manager(struts.xml)詢問(wèn)框架的配置文件,找到需要調(diào)用的Action類(lèi)(該Action類(lèi)一般是程序員自定義的處理請(qǐng)求的類(lèi))。
(5)ActionProxy創(chuàng)建一個(gè)ActionInvocation實(shí)例,同時(shí)ActionInvocation通過(guò)代理模式調(diào)用Action。但在調(diào)用之前,ActionInvocation會(huì)根據(jù)配置加載Action相關(guān)的所有Interceptor(攔截器)。
(6)一旦Action執(zhí)行完畢,ActionInvocation負(fù)責(zé)根據(jù)struts.xml中的配置找到對(duì)應(yīng)的返回結(jié)果result。然后根據(jù)結(jié)果返回對(duì)應(yīng)的視圖呈現(xiàn)給客戶端(JSP、FreeMarker等)。
在項(xiàng)目中應(yīng)用Struts 2框架其實(shí)和傳統(tǒng)的JSP+JavaBean+Servlet開(kāi)發(fā)項(xiàng)目差不多,只是用Struts 2代替了Servlet部分做控制器,然后在JSP中應(yīng)用一些Struts 2提供的標(biāo)簽。Struts 2有效地把它們整合在一起,從而增強(qiáng)了規(guī)范性。
- C#高級(jí)編程(第10版) C# 6 & .NET Core 1.0 (.NET開(kāi)發(fā)經(jīng)典名著)
- Mastering Visual Studio 2017
- Python數(shù)據(jù)分析入門(mén)與實(shí)戰(zhàn)
- Python Deep Learning
- Java從入門(mén)到精通(第4版)
- 實(shí)戰(zhàn)低代碼
- PLC編程及應(yīng)用實(shí)戰(zhàn)
- 快速念咒:MySQL入門(mén)指南與進(jìn)階實(shí)戰(zhàn)
- 從0到1:Python數(shù)據(jù)分析
- 快人一步:系統(tǒng)性能提高之道
- Learning Apache Cassandra
- 深入理解C指針
- IDA Pro權(quán)威指南(第2版)
- Java 9 Programming By Example
- VMware vSphere 5.5 Cookbook