Struts 優缺點
優點:
1. 實現 MVC 模式,結構清晰,使開發者只關注業務邏輯的實現.
2.有豐富的 tag 可以用 ,Struts 的標記庫(Taglib),如能靈活動用,則能大大提高開發效率
3. 頁面導航
使系統的脈絡更加清晰。通過一個配置文件,即可把握整個系統各部分之間的聯系,
這對於后期的維護有着莫大的好處。尤其是當另一批開發者接手這個項目時,這種優勢體現
得更加明顯。
4. 提供 Exception 處理機制 .
5. 數據庫鏈接池管理
6. 支持 I18N
缺點
一、 轉到展示層時,需要配置 forward,如果有十個展示層的 jsp,需要配置十次 struts,
而且還不包括有時候目錄、文件變更,需要重新修改 forward,注意,每次修改配置之后,
要求重新部署整個項目,而 tomcate 這樣的服務器,還必須重新啟動服務器
二、 Struts 的 Action 必需是 thread-safe 方式,它僅僅允許一個實例去處理所有
的請求。所以 action 用到的所有的資源都必需統一同步,這個就引起了線程安全的問題。
三、 測試不方便. Struts 的每個 Action 都同 Web 層耦合在一起,這樣它的測試依賴於
Web 容器,單元測試也很難實現。不過有一個 Junit 的擴展工具 Struts TestCase 可以實現
它的單元測試。
四、 類型的轉換. Struts 的 FormBean 把所有的數據都作為 String 類型,它可以使用工
具 Commons-Beanutils 進行類型轉化。但它的轉化都是在 Class 級別,而且轉化的類型是
不可配置的。類型轉化時的錯誤信息返回給用戶也是非常困難的。
五、 對 Servlet 的依賴性過強. Struts 處理 Action 時必需要依賴 ServletRequest 和
ServletResponse,所有它擺脫不了 Servlet 容器。
六、 前端表達式語言方面.Struts 集成了 JSTL,所以它主要使用 JSTL 的表達式語言來
獲取數據。可是 JSTL 的表達式語言在 Collection 和索引屬性方面處理顯得很弱。
七、 對 Action 執行的控制困難. Struts 創建一個 Action,如果想控制它的執行順序將會
非常困難。甚至你要重新去寫 Servlet 來實現你的這個功能需求。
八、 對 Action 執行前和后的處理. Struts 處理 Action 的時候是基於 class 的 hierarchies,
很難在 action 處理前和后進行操作。
九、 對事件支持不夠.在 struts 中,實際是一個表單 Form 對應一個 Action 類(或
DispatchAction),換一句話說:在 Struts 中實際是一個表單只能對應一個事件, struts 這種
事件方式稱為 application event, application event 和 component event 相比是一種粗粒度
的事件