Struts總結

Struts是一個經典的MVC框架。本文簡單總結一下Struts的產生、核心內容、以及它的優缺點。

 

Struts的產生

Java應用開發的世界裏,隨着JSP 與Servlet 技術大量應用於以Web爲基礎的應用程序,java開發人員羣體認爲應以較佳的模式以提升Web應用程序的可維護性與重複使用性。於是乎產生了兩種JSP 應用架構,分別爲Model1 與Model 2。

 

在Model 1 架構中,JSP 直接處理Web瀏覽器送來的請求,並以JavaBean 處理應用相關邏輯。Model 1架構單純編寫比較容易,但在Model 1 中JSP同時肩負着View 與Controller兩種角色,這就導致兩類程序代碼混雜而不易維護。而Model 2 中使用Servlet扮演前端Controller角色,將Web瀏覽器送出的請求集中送至Servlet ,Servlet集中處理各種前端請求,然後再根據具體情況轉向給對應的JSP 處理。

 

Model 2中採用了較佳的MVC 模式,使得代碼層次更加清晰,但是,它增加了代碼編寫的複雜度。比如:它需要配置大量的servlet,重複編寫好多代碼不說,還使得配置文件比較雜亂,給調試、維護等工作添加了額外的任務量。而人性本是懶惰(懶惰也是創新的原動力),凡是可以用計算機解決的問題,人們都不想手動解決。於是乎,在這種需求之下,經典的Structs框架產生了。

 

Struts的優點

1、Struts是開源軟件,使開發者能更深入的瞭解其內部實現機制。

2、Taglib是Struts的標記庫,靈活運用,能大大提高開發效率。

3Struts最爲突出的頁面導航功能,使系統的脈絡更加清晰。通過一個配置文件,即可把握整個系統各部分之間的聯繫,這對於後期的維護有着莫大的好處。尤其是當另一批開發者接手這個項目時,這種優勢體現得更加明顯。

 

Struts的幾個核心對象

ActionServlet

ActionServlet被稱爲中央控制器,Struts的核心流程都位於此類中,它是由Struts本身實現的,我們無需管理,直接使用即可。

 

它的大概流程是對URL進行截取,讀取struts-config中的配置信息,根據截取的URL找到對應的ActionFormAction,將表單的數據存放在actionForm中,並將此actionForm傳到action中進行處理,最後根據action的處理結果,轉到相應的界面。

 

ActionForm

ActionForm對象是對頁面數據的封裝。它取得表單的數據,然後根據actionForm中的數據類型,將數據轉化成對應的數據類型,方便action的使用。

 

Action

Action是業務層控制器了,主要任務是數據的獲取、Model的調用、轉向。數據獲取方面,它可以從ActionForm中直接取得數據,也可以可以通過request進行獲取。Model調用方面與其它類沒有任何區別。轉向方面,可以通過ActionMapping獲取合適的ActionForward類,也可以自己手動創建一個ActionForward類。

特別注意的是:Action存在線程安全問題。

 

ActionForward

ActionForward繼承ForwardConfig,封裝了轉向信息。

 

ActionMapping

封裝了Action的配置信息,每一個Action對應一個ActionMapping,struts-config配置文件中的action標籤下的信息都可以通過ActionMapping獲得。

 

DispatchAction

DispatchAction本質也是一個Action,它的出現,解決了Action類比較多的缺陷。它將原先分佈在不同類中的行爲以方法的形式封裝到了一個類中,而用配置action時的parameter屬性,來決定傳來的請求具體執行哪個方法。

 

Struts的缺點: 

1、它太過於依賴web容器,當配置文件改動一次就要重新啓動

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

3、測試不方便.

4、代碼嚴重依賴於Struts 1,屬於侵入式設計

………………

 

 

當然,任何一種技術都不可能是完美的,我們要做的是,深入瞭解它們的不足之處,在可以容忍的前提下,充分發揮它們的優勢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章