三大框架(ssh)學習——Struts2工作流程分析
阿新 • • 發佈:2018-10-31
Struts2工作流程分析
STRUTS2框架內部流程
1. 客戶端傳送請求的tomcat伺服器。伺服器接受,將HttpServletRequest傳進來。
2. 請求經過一系列過濾器(如:ActionContextCleanUp、SimeMesh等)
3. FilterDispatcher被呼叫。FilterDispatcher呼叫ActionMapper來決定這個請求是否要呼叫某個Action
4. ActionMapper決定呼叫某個ActionFilterDispatcher把請求交給ActionProxy
5. ActionProxy通過Configuration Manager檢視struts.xml,從而找到相應的Action類
6. ActionProxy建立一個ActionInvocation物件
7. ActionInvocation物件回撥Action的execute方法
8. Action執行完畢後,ActionInvocation根據返回的字串,找到對應的result。然後將Result內容通過HttpServletResponse返回給伺服器。
Struts2的執行緒安全問題
Struts1中所有的Action都只有一個例項,被反覆的呼叫。Struts2中的Action處理一次請求會生成一個例項,這些例項彼此完全獨立,使用完畢後就立馬銷燬。
struts1中的Action執行緒不安全,一般將不能有可寫的屬性(即將Action設計成無狀態類)。
Struts2中的Action執行緒安全,可以任意設定屬性!