? ? Struts是一個基于MVC的開源框架,具有組件的模塊化、靈活性和重用性的優點,同時簡化了基于MVC的web應用程序的開發。
? ? struts可以清晰地區分控制,事務邏輯和外觀,從而簡化了開發應用程序的過程。struts提供的類使得開發工作更加簡單,這些類包括:控制程序流程的類、實現和執行程序事務邏輯的類、自定義的標記庫使得創建和驗證HTML表單更加容易。
? ? 下面是我初步學習了Struts以后,簡單勾勒的一張知識點的羅列圖。
[](http://tu.mindpin.com/mindmaps/72634)
[點擊查看可折疊的原導圖](http://tu.mindpin.com/mindmaps/72634)
? ? 每個事物的存在必有其存在的意義,同時也有優缺點。具體來講,
Struts的優點有:?
- 實現MVC模式,結構清晰,使開發者只關注業務邏輯的實現.?
- 有豐富的tag可以用 Struts的標記庫(Taglib),如能靈活動用,則能大大提高開發效率。
- 頁面導航,會使得系統的脈絡更加清晰。通過一個配置文件,即可把握整個系統各部分之間的聯系,這對于后期的維護有著莫大的好處。尤其是當另一批開發者接手這個項目時,這種優勢體現得更加明顯。?
- 提供Exception處理機制?
- 支持I18N?
? 缺點:?
- 頁面導航受限于forward
? ? 轉到展示層時,需要配置forward,每一次轉到展示層,相信大多數都是直接轉到jsp,而涉及到轉向,需要配置forward,如果有十個展示層的jsp,需要配置十次struts,而且還不包括有時候目錄、文件變更,需要重新修改forward,注意,每次修改配置之后,要求重新部署整個項目,而tomcate這樣的服務器,還必須重新啟動服務器,如果業務變更復雜頻繁的系統,這樣的操作簡單不可想象。現在就是這樣,幾十上百個人同時在線使用系統時,大家可以想象一下,重啟服務器將意味著什么。
- Struts的Action必需是thread-safe方式
? ? 它僅僅允許一個實例去處理所有的請求。所以action用到的所有的資源都必需統一同步,這個就引起了線程安全的問題。
- 測試不方便
? ? Struts的每個Action都同Web層耦合在一起,這樣它的測試依賴于Web容器,單元測試也很難實現。不過有一個Junit的擴展工具Struts TestCase可以實現它的單元測試。
- 對事件支持不夠
? ? 在struts中,實際是一個表單Form對應一個Action類(或DispatchAction),換一句話說:在Struts中實際是一個表單只能對應一個事件,struts這種事件方式稱為application event。它與component event相比是一種粗粒度的事件。
- 前言
- Struts 簡單小結
- 深入淺出了解Struts的處理流程(有圖有真相)
- struts標簽+jstl標簽之國際化實例
- 一口一口吃掉Hibernate(二)——別被世俗蒙蔽了雙眼:Hibernate中Session之get和load方法的真正區別
- 一口一口吃掉Hibernate(一)——使用SchemaExport生成數據表
- 一口一口吃掉Hibernate(三)——Hibernate給表和字段設置前后綴及分隔符
- 一口一口吃掉Hibernate(四)——多對一單向關聯映射
- 一口一口吃掉Hibernate(五)——一對多單向關聯映射
- 一口一口吃掉Hibernate(六)——多對多關聯映射
- 一口一口吃掉Hibernate(七)——繼承映射
- 一口一口吃掉Hibernate(八)——Hibernate中inverse的用法
- 一覽Spring全貌
- 包辦婚姻的Spring IoC
- 3幅圖讓你了解Spring AOP
- Spring Aop實例之xml配置
- Spring Aop實例之AspectJ注解配置