【面试题】struts2的工作流程
【面試題】struts2的工作流程
struts2框架本身大致可以分為3個(gè)部分:
核心控制器FilterDispatcher、業(yè)務(wù)控制器Action和用戶實(shí)現(xiàn)的企業(yè)業(yè)務(wù)邏輯組件。
核心控制器FilterDispatcher是struts2框架的基礎(chǔ):
核心控制器包含了框架內(nèi)部的控制流程和處理機(jī)制。
業(yè)務(wù)控制器Action和業(yè)務(wù)邏輯組件是需要用戶來(lái)自己實(shí)現(xiàn)的,用戶在開發(fā)Action和業(yè)務(wù)邏輯 組件的同時(shí),還需要編寫相關(guān)的配置文件,供核心控制器FilterDispatcher來(lái)使用。
struts2的工作流程相對(duì)于struts1要簡(jiǎn)單,與webwork框架基本相同,所以說(shuō)struts2是webwork的升級(jí)版本。基本簡(jiǎn)要流程如下:
客戶端初始化一個(gè)指向servle容器的請(qǐng)求,這個(gè)請(qǐng)求經(jīng)過(guò)一系列的過(guò)濾器Filter,這些過(guò)濾器中有一個(gè)叫做ActionContextCleanUp的可選過(guò)濾器,這個(gè)過(guò)濾器對(duì)于struts2和其他框架的集成很有幫助,如:SiteMesh Plugin,緊接著FilterDispatcher被調(diào)用。
FilterDispatcher詢問ActionMapper來(lái)決定這個(gè)請(qǐng)求是否需要調(diào)用某個(gè)Action,如果ActionMapper決定需要調(diào)用某個(gè)Action,FilterDispatcher把請(qǐng)求的處理交給ActionProxyActionProxy 通過(guò) Configuration Manager 詢問框架的配置文件,找到需要調(diào)用的 Action 類,ActionProxy 創(chuàng)建一個(gè) ActionInvocation 的實(shí)例。ActionInvocation 實(shí)例使用命名模式來(lái)調(diào)用,在調(diào)用 Action 的過(guò)程前后,涉及到相關(guān)攔截器(Intercepter)的調(diào)用。一旦 Action 執(zhí)行完畢,ActionInvocation 負(fù)責(zé)根據(jù) struts.xml 中的配置找到對(duì)應(yīng)的返回結(jié)果。返回結(jié)果通常是(但不總是,也可 能是另外的一個(gè) Action 鏈)一個(gè)需要被表示的JSP或者 FreeMarker 的模版。在表示的過(guò)程中可以使用 Struts2 框架中繼承的標(biāo)簽。在這個(gè)過(guò)程中需要涉及到 ActionMapper響應(yīng)的返回是通過(guò)我們?cè)?web.xml 中配置的過(guò)濾器如果ActionContextCleanUp 是當(dāng)前使用的,則 FilterDispatecher 將不會(huì)清理 sreadlocal ActionContext;如果 ActionContextCleanUp 不使用,則將會(huì)去清理 sreadlocals。
總結(jié)
以上是生活随笔為你收集整理的【面试题】struts2的工作流程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【面试题】Ajax的原理和优缺点总结
- 下一篇: 【客户下单】自动分单逻辑