殷旻昊 黨 光 王 波
(天津師范大學信息化辦公室 中國 天津 300387)
當前管理信息系統(tǒng)在業(yè)務邏輯上日益復雜,并且對系統(tǒng)可維護性、可擴展性以及系統(tǒng)移植性的要求越來越高,因此新系統(tǒng)的設計開發(fā)大多傾向于采用MVC 設計模式。 而在諸多MVC 框架中,Struts 作為一款開源框架, 建立在動態(tài)網站設計領域中JSP、XML 及Servlet 等相關開發(fā)技術之上, 成為J2EE Web 開發(fā)的首選。
MVC 即Model-View-Controller,模型—視圖—控制器模式。 早期Web 應用系統(tǒng)開發(fā)中,業(yè)務邏輯和視圖界面通常是耦合在一起的,比較適用于規(guī)模較小,業(yè)務簡單且變化較少的情況,但隨著應用系統(tǒng)業(yè)務邏輯日趨復雜,用戶界面大量增加, 同時在系統(tǒng)健壯性、 代碼可重用性的要求越來越高,MVC 模式在軟件開發(fā)效率方面的優(yōu)勢日益凸顯,因而得到廣泛應用。MVC 強制性的使應用程序的輸入、處理和輸出分開,將其劃分成三個相對獨立的層次:模型層、視圖層和控制器層,從而降低了復雜的耦合關系,實現界面與應用邏輯的有效分離。
Struts 由Apache 軟件組織負責開發(fā), 其實質是在JSP Model2 基礎上實現的一個MVC 開源框架, 其中模型部分由JavaBean 或EJB 組件構成, 視圖部分由Jsp 文件和Struts 客戶化標簽組成,控制器部分由ActionServlet 和Action 類來完成。 由于是一款開源框架,文檔豐富且源代碼公開,并且具備豐富的Taglib 標簽庫, 頁面導航性強, 對MVC 有良好的實現,在業(yè)界J2EE 架構中有廣泛的應用。
案例系統(tǒng)為某管網管理系統(tǒng),包含日志管理、權限管理、數據維護、查詢統(tǒng)計、報表輸出等多個模塊。 由于該系統(tǒng)從頁面展現到邏輯處理均較為復雜, 開發(fā)人數較多且周期較長,并且有擴展性、健壯性方面的要求,采用Struts 框架開發(fā)是比較好的選擇。 在案例系統(tǒng)整體框架中, 除Struts 框架負責MVC 三部分的分離外,根據系統(tǒng)開發(fā)的需要還需引入Spring框架以實現控制反轉和面向方面編程,Hibernate 框架以實現數據的對象持久化和對象關系映射,DWR 框架以實現對頁面的監(jiān)聽和異步處理,加強對視圖部分細粒度的支持。
在案例系統(tǒng)Struts 框架應用中, 控制器方面由ActionServlet 類和具體的Action 類來實現。ActionServlet 作為核心組件,主要負責接受HTTP 請求信息,并根據對應配置文件的信息把請求轉發(fā)給適當的Action 對象,而Action 類負責調用模型層(案例系統(tǒng)中使用JavaBean 實現)的方法更新模型狀態(tài)。Struts 框架應用中,3 個文件的配置是其中的關鍵,分別為web.xml、struts-config.xml 及消息資源文件。
web.xml 文件是整個Web 工程的配置文件, 由于Struts框架是系統(tǒng)運行的基礎框架, 因而對Struts 的配置是該文件最重要的內容, 主要包括對servlet、 servlet-mapping 以及taglib 元素的配置。 其中servlet 和servlet-mapping 元素用于指定ActionServlet 接受請求并確定如何響應,taglib 元素則用于聲明Web 應用所使用的Struts 標簽庫及開發(fā)者自定義的標簽庫。
Struts-config.xml 文件是Struts 框架的配置文件, 用于對Struts 框架中用到的控制器、視圖和模型進行配置。 由于案例系統(tǒng)子模塊功能較為復雜,Struts-config.xml 中僅配置了系統(tǒng)全局性的數據,如data-sources 元素配置數據源,指定數據庫驅動類、URL 及訪問數據庫的用戶名、密碼等,global-forwards元素配置全局請求轉發(fā)路徑,message-resources 元素定義了Resource Bundle 使用的資源文件等, 其他如form-beans、action-mapping 元素均只定義系統(tǒng)的頁面登錄, 涉及具體應用的form 及action 設置均在子模塊所屬的Struts-xx-config.xml 中進行配置。
Struts 框架通過消息資源文件來支持國際化和本地化,通常需要手動處理將其設置為支持中文, 否則會顯示亂碼,案例系統(tǒng)由于采用Eclipse 平臺作為開發(fā)環(huán)境, 平臺自帶的ResourceBundEditor 插件可自動對消息資源文件進行重編碼,相對手動處理而言使用起來更加直觀方便。
Spring 框架作為一個松耦合的開源框架, 其Spring Core與Spring Aop 模塊在對控制反轉和面向方面編程有突出的創(chuàng)新型和實用性,非常適用于案例系統(tǒng)的開發(fā)。 其配置需在web.xml 文件的filter 元素及l(fā)istener 元素分別定義過濾器類和監(jiān)聽器類,還需在context-param 元素中定義對應的Spring配置文件。 Hibernate 框架作為一款數據持久化的開源框架,為案例系統(tǒng)提供對象與關系數據庫的映射,并以統(tǒng)一的接口方式支持多種數據庫,其配置也在web.xml 文件的filter 元素中定義。
案例系統(tǒng)開發(fā)過程中采用Struts 框架及相關技術, 其豐富的標簽庫在頁面展示方面起到突出作用,并且由于比較徹底的實現了頁面與邏輯的分離,在版本更迭過程中極大提高了工作效率,該系統(tǒng)在用戶需求發(fā)生較大變動后仍按期完成開發(fā)工作,目前已經正式運行,得到用戶的認可。
[1]Husted, Cedric Dumoulin. Struts In Action [M]. Manning Publications Co, 2002, 5.
[2]莫勇騰.深入淺出設計模式:C#/Java 版[M].北京:清華大學出版社,2006.
[3]計磊,李里,周偉.精通J2EE-Eclipse Struts Hibernate Spring 整合應用案例[M].北京:人民郵電出版社,2006(8).