Struts優缺點


跟Tomcat、Turbine等諸多Apache項目同樣,是開源軟件,這是它的一大優勢。使開發者能更深刻的瞭解其內部實現機制。前端

Struts開放源碼框架的建立是爲了使開發者在構建基於Java Servlet和JavaServer Pages(JSP)技術的Web應用時更加容易。Struts框架爲開數據庫

放者提供了一個統一的標準框架,經過使用Struts做爲基礎,開發者可以更專一於應用程序的商業邏輯。Struts框架自己是使用Java Servlettomcat

和JavaServer Pages技術的一種Model-View-Controller(MVC)實現. 
具體來說,Struts的優勢有:安全

     1. 實現MVC模式,結構清晰,使開發者只關注業務邏輯的實現.服務器

     2. 有豐富的tag能夠用 ,Struts的標記庫(Taglib),如能靈活動用,則能大大提升開發效率。另外,就目前國內的JSP開發者而言,除了app

使用JSP自帶的經常使用標記外,不多開發本身的標記,或許Struts是一個很好的起點。框架

     3. 頁面導航.頁面導航將是從此的一個發展方向,事實上,這樣作,使系統的脈絡更加清晰。經過一個配置文件,便可把握整個系統各部jsp

分之間的聯繫,這對於後期的維護有着莫大的好處。尤爲是當另外一批開發者接手這個項目時,這種優點體現得更加明顯。工具

     4. 提供Exception處理機制 .單元測試

     5. 數據庫連接池管理

     6. 支持I18N

     缺點: 
     1、 轉到展現層時,須要配置forward,每一次轉到展現層,相信大多數都是直接轉到jsp,而涉及到轉向,須要配置forward,若是有十

個展現層的jsp,須要配置十次struts,並且還不包括有時候目錄、文件變動,須要從新修改forward,注意,每次修改配置以後,要求從新部

署整個項目,而tomcate這樣的服務器,還必須從新啓動服務器,若是業務變動複雜頻繁的系統,這樣的操做簡單不可想象。如今就是這樣,幾

十上百我的同時在線使用咱們的系統,你們能夠想象一下,個人煩惱有多大。

     2、 Struts 的Action必需是thread-safe方式,它僅僅容許一個實例去處理全部的請求。因此action用到的全部的資源都必需統一同步

,這個就引發了線程安全的問題。

     3、 測試不方便. Struts的每一個Action都同Web層耦合在一塊兒,這樣它的測試依賴於Web容器,單元測試也很難實現。不過有一個Junit的

擴展工具Struts TestCase能夠實現它的單元測試。

     4、 類型的轉換. Struts的FormBean把全部的數據都做爲String類型,它可使用工具Commons-Beanutils進行類型轉化。但它的轉化都

是在Class級別,並且轉化的類型是不可配置的。類型轉化時的錯誤信息返回給用戶也是很是困難的。

     5、 對Servlet的依賴性過強. Struts處理Action時必須要依賴ServletRequest 和ServletResponse,全部它擺脫不了Servlet容器。

     6、 前端表達式語言方面.Struts集成了JSTL,因此它主要使用JSTL的表達式語言來獲取數據。但是JSTL的表達式語言在Collection和索

引屬性方面處理顯得很弱。

     7、 對Action執行的控制困難. Struts建立一個Action,若是想控制它的執行順序將會很是困難。甚至你要從新去寫Servlet來實現你的

這個功能需求。

     8、 對Action 執行前和後的處理. Struts處理Action的時候是基於class的hierarchies,很難在action處理前和後進行操做。

     9、 對事件支持不夠. 在struts中,實際是一個表單Form對應一個Action類(或DispatchAction),換一句話說:在Struts中實際是一個

表單只能對應一個事件,struts這種事件方式稱爲application event,application event和component event相比是一種粗粒度的事件。 
    
     Struts重要的表單對象ActionForm是一種對象,它表明了一種應用,這個對象中至少包含幾個字段,這些字段是Jsp頁面表單中的input字

段,由於一個表單對應一個事件,因此,當咱們須要將事件粒度細化到表單中這些字段時,也就是說,一個字段對應一個事件時,單純使用

Struts就不太可能,固然經過結合JavaScript也是能夠轉彎實現的。

相關文章
相關標籤/搜索