基于Struts和Hibernate軟件架構實現(xiàn)基金管理信息系統(tǒng)_第1頁
基于Struts和Hibernate軟件架構實現(xiàn)基金管理信息系統(tǒng)_第2頁
基于Struts和Hibernate軟件架構實現(xiàn)基金管理信息系統(tǒng)_第3頁
基于Struts和Hibernate軟件架構實現(xiàn)基金管理信息系統(tǒng)_第4頁
基于Struts和Hibernate軟件架構實現(xiàn)基金管理信息系統(tǒng)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于Struts和Hibernate軟件架構實現(xiàn)基金管理信息系統(tǒng)

摘要本文詳細介紹了當前流行的開源框架Struts和Hibernate,將兩者結合起來設計并實現(xiàn)了一個基于Web的基金信息管理系統(tǒng)。在MVC架構中,Hibernate實現(xiàn)模型部分,Struts實現(xiàn)視圖和控制器部分,這種設計模式使系統(tǒng)在開發(fā)效率、可維護性和可擴展性方面都有很好的改進。關鍵詞mvc;struts;hibernate;基金信息管理系統(tǒng)0引言開發(fā)過程中一個優(yōu)秀的框架可以極大的提高開發(fā)效率。隨著Web開發(fā)技術的日趨成熟,在Web開發(fā)領域出現(xiàn)了一些現(xiàn)成的優(yōu)秀的框架,開發(fā)者可以直接使用它們,Struts與Hibernate就是兩種比較成功的框架。Struts框架運用MVC模式開發(fā)使Web應用變得很靈活,但Struts在Model部分的實現(xiàn)并不理想,而O/RMapping產(chǎn)品hibernate將關系型數(shù)據(jù)庫的數(shù)據(jù)對象化,可作為持久層的解決方案。Struts和Hibernate框架整合則很好地實現(xiàn)了控制流、業(yè)務調用、表示這三者的分離,使系統(tǒng)在開發(fā)效率、可維護性、可擴展性方面都有良好的改進。本文的基金信息管理系統(tǒng)表現(xiàn)層采用了Struts,數(shù)據(jù)持久層選擇了Hibernate,業(yè)務邏輯層則用普通java對象,從而開發(fā)出功能強大而又靈活的基金信息管理系統(tǒng)。文中還著重闡述了基于Struts和Hibernate架構實現(xiàn)基金信息管理系統(tǒng)的方法和關鍵技術。

1用Struts框架實現(xiàn)MVC模型-視圖-控制器是一種目前廣泛流行的軟件開發(fā)設計模式?!癕odel”代表應用的業(yè)務邏輯,“View”代表應用的表示,“Controller”提供應用的處理過程控制。通過這個設計模型,可以把應用邏輯、處理過程和顯示邏輯分成不同的組件實現(xiàn),這些組件可以進行交互和重用。模型層負責表達和訪問商業(yè)數(shù)據(jù),執(zhí)行商業(yè)邏輯和操作。在模型層變化的時候,它通知視圖層,并提供后者訪問自身狀態(tài)的能力,同時控制層也可以訪問其功能函數(shù)以完成相關的任務。視圖層負責顯示模型層的內容,它從模型層取得數(shù)據(jù)并指定這些數(shù)據(jù)如何被顯示出來。在模型層變化的時候,它將自動更新。另外視圖層也會將用戶的輸入傳送給控制器??刂破髫撠煻x應用程序的行為。它可以分派用戶的請求并選擇恰當?shù)囊晥D以用于顯示,同時它也可以解釋用戶的輸入并將它們映射為模型層可執(zhí)行的操作。Struts框架是實現(xiàn)MVC模式的一個應用框架,它由一組相互協(xié)作的組件、Servlet以及JSPTagLib組成。Struts的核心組件有ActionServlet、Action、ActionForm、ActionMapping、ActionForward及TagLib、配置文件等。其中控制器由ActionServlet來實現(xiàn),模型由Action和ActionForm來實現(xiàn),視圖則由JSP結合JSPTagLib來實現(xiàn)。[1,2]

2對象關系映射工具HibernateHibernate是一種實現(xiàn)對象和關系之間映射的框架。它對JDBC進行了輕量級的對象封裝,使得Java程序員可以使用面向對象編程思維來操作關系數(shù)據(jù)庫。在多層結構的應用中,業(yè)務層和數(shù)據(jù)層之間存在一個持久層,它負責應用到數(shù)據(jù)庫的數(shù)據(jù)存儲,數(shù)據(jù)的檢索和更新。持久層的實現(xiàn)技術包括JDBC、實體Beans、JDO以及Hibernate等,但是JDBC中數(shù)據(jù)訪問對象和SQL語句直接綁定在一起降低了可維護性,且不支持繼承和多態(tài)。EJB不支持繼承和多態(tài)而且還需要額外的EJB容器。相比之下Hibernate則是一個非常好的選擇,目前的應用系統(tǒng)大多使用關系數(shù)據(jù)庫,在做設計和開發(fā)時又是面向對象的方式,這時就可以選用Hibernate來實現(xiàn)對象、關系之間的映射和數(shù)據(jù)的持久化。而且Hibernate擁有一種功能非常強大的查詢語言,這種語言與SQL非常相似,便于掌握。在應用Hiberante框架時,首先編寫O/R映射描述文件,完成對象、關系數(shù)據(jù)庫之間的映射。持久對象可以根據(jù)映射文件生成,然后編寫業(yè)務邏輯類。這些JavaBean實現(xiàn)了具體的業(yè)務邏輯,也封裝了對Hibernate的訪問。Hiberante利用數(shù)據(jù)庫以及其他一些配置文件如,XMLMapping等,為應用程序提供數(shù)據(jù)持久服務。

3基于Struts和Hibernate框架構建的基金信息管理系統(tǒng)通過前面的介紹,Struts和Hibernate都具有自己的優(yōu)點和不足,如果將兩者結合起來,通過Struts技術來降低M—V—C各層之間的耦合性,而利用Hibernate架構來降低業(yè)務模型部分的開發(fā)難度。結合之后的好處是采用Struts和Hibernate結合的應用框架開發(fā)出來的信息系統(tǒng)無論在整體的架構上還是在局部的復雜業(yè)務模型中都得到了更低的耦合性,它們的靈活性與可維護性也得到了提高,從而消除了單獨使用這些架構開發(fā)系統(tǒng)的不足。本系統(tǒng)采用的Struts+Hibernate構架如圖1所示。在這個方案中,視圖層是采用JSP技術結合Struts強大的TagLib來實現(xiàn);業(yè)務層的核心部件是控制器,它由Struts的控制組件ActionServlet、ActionMapping及Action來實現(xiàn),業(yè)務層還包含業(yè)務邏輯類,它由JavaBean來實現(xiàn)。當然,這些JavaBean里封裝了與Hibernate的交互關系,業(yè)務層通過模型層來實現(xiàn)與數(shù)據(jù)庫資源的交流,這一部分工作由Hibernate來做。最底層是關系數(shù)據(jù)庫。圖1系統(tǒng)的應用框架

4使用Struts和Hibernate架構實現(xiàn)基金信息管理系統(tǒng)隨著技術的進步和企業(yè)管理要求的提高,辦公自動化系統(tǒng)逐步發(fā)展到了以“知識管理”為核心的辦公自動化系統(tǒng),本項目的提出者為深圳市某一基金公司。本系統(tǒng)在基金辦公的自動化、網(wǎng)絡化的基礎之上,再實現(xiàn)基金公司內部及時通訊,提高基金公司員工的溝通能力;并在統(tǒng)一的系統(tǒng)平臺下,連接基金公司各類信息系統(tǒng)和各類資源,是企業(yè)內部進行信息交流和管理的平臺。本系統(tǒng)采用Struts和Hibernate框架結合進行Web應用程序開發(fā),從而有效的保證系統(tǒng)的可交換性、可維護性、可擴展性和可移植性。本系統(tǒng)主要由我的工作臺、我的辦公室、辦公直通車、信息中心、研究平臺、公司論壇、系統(tǒng)管理幾個模塊組成。系統(tǒng)的總體架構如圖2所示。采用Struts構建系統(tǒng),系統(tǒng)中的每個模塊都有一個自己的配置文檔,以控制該模塊的流程,每個模塊除了業(yè)務邏輯不一樣之外,采用Struts和Hibernate架構來實現(xiàn)模塊的技術與過程完全一樣。下面僅就研究平臺模塊中的基金凈值子模塊為例進行說明。用戶登陸該模塊,可以瀏覽公司的基金最新凈值列表,并可根據(jù)基金代碼、基金名稱查詢某支基金的歷史凈值和基金凈值走勢圖。圖2基金信息管理系統(tǒng)結構圖

控制層的實現(xiàn)Struts控制器組件主要負責接受用戶請求,更新模型,以及選擇合適的視圖組件返回給用戶,它在模型和視圖之間起這中間調度作用。Struts的核心是控制器部分的ActionServlet,而ActionServlet通過一個xml配置文件來配置業(yè)務流程,因此這個模塊用了一個來配置業(yè)務流程,同時在中申明這個配置項。在中,聲明每個業(yè)務所需要的客戶端請求、處理該請求的Action類,收集該次請求數(shù)據(jù)信息的FormBean類,并說明業(yè)務執(zhí)行完畢后各種結果應該給用戶返回的視圖。代碼節(jié)選form-beansform-beanname="fundForm"type=""http://form-beansaction-mappings

actionpath="/listFundNav"type=""name="fundForm"scope="request"parameter="listFundNav"validate="true"input="/fund/fund_nav_"/action/action-mappingsActionServlet將會按照這個配置表,在收到客戶端查看某支基金的基金凈值的信息之后,會將用戶在JSP頁面上提交過來的數(shù)據(jù)填充到模型類FundForm中,而這個FundForm必須先在中定義。FundForm使用了Struts的Validator驗證框架,它能對用戶輸入的表單數(shù)據(jù)進行驗證。如果驗證未通過,會將錯誤返回輸入頁面。當數(shù)據(jù)成功填充到FundForm后,ActionServlet會轉向FundAction,在那里面進行業(yè)務邏輯操作。FundAction部分代碼publicclassFundActionextendsBaseAction{………….publicActionForwardlistFundNav(ActionMappingmapping,ActionFormform)throwsException{FundFormformBean=(FundForm)form;FundServicebiz=(FundService)();TfundNavtfundNav=newTfundNav();(formBean,tfundNav);list=(tfundNav,15,());("fundlist",list);return();}

模型層及持久層的實現(xiàn)在FundAction中只是執(zhí)行了業(yè)務邏輯功能,而真正的業(yè)務處理和對象持久化工作是在模型層與持久層中實現(xiàn)。在FundAction中,創(chuàng)建了類FundService的對象biz,然后調用該類的getFundNavs方法,查詢出該基金的歷史凈值表。類FundService中getFundNavs方法代碼publicListgetFundNavs(TfundNavo,intpageSize,intpage)throwsAppException{BaseQueryHelperbq=BaseQueryHelper.getInstance();("fundid",());("fundnm",());(newString[]{"fundid","settledate"});Stringsql=();types[]=();Objectparams[]=();returngetQueryList(sql,params,types,pageSize,page);}TFundNav是Hibernate里面的持久化類,它的屬性通過Hibernate的配置映射文檔映射到關系數(shù)據(jù)庫中。Hibernate的映射文件說明了一個持久化類與關系數(shù)據(jù)庫表的映射關系,包括映射到哪個字段,以及集合屬性映射到哪些相關字段。文件配置hibernate-mappingclassname=""table="T_FUND_NAV"lazy="true"composite-idkey-propertyname="fundid"column="FUNDID"type=""length="6"/key-propertyname="fundnm"column="FUNDNM"type=""length="20"/key-propertyname="nav"column="NAV"type="double"length="7"/key-propertyname="sumnav"column="SUMNAV"type="double"length="7"/key-propertyname="settledate"column="SETTLEDATE"type=""length="8"http://composite-id/class/hibernate-mapping

Hibernate的數(shù)據(jù)庫連接配置在Web-INF“Classes目錄下創(chuàng)建名為的配置文件,并且將它的路徑添加到應用的類路徑中就可以完成Hibernate的配置。該配置文件由Hibernate用來連接到數(shù)據(jù)庫、生成模式和獲得其它特定數(shù)據(jù)庫信息的屬性組成。要將底層數(shù)據(jù)庫內的變動映射到整個應用,只需要修改該文件內的屬性值。該項目使用Oracle9i,其數(shù)據(jù)庫連接配置hibernate-configurationsession-factorypropertyname="_class"/propertypropertyname=""jdbc:oracle:thin:@:1521:oracledb/propertypropertyname=""###/propertypropertyname=""###/propertypropertyname=""50/propertypropertyname=""/property………..mappingresource="/"http://session-factory/hibernate-configuration

5總結本文介紹了采用Struts和Hibernate框架的工作原理,并結合一個具體的實例論述了如何具體實現(xiàn)Struts框架和Hibernate應用相結合進行Web應用開發(fā)。實踐證明,采用Struts和Hibernate結合的J2EE框架進行Web開發(fā),充分發(fā)揮了兩者的優(yōu)點,有效地提高了項目的開發(fā)效率,使系統(tǒng)具有良好的交互性、可擴展性和可維護性,基于這兩種框架進行Web應用開發(fā)也必將成為主流技術。目前,該系統(tǒng)已應用于深圳市某基金公司,并取

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論