Struts2的執(zhí)行流程主要包括以下幾個步驟:
客戶端發(fā)送請求:用戶在瀏覽器中輸入URL或通過點(diǎn)擊鏈接等方式發(fā)送請求到服務(wù)器。
Web服務(wù)器接收請求:Web服務(wù)器接收到客戶端發(fā)送的請求,并將其轉(zhuǎn)發(fā)給Struts2框架。
Struts2框架接收請求:Struts2框架通過配置的過濾器攔截器鏈,接收并處理Web服務(wù)器轉(zhuǎn)發(fā)的請求。
攔截器處理:Struts2框架根據(jù)配置的攔截器鏈依次對請求進(jìn)行處理。攔截器可以進(jìn)行各種操作,如驗(yàn)證用戶身份、記錄日志等。
Action調(diào)用:經(jīng)過攔截器鏈處理后,Struts2框架將請求轉(zhuǎn)發(fā)給相關(guān)的Action類進(jìn)行處理。Action類是一個POJO(普通Java對象),其中包含了業(yè)務(wù)邏輯的實(shí)現(xiàn)。
業(yè)務(wù)邏輯處理:Action類中的方法根據(jù)請求的參數(shù)進(jìn)行業(yè)務(wù)邏輯的處理,可以調(diào)用服務(wù)層或數(shù)據(jù)訪問層的方法。
結(jié)果返回:處理完業(yè)務(wù)邏輯后,Action類將處理結(jié)果封裝為一個結(jié)果對象,并返回給Struts2框架。
結(jié)果渲染:Struts2框架根據(jù)配置的結(jié)果類型,選擇相應(yīng)的結(jié)果渲染器對結(jié)果進(jìn)行渲染。結(jié)果可以是HTML頁面、JSON數(shù)據(jù)、XML數(shù)據(jù)等。
結(jié)果返回給客戶端:渲染完成后,Struts2框架將渲染結(jié)果返回給Web服務(wù)器。
響應(yīng)發(fā)送給客戶端:Web服務(wù)器將響應(yīng)發(fā)送給客戶端瀏覽器,瀏覽器進(jìn)行解析顯示。
總結(jié)來說,Struts2的執(zhí)行流程是從客戶端發(fā)送請求到Web服務(wù)器,再經(jīng)過Struts2框架的攔截器鏈處理、Action類的業(yè)務(wù)邏輯處理,最后返回結(jié)果并渲染,最終將響應(yīng)發(fā)送給客戶端瀏覽器。