1.客戶端發出一個HttpServletRequest請求
2.這個請求經過一系列過濾器(ActionContextCleanUp、FilterDispatcher)
3.FilterDispatcher詢問ActionMapper來決定這個請求是否要調用某個Action。如果actionMapper決定要調用
action,那麼核心控制器就把請求的處理交給ActionProxy
4.ActionProxy通過Configuration manager查詢struts框架的struts.xml配置文件,
找到要調用的Action類
5.ActionProxy創建一個ActionInvocation實例,該實例負責命令模式的實現,包括激活action的任意攔截器。
(ActionInvocation通過代理模式調用Action,但在調用之前,ActionInvocation會根據配置加載Action相關的所有Interceptor)
6.一旦Action執行完畢,ActionInvocation實例負責根據action的返回結果碼在struts.xml配置
文件中找到所需要的result。然後該結果通常是jsp或者freemarker模板。也可能是action。
7.action配置的攔截器將再次執行(執行順序和調用的時候相反)
8.服務器響應將通過web.xml文件中配置的struts2框架核心控制器返回。