struts2請求響應流程:
在struts2的應用中队萤,從用戶請求到服務器返回相應響應給用戶端的過程中,包含了許多組件如:Controller、ActionProxy姿骏、ActionMapping身笤、Configuration Manager豹悬、ActionInvocation、Inerceptor液荸、Action瞻佛、Result等。下面我們來具體看看這些組件有什么聯(lián)系娇钱,它們之間是怎樣在一起工作的伤柄。
(1) 客戶端(Client)向Action發(fā)用一個請求(Request)
(2) Container通過web.xml映射請求绊困,并獲得控制器(Controller)的名字
(3) 容器(Container)調用控制器(StrutsPrepareAndExecuteFilter或FilterDispatcher)。在Struts2.1以前調用FilterDispatcher适刀,Struts2.1以后調用StrutsPrepareAndExecuteFilter
(4) 控制器(Controller)通過ActionMapper獲得Action的信息
(5) 控制器(Controller)調用ActionProxy
(6) ActionProxy讀取struts.xml文件獲取action和interceptor stack的信息秤朗。
(7) ActionProxy把request請求傳遞給ActionInvocation
(8) ActionInvocation依次調用action和interceptor
(9) 根據action的配置信息,產生result
(10) Result信息返回給ActionInvocation
(11) 產生一個HttpServletResponse響應
(12) 產生的響應行為發(fā)送給客服端蔗彤。
客戶端--請求--->FilterDispatcher-->ActionMapper-----攔截器-->Action
| | |
| struts.xml 攔截器
| |轉發(fā)
<--------------------------響應<---------------------------------jsp
1)客戶端向容器(如Tomcat)提交一個請求
2)請求經過一系列過濾器,核心控制器FilterDispatcher 被調用
3)ActionMapper來決定請求是否需要調用某個Action
4)如果ActionMapper通過struts.xm決定需要調用某個Action川梅,在此之前會依次調用所有配置的攔截器
5)Action執(zhí)行完畢,根據結果字符串在struts.xml的配置中找到對應的返回結果
6)攔截器被再次執(zhí)行
7)跳轉到指定的jsp 頁面
8)響應給客戶端