Struts2是一個相當強大的JavaWeb開源框架,是一個基於POJO的Action的MVCWeb框架。它基於當年的Webwork和XWork框架,繼承其優點,同時做了相當的改進。Struts2現在在JavaWeb開發界的地位可以說是大紅大紫,從開發人員的角度來分析,Struts2之所以能夠如此的深入開發人員之心,與其優良的設計是分不開的。 下面我從使用Struts2一年之久的經驗來分析一下Struts2的優點: 1.Struts2基於MVC架構,框架結構清晰,開發流程一目瞭然,開發人員可以很好的掌控開發的過程。我在專案開發過程中,一個具體的功能的開發流程是:拿到一個具體的功能需求文件和設計好的前臺介面(在開發中我不負責設計頁面),分析需要從前臺傳遞哪些引數,確定引數的變數名稱,在Action中設定相應的變數,這些引數在前臺如何顯示,並將頁面上的一些控制元件適當使用Struts2提供的伺服器端控制元件來代替,編寫Action對應的方法來完成業務邏輯,最後,做一些與配置檔案相關的設定。當然實際的開發比這個過程要複雜,涉及到資料庫,驗證,異常等處理。但是使用Struts2進行開發,你的關注點絕大部分是在如何實現業務邏輯上,開發過程十分清晰明瞭。 2.使用OGNL進行引數傳遞。 OGNL提供了在Struts2裡訪問各種作用域中的資料的簡單方式,你可以方便的獲取Request,Attribute,Application,Session,Parameters中的資料。大大簡化了開發人員在獲取這些資料時的程式碼量。 3.強大的攔截器 Struts2的攔截器是一個Action級別的AOP,Struts2中的許多特性都是透過攔截器來實現的,例如異常處理,檔案上傳,驗證等。攔截器是可配置與重用的,可以將一些通用的功能如:登入驗證,許可權驗證等置於攔截器中以完成一些JavaWeb專案中比較通用的功能。在我實現的的一Web專案中,就是使用Struts2的攔截器來完成了系統中的許可權驗證功能。 4.易於測試 Struts2的Action都是簡單的POJO,這樣可以方便的對Struts2的Action編寫測試用例,大大方便了JavaWeb專案的測試。 5.易於擴充套件的外掛機制 在Struts2新增擴充套件是一件愉快而輕鬆的事情,只需要將所需要的Jar包放到WEB-INF/lib資料夾中,在struts.xml中作一些簡單的設定就可以實現擴充套件。常用的Struts2的擴充套件可以透過這個連結找到: http://cwiki.apache.org/S2PLUGINS/home.html 6.模組化 Struts2已經把模組化作為了體系架構中的基本思想,可以透過三種方法來將應用程式模組化: 將配置資訊拆分成多個檔案 把自包含的應用模組建立為外掛 建立新的框架特性,即將與特定應用無關的新功能組織成外掛,以新增到多個應用中去。 7.全域性結果與宣告式異常 為應用程式新增全域性的Result,和在配置檔案中對異常進行處理,這樣當處理過程中出現指定異常時,可以跳轉到特定頁面,這一功能十分實用。
Struts2是一個相當強大的JavaWeb開源框架,是一個基於POJO的Action的MVCWeb框架。它基於當年的Webwork和XWork框架,繼承其優點,同時做了相當的改進。Struts2現在在JavaWeb開發界的地位可以說是大紅大紫,從開發人員的角度來分析,Struts2之所以能夠如此的深入開發人員之心,與其優良的設計是分不開的。 下面我從使用Struts2一年之久的經驗來分析一下Struts2的優點: 1.Struts2基於MVC架構,框架結構清晰,開發流程一目瞭然,開發人員可以很好的掌控開發的過程。我在專案開發過程中,一個具體的功能的開發流程是:拿到一個具體的功能需求文件和設計好的前臺介面(在開發中我不負責設計頁面),分析需要從前臺傳遞哪些引數,確定引數的變數名稱,在Action中設定相應的變數,這些引數在前臺如何顯示,並將頁面上的一些控制元件適當使用Struts2提供的伺服器端控制元件來代替,編寫Action對應的方法來完成業務邏輯,最後,做一些與配置檔案相關的設定。當然實際的開發比這個過程要複雜,涉及到資料庫,驗證,異常等處理。但是使用Struts2進行開發,你的關注點絕大部分是在如何實現業務邏輯上,開發過程十分清晰明瞭。 2.使用OGNL進行引數傳遞。 OGNL提供了在Struts2裡訪問各種作用域中的資料的簡單方式,你可以方便的獲取Request,Attribute,Application,Session,Parameters中的資料。大大簡化了開發人員在獲取這些資料時的程式碼量。 3.強大的攔截器 Struts2的攔截器是一個Action級別的AOP,Struts2中的許多特性都是透過攔截器來實現的,例如異常處理,檔案上傳,驗證等。攔截器是可配置與重用的,可以將一些通用的功能如:登入驗證,許可權驗證等置於攔截器中以完成一些JavaWeb專案中比較通用的功能。在我實現的的一Web專案中,就是使用Struts2的攔截器來完成了系統中的許可權驗證功能。 4.易於測試 Struts2的Action都是簡單的POJO,這樣可以方便的對Struts2的Action編寫測試用例,大大方便了JavaWeb專案的測試。 5.易於擴充套件的外掛機制 在Struts2新增擴充套件是一件愉快而輕鬆的事情,只需要將所需要的Jar包放到WEB-INF/lib資料夾中,在struts.xml中作一些簡單的設定就可以實現擴充套件。常用的Struts2的擴充套件可以透過這個連結找到: http://cwiki.apache.org/S2PLUGINS/home.html 6.模組化 Struts2已經把模組化作為了體系架構中的基本思想,可以透過三種方法來將應用程式模組化: 將配置資訊拆分成多個檔案 把自包含的應用模組建立為外掛 建立新的框架特性,即將與特定應用無關的新功能組織成外掛,以新增到多個應用中去。 7.全域性結果與宣告式異常 為應用程式新增全域性的Result,和在配置檔案中對異常進行處理,這樣當處理過程中出現指定異常時,可以跳轉到特定頁面,這一功能十分實用。