国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

java框架篇---Struts2的處理流程

2019-11-14 23:24:45
字體:
供稿:網(wǎng)友
java框架篇---Struts2的處理流程

一、Struts2的處理流程:

  • 客戶端產(chǎn)生一個(gè)HttpServletRequest的請(qǐng)求,該請(qǐng)求被提交到一系列的標(biāo)準(zhǔn)過濾器(Filter)組建鏈中(如ActionContextCleanUp:它主要是清理當(dāng)前線程的ActionContext、Dispatcher,FilterDispatcher主要是通過ActionMapper來決定需要調(diào)用那個(gè)Action,F(xiàn)ilterDispatcher是控制器的核心,也是MVC中控制層的核心組建)。
  • 核心控制器組建FilterDispatcher根據(jù)ActionMapper中的設(shè)置獲得是否需要調(diào)用某個(gè)Action組建來處理這個(gè)HttpServletRequest請(qǐng)求,如果ActionMapper決定調(diào)用某個(gè)Action組建,F(xiàn)ilterDispatcher核心控制器組建就會(huì)把請(qǐng)求的處理權(quán)委托給ActionPRoxy組建
  • ActionProxy組建通過Configuration Manager組建獲得Struts2框架的配置文件struts.xml,最后找到需要調(diào)用的目標(biāo)Action組建類,然后ActionProxy組建就創(chuàng)建出一個(gè)實(shí)現(xiàn)了命令模式的ActionInvocation類的對(duì)象實(shí)例類的對(duì)象實(shí)例(這個(gè)過程包括調(diào)用Anction組建本身之前調(diào)用多個(gè)的攔截器組建的before()方法)同時(shí)ActionInvocation組建通過代理模式調(diào)用目標(biāo)Action組建。但是在調(diào)用之前ActionInvocation組建會(huì)根據(jù)配置文件中的設(shè)置項(xiàng)目加載與目標(biāo)Action組建相關(guān)的所有攔截器組建(Interceptor)。
  • 一旦Action組建執(zhí)行完畢,ActionInvocation組建將根據(jù)開發(fā)人員在Struts2.xml配置文件中定義的各個(gè)配置項(xiàng)目獲得對(duì)象的返回結(jié)果--為這個(gè)Action組建的結(jié)果碼(一個(gè)像SUCCESS,INPUT)然后根據(jù)該返回的結(jié)果調(diào)用目標(biāo)jsp頁面以實(shí)現(xiàn)顯示輸出。
  • 最后各個(gè)攔截器組建會(huì)被再次執(zhí)行(但是順序和開始時(shí)相反,并調(diào)用after()方法),然后請(qǐng)求最終被返回給系統(tǒng)的部署文件中配置的其他過濾器,如果已經(jīng)設(shè)置了ActionContextCleanUp過濾器,那么FilterDispatcher就不會(huì)清理在ThreadLocal對(duì)象中保存的ActionContext信息。如果沒有設(shè)置ActionContextCleanUp過濾器,FilterDispatcher就會(huì)清除掉所有的ThreadLocal對(duì)象。

更加清晰的來說就是:

1.客戶端初始化一個(gè)指向servlet容器的請(qǐng)求。

2.請(qǐng)求經(jīng)過一系列的過濾器(ActionContextCleanUp、SiteMesh)

3.FilterDispatcher被調(diào)用,并詢問ActionMapper來決定這個(gè)請(qǐng)求是否需要調(diào)用某個(gè)Action

4.ActionMapper決定要調(diào)用那一個(gè)Action,FilterDispatcher把請(qǐng)求交給ActionProxy。

5. ActionProxy通過Configurate Manager詢問Struts配置文件,找到要調(diào)用的Action類

6. ActionProxy創(chuàng)建一個(gè)ActionInvocation實(shí)例

7. ActionInvocation實(shí)例使用命令模式來調(diào)用,回調(diào)Action的exeute方法

8. 一旦Action執(zhí)行完畢,ActionInvocation負(fù)責(zé)根據(jù)Struts.xml的配置返回結(jié)果。

二、比較重要的類的介紹:

ActionMapper其實(shí)是HttpServletRequest和Action調(diào)用請(qǐng)求的一個(gè)映射,他屏蔽了Action對(duì)于Request等Java servlet類的依賴。Struts2中它的默認(rèn)實(shí)現(xiàn)類是DefaultAtionMapper,ActionMapper很大的用處可以根據(jù)自己的需要來設(shè)計(jì)url格式,它自己也有Restful的具體實(shí)現(xiàn)。

ActionProxy和ActionInvocation:

Action的一個(gè)代理,由ActionProxyFactory創(chuàng)建,它本身不包括Action實(shí)例,默認(rèn)實(shí)現(xiàn)DefaultActionProxy是由ActionInvocation持有Action實(shí)例。ActionProxy作用是如何取得Action,無論是本地還是遠(yuǎn)程。而ActionInvocation的作用是如何執(zhí)行Action,攔截器的功能就是咱ActionInvocation中實(shí)現(xiàn)的。

ConfigurateProvider和Configuration

ConfigurationProvider就是Struts2中配置文件的解析器,Struts2中的配置文件主要是實(shí)現(xiàn)XmlConfigurationProvider及其子類StrutsXmlConfigurationProvider來解析。

Struts2請(qǐng)求處理示意圖:


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 库车县| 虎林市| 汾西县| 乌拉特中旗| 景谷| 白水县| 洛扎县| 安福县| 施秉县| 且末县| 进贤县| 广饶县| 双鸭山市| 凤台县| 静海县| 清水县| 岑溪市| 滁州市| 遂溪县| 承德县| 昭通市| 萝北县| 稻城县| 黔南| 高平市| 石首市| 古丈县| 荔波县| 濮阳县| 新野县| 辽源市| 浦东新区| 芦溪县| 吉林市| 怀安县| 海南省| 成安县| 灌云县| 海安县| 二连浩特市| 洪湖市|