-
Struts跟Tomcat、Turbine等諸多Apache專案一樣,是開源軟體,這是它的一大優點。使開發者能更深入的了解其內部實作機制。 Struts開放原始碼框架的創建是為了讓開發者在建立基於Java Servlet和JavaServer Pages(JSP)技術的網路應用程式時更加容易。 Struts框架為開放者提供了一個統一的標準框架,透過使用Struts作為基礎,開發者能夠更專注於應用程式的商業邏輯。 Struts框架本身是使用Java Servlet和JavaServer Pages技術的一種Model-View-Controller(MVC)實作.
具體來講,Struts的優點有:
1. 實現MVC模式,結構清晰,使開發者只專注於業務邏輯的實現.
2. 有豐富的tag可以用,Struts的標記庫(Taglib),如能靈活動用,則能大幅提高開發效率。另外,就目前國內的JSP開發者而言,除了使用JSP自帶的常用標記外,很少開發自己的標記,或許Struts是一個很好的起點。
3. 頁面導航.頁面導航將是今後的一個發展方向,事實上,這樣做,使系統的脈絡更加清晰。透過一個配置文件,即可掌握整個系統各部分之間的聯繫,這對於後期的維護有著莫大的好處。尤其是當另一批開發者接手這個專案時,這種優勢體現得更明顯。
4. 提供Exception處理機制.
5. 資料庫連結池管理
6. 支持I18N
缺點:
一、 轉到展示層時,需要配置forward,每次轉到展示層,相信大多數都是直接轉到jsp,而涉及到轉向,需要配置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相比是一種粗粒度的事件。
Struts重要的表單對象ActionForm是一種對象,它代表了一種應用,這個對像中至少包含幾個字段,這些字段是Jsp頁面表單中的input字段,因為一個表單對應一個事件,所以,當我們需要將事件粒度細化到表單中這些欄位時,也就是說,當一個欄位對應一個事件時,單純使用Struts就不太可能,當然透過結合JavaScript也是可以轉彎來實現的。
本文出自CSDN博客,轉載請標示出處:http: //blog.csdn.net/zhrl0000/archive/2009/12/17/5027947.aspx
-