摘要:為了解決Struts框架在WEB應用開發中的不足,在深入研究了Struts結構的基礎上,提出了一種對Struts改進的新框架—— MyWebFramework.。該框架遵循JAVA EE規范,實現了MVC設計模式。框架從架構上分為數據層、業務邏輯層和表示層,各層之間邏輯分離,大大降低耦合度,真正實現了業務邏輯和數據處理分離,業務邏輯與顯示邏輯分離。使用該框架進行Web應用開發,可以簡化開發過程,降低開發難度,提高開發效率,提高系統的穩定性、可擴充性、可維護性。MyWebFramework框架在中遠航運管理系統中的成功運用,證明在中大型Web開發中使用MyWebFramework框架是可行的。
關鍵詞:Struts;JAVA EE;MyWebFramework框架;MVC
中圖分類號:TP311文獻標識碼:A 文章編號:1009-3044(2010)21-5784-03
Research and Application of the Web Framework Based on Struts
YU Hai-xia, WANG Jia-qi
(Anhui Vocational and Technical College of Industry and Trade Department of Computer Science, Huainan 232007, China)
Abstract: To solve the shortages of Struts, MyWebFramework has been designed based on the architecture of Struts. MyWebFramework follows the JAVA EE specification and achieves the MVC design pattern. MyWebFramework consists of three parts: data layer, business layer, view layer. Logical separation between layers reduce coupling and realize the separation of business logic and data processing, business logic and display logic. To develop web application with MyWebFramework can simplify the development process, reduce development difficulty and improve development efficiency and system stability, scalability, maintainability. MyWebFramework framework has been successfully used in COSCO Shipping management system, it prove that MyWebFramework is feasible in the large-scale Web development.
Key words: Struts; JAVA EE; MyWebFramework framework; MVC
1 概述
隨著網絡的發展,WEB應用系統的開發,尤其是基于JAVAEE的WEB應用系統開發已經成為軟件開發領域一個重要的組成部分。與此同時,如何提高軟件的復用性、可維護性、可擴展性,降低開發難度節省軟件開發成本,節省人力資源也成為軟件開發行業急需解決的問題。當前,已經有許多比較成熟的Web框架,如Struts、Spring、JSF等等。在實際軟件開發中運用這些框架,可以降低開發的復雜度和難度,降低了開發成本。本文在深入研究Struts的結構基礎上,針對性Struts框架的不足之處,給出MyWebFramework框架的構成,MyWebFramework是對Struts的改進,結構清晰,易于理解,使用簡單,運用MyWebFramework進行應用開發,可以提高系統的可擴展性,可維護性,降低開發成本。
2 Struts框架
Struts是建立在MVC模式基礎之上的,它將頁面顯示、業務邏輯處理和數據處理功能在邏輯上分離,降低耦合。它能夠很好地幫助Java 開發者利用JAVAEE開發WEB應用。在Struts中,模型(Model)由JavaBean或EJB構成,視圖(View)由JSP文件實現,控制器(Controller)由Servlet和Action共同構成。Struts的工作原理[1]如圖1所示。
2.1 Struts的優點
1)實現了MVC,結構清晰,使開發者只注重業務邏輯的實現。
2)業務導航功能。通過一個配置文件,把整個系統的各個部分聯系為一個整體,便于維護。
3)提供了豐富的標記庫,提高開發效率。
2.2 Struts的缺點
1)學習困難,如果能靈活運用Taglib,如果能靈活運用,能大大提高開發效率,但對初學者來說,卻需要一個相當長的學習時間,增加了系統的開發成本[3]。
2)業務層和表現層之間的耦合度太高,使得開發人員無法專注于表現層的設計和實現[4],增加了系統開發的復雜度。
3)主要功能集中于表示層,在數據持久化方面,要整合其他框架或方法才能實現。
3 MyWebFramework框架
MyWebFramework框架是針對Struts框架的不足,對其進行改進而設計的,與Struts框架相比,MyWebFramework更簡單,便于實施,MyWebFramework簡化了表現層的設計,降低開發難度,節約開發成本;在業務邏輯層,使用VO(Value Object)作為數據傳遞的方式,降低系統復雜度;在瀏覽器端采用表單字段數據驗證的方法,提高了系統的運行效率;
3.1 設計要求
MyWebFramework框架遵循JAVAEE規范,實現MVC設計模式。采用多層分布式應用軟件開發框架的設計策略,提高軟件系統性能上的可擴展性;框架各個層邏輯分離,降低耦合,提高架構性的健壯性、穩定性;
3.2 框架詳細設計
框架從結構上分為表示層、業務邏輯層和數據層,框架結構如圖2所示。
3.2.1 表示層
表示層接受用戶提交的輸入請求,通過對業務邏輯層的訪問,獲得并向用戶輸出可視化響應。在實現上將普通三層架構的表示層細分成視圖格式層和表示控制邏輯層。視圖格式層,只保留了構建客戶端用戶視圖必要的顯示格式和事件觸發;表示控制邏輯層包含了實現了人機交互所需控制邏輯和部分業務會話邏輯,和貫穿所有系統邏輯層的業務實體。采用此種設計機制可以將顯示格式、顯示控制邏輯、模型數據三部分有效地分隔開來,加強了系統架構的可擴展性和可插拔性。
表示層包含的組件:
1)Servlet
用于接收所有用戶通過瀏覽器提交的請求,并形成相應的值(VO)對象,訪問業務邏輯層完成業務處理;將業務邏輯實體的變化以VO對象的方式通知并轉向相應的JSP頁面。
2)JSP
根據Servlet告知的值對象,合成請求響應結果的最終輸出格式化文本(HTML),并將此文本發送給用戶瀏覽器。
3)瀏覽器
提供用戶輸入業務請求數據的輸入界面,數據驗證通過后提交業務請求;接收業務請求響應的HTML文本,將業務請求響應結果以可視化的訪問呈現給用戶。
3.2.2 業務邏輯層
業務邏輯層接收表示層輸入的用戶請求,將其轉化為業務邏輯過程能夠理解的方式,有序地向數據層發送數據請求,并將數據層返回的處理結果及時組合成用戶所需信息,返回給表示層,是整個應用框架結構中的核心。
為了確保業務處理的高效性,在設計策略上將業務層細分成業務會話層和業務持久化層。業務會話層,偏向于業務活動,將一項業務的所有活動事務性地封裝起來;業務持久化層為業務會話層提供支持,實現業務數據的持久化操作,業務持久化層是在業務與數據庫之間建立分離作用的中間層,進而構成松耦合的架構。
業務邏輯層包含會話外觀(Session Facade)、邏輯Bean(Logic Bean)和和數據存取Bean(Data Access Bean)等三個邏輯組件。
1)Session Facade
Session Facade向表示層提供統一的業務邏輯調用接口,負責管理所有數據存取事務都由會話外觀進行管理。
2)Logic Bean
Logic Bean負責完成業務邏輯具體實現,可以直接被Session Facade調用,實現會話外觀所需的業務邏輯,也可以被其他Logic Bean調用,用來實現更復雜的業務邏輯處理。
3)Data Access Bean
Data Access Bean提供了面向數據層的訪問接口,不負責事務管理。
4)Value Object
Value Object用來實現在表示層和業務邏輯層交換數據,只包含業務邏輯實體的屬性,不包括業務邏輯實體的操作。Value Object和Session Facade共同組成了完整的業務邏輯實體,提供了業務邏輯層面向表示層的統一接口。與數據庫表的映射方式,通常采取單個數據表對應單個值對象的映射方式。可以與不同類型值對象以聚合方式組成新的值對象。
3.2.3 數據層
數據層對數據進行管理,并向業務邏輯層提供訪問接口。主要功能包括數據創建、數據存儲、數據查詢、數據更新、數據刪除、數據安全、事務支持、數據備份/恢復等。
數據層提供兩種形式的服務方式:數據庫方式和文件方式。數據庫主要方式提供具有明顯結構化特性的數據的存儲和訪問服務;文件方式主要提供非結構化數據的存儲和訪問服務,如圖像、字處理文檔、演示文稿、電子表格、語音和視頻片段等。
3.3 配置文件
MyWebFramework框架的配置文件主要有二個,一個是web.xml文件,用來進行系統初始化配置。此文件屬于控制器,控制器在初次啟動時從此文件加載系統的配置信息;另一個配置文件是web_config.xml,用來控制整個應用系統的頁面導航的,它是整個應用系統的重要文件,控制了系統執行時的執行流程。
1)web.xml文件的主要內容
2)web_config.xml 的主要內容如下,其中:
…………
…………
3.4 MyWebFramework框架的應用
使用MyWebFramework框架開發了某集團公司的航運管理系統,并已經投入運行,框架在具體實施時,系統中各類之間調用關系如圖3所示。
現以系統中報文管理模塊中增加過運河報為例,給出業務邏輯層的主要代碼:
1)Action類
在點擊圖4中的保存按鈕后,調用Action類。
Action類中主要完成對表單中數據的驗證,如果數據符合要求,則調用Facade類,完成數據插入功能。
2)Facade類
public class Tb_Opt_S08tFacade{
static ActionErrors errors2 = new ActionErrors();
public Tb_Opt_S08tBO bo = new Tb_Opt_S08tBO();
private static final Tb_Opt_S08tFacade instance = new Tb_Opt_S08tFacade();
private SqlClt sqlclt=SqlCltFactory.getDefaultSqlClt();
public Tb_Opt_ReportsBO borp = new Tb_Opt_ReportsBO();
…… ……
// 增加過運河報
public String add(Tb_Opt_S08tVO vo,Tb_Opt_ReportsVO vorp) throws AppException
{try{
bo.add(vo);
borp.add(vorp);
sqlclt.commit();
return \"ok\";
}catch(Exception ex){
System.out.println(ex.toString());
sqlclt.rollback();
throw new AppException(ex);
}……}
3)BO類
public class Tb_Opt_S08tBO
{// 向表中新增記錄
public void add(Tb_Opt_S08tVO vo) throws AppException
{try{
Tb_Opt_S08tDAO.getInstance().insert(vo);
}catch (Exception ex){throw new AppException(ex);}}
4 結論
MyWebFramework框架在航運管理項目中的成功實施,證明此框架在中大型項目開發中,是可行的。使用此框架可以縮短開發周期,提高開發效率,系統運行穩定,易于維護。但是MyWebFramework框架也有不足之處,如開發過程還不是特別簡單,開發過程中必須按照圖3的流程所示,完成各類之間的調用關系;配置文件實現方法上還是不夠完美,如果項目較大,配置文件就會過大,不便于維護。這些問題還需要逐步完善。
參考文獻:
[1] 孫衛琴.精通Struts:基于MVC的JavaWeb 設計與開發[M].北京:電子工業出版社,2004:95-127.
[2] 房麗娜,唐勝群,曾奕,李寧.基于Web應用的MVC架構實現——AWDF[J].計算機工程,2005,31(10):89-90.
[3] 耿剛.一種基于J2EE平臺的WEB應用框架的設計、實現與應用[D].西安:西安電子科技大學,2004.
[4] 官全龍,姚國祥.基于Struts的應用架構的研究[J].計算機工程與設計,2005(12):3225-3226.