Struts2是在WebWork基礎發展而來的。webwork是一個面向切面的開源框架,而webwork是基於wwork發展而來的,Xwork是一個命令模式,Struts2也屬於MVC框架。把webwork改了一個名字就變成了Struts2.
Struts2爲了解決Struts1表現層的單一以及與servlet API的嚴重耦合而出現的,使應用難於測試。屬於侵入性框架。所以產生了在webwork的基礎上發展起來的Struts2.
Struts2的優點:1、支持Ajax,2、支持Ognl標籤,3、提供了強大的攔截器,4、線程安全(因爲每次請求都會產生一個實例)。
Struts2的缺點:耦合度低,比較複雜,源代碼不好調試。
Struts2請求處理流程:
1、客戶端發送請求(客戶端初始化一個指向Servlet容器(如Tomcat)的請求);
2、請求經過一系列過濾(如ActionContextCleanUp、SiteMesh等),ActionContextCleanUp->FilterDispatcher。
3、FilterDispatcher通過ActionMapper來決定這個Request需求調用哪個Action,如果不是調用action則直接執行你的資源。
4、如果ActionMapper決定調用某個Action,FilterDispatcher把請求的處理交給ActionProxy;
5、ActionProxy通過ConfigurationManager詢問Struts配置文件(Struts.xml),找到需要調用的Actionlei .
6、ActionProxy創建一個ActionInvocation的實例;
7、ActionInvocation通過一系列的攔截器調用真正的Action,當然這涉及到相關攔截器的調用;
8、Action執行完畢,ActionInvocation創建Result並返回,返回結果前要做些動作也是可以的。