熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Struts優缺點剖析 開源是把雙刃劍?

2013-11-23 20:07:05  來源: Java開源技術 

  Struts優缺點跟TomcatTurbine等諸多Apache項目一樣是開源軟件這是它的一大優點使開發者能更深入的了解其內部實現機制

  Struts開放源碼框架的創建是為了使開發者在構建基於Java Servlet和JavaServer Pages(JSP)技術的Web應用時更加容易Struts框架為開放者提供了一個統一的標准框架通過使用Struts作為基礎開發者能夠更專注於應用程序的商業邏輯Struts框架本身是使用Java Servlet和JavaServer Pages技術的一種ModelViewController(MVC)實現 具體來講

  Struts優點有

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

   有豐富的tag可以用 Struts的標記庫(Taglib)如能靈活動用則能大大提高開發效率另外就目前國內的JSP開發者而言除了使用JSP自帶的常用標記外很少開發自己的標記或許Struts是一個很好的起點

   頁面導航頁面導航將是今後的一個發展方向事實上這樣做使系統的脈絡更加清晰通過一個配置文件即可把握整個系統各部分之間的聯系這對於後期的維護有著莫大的好處尤其是當另一批開發者接手這個項目時這種優勢體現得更加明顯

   提供Exception處理機制

   數據庫鏈接池管理

   支持IN

  Struts缺點

  一 轉到展示層時需要配置forward每一次轉到展示層相信大多數都是直接轉到jsp而涉及到轉向需要配置forward如果有十個展示層的jsp需要配置十次struts而且還不包括有時候目錄文件變更需要重新修改forward注意每次修改配置之後要求重新部署整個項目而tomcate這樣的服務器還必須重新啟動服務器如果業務變更復雜頻繁的系統這樣的操作簡單不可想象現在就是這樣幾十上百個人同時在線使用我們的系統大家可以想象一下我的煩惱有多大

  二 Struts 的Action必需是thread-safe方式它僅僅允許一個實例去處理所有的請求所以action用到的所有的資源都必需統一同步這個就引起了線程安全的問題

  三 測試不方便 Struts的每個Action都同Web層耦合在一起這樣它的測試依賴於Web容器單元測試也很難實現不過有一個Junit的擴展工具Struts TestCase可以實現它的單元測試

  四 類型的轉換 Struts的FormBean把所有的數據都作為String類型它可以使用工具CommonsBeanutils進行類型轉化但它的轉化都是在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 eventapplication event和component event相比是一種粗粒度的事件 Struts重要的表單對象ActionForm是一種對象它代表了一種應用這個對象中至少包含幾個字段這些字段是Jsp頁面表單中的input字段因為一個表單對應一個事件所以當我們需要將事件粒度細化到表單中這些字段時也就是說一個字段對應一個事件時單純使用Struts就不太可能當然通過結合JavaScript也是可以轉彎實現的

  Struts優缺點就為大家總結到這裡


From:http://tw.wingwit.com/Article/program/Java/ky/201311/27961.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.