基于Hibernate與Struts框架的物流管理系統(tǒng)研究_第1頁
基于Hibernate與Struts框架的物流管理系統(tǒng)研究_第2頁
基于Hibernate與Struts框架的物流管理系統(tǒng)研究_第3頁
基于Hibernate與Struts框架的物流管理系統(tǒng)研究_第4頁
全文預覽已結束

下載本文檔

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

文檔簡介

摘要:基于使用單一框架構建企業(yè)級應用時存在拓展性差,結構復雜的問題,給出使用Struts結合Hibernate開源框架進行整合開發(fā)的實例,同時探討如何配置和靈活應用Struts和Hibernate框架,充分發(fā)揮兩者的優(yōu)勢,構建結構清晰、具備強大擴展性和維護性的J2EE應用。

關鍵字:HibernateStrutsMVCJ2EE

Abstract:TosolvetheproblemssuchaspoorexpansibilityanddifficultworkdivisioninbuildingWebapplication,thereisabestpracticeofhowtocombineanddeployHibernate/logistics/andStrutsframework.ThecombinationofusingthemcouldconstructastandardJ2EEWebapplicationandalsoimprovethedevelopmentefficiencygreatly.

Keywords:Hibernate,Struts,MVC,J2EE

1Hibernate的數(shù)據(jù)持久化技術

Hibernate是一個開放源代碼的O/RMapping(對象關系映射架構),它對JDBC進行了輕量級的對象封裝,使JAVA程序員可以方便地使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate的目標是簡化開發(fā)者通常的數(shù)據(jù)持久化編程任務,它可以把對象模型表示的對象映射到關系型數(shù)據(jù)庫中,同時提供了數(shù)據(jù)查詢和獲取的方法,以大幅度減少開發(fā)時人工使用SQL和JDBC處理數(shù)據(jù)的時間。

通過使用Hibernate可以輕松解決開發(fā)者在使用傳統(tǒng)的CMP以及JDBC和DAO(DateAccessObject)技術開發(fā)持久層時遇到的困難,即很難把關系表記錄完整地映射到持久對象的關系上來,主要體現(xiàn)在多表的關系無法直接映射到對持久對象的映射上來。

2基于MVC模式的Web框架Struts的應用

2.1Struts的框架結構Struts是基于模型(Model)、視圖(View)、控制器(Controller)的MVC模式應用架構,MVC減弱了業(yè)務邏輯接口和數(shù)據(jù)接口之間的耦合,常被用來幫助開發(fā)者控制設計變化。在Struts框架中,Model代表的是應用的業(yè)務邏輯,通過JavaBean、EJB組件實現(xiàn);View是應用的表示層,由JSP頁面產(chǎn)生;Controller是提供應用的處理過程控制,一般是Servlet。通過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的組件實現(xiàn),組件之間可以進行交互和重用。這種組件化的優(yōu)點更易于實現(xiàn)對大規(guī)模系統(tǒng)的開發(fā)和管理。

2.2應用Struts的作用及優(yōu)勢Struts清晰地劃分了控制部分,事物邏輯和外觀視圖,讓開發(fā)者遵循一個統(tǒng)一的模式進行設計編碼,簡化了系統(tǒng)后期維護的工作量,尤其是當其他開發(fā)者接受項目的時候,這種優(yōu)勢體現(xiàn)的更加明顯。

Struts給開發(fā)者提供了良好的頁面導航功能,開發(fā)者可以通過配置文件struts-config.xml把握整個系統(tǒng)得體系結構,同時,Struts對Taglib標簽庫進行了擴展,使之功能更為強大。使用Taglib可以簡化JSP頁面的開發(fā),使得JSP包含最少的代碼,同時也使開發(fā)者可以更方便靈活地在Struts中控制程序的流程。

3Ejb在開發(fā)中的作用

EJB在EJB容器中運行,運行時環(huán)境由服務器建立。雖然EJB容器對開發(fā)還不是透明的,但其為運行其中的EJB提供項事務處理等的系統(tǒng)級服務。這些服務可以快速的建立和部署企EJB,而這些EJB正是構成和新業(yè)務處理的J2EE應用。EJB就是一個應用中封裝了商務邏輯的服務器端組件。這些商務邏輯是實現(xiàn)應用程序目標的代碼。

EJB分為兩種類型:SessionBean和EntityBean。

SessionBean表現(xiàn)連接到J2EE服務器的一個單獨的客戶端??蛻舳送ㄟ^調(diào)用會話Bean的方法來訪問部署在服務器上的應用程序。會話Bean完成客戶端的請求,從而對客戶端隱藏了服務器內(nèi)復雜商務邏輯的執(zhí)行過程。

EntityBean描述一個持久存儲備的商業(yè)對象。商業(yè)對象的例子如:消費者,訂單和產(chǎn)品等。在J2EESDK中持久存儲設備是一個關系型數(shù)據(jù)庫。最典型的情況是一個EntityBean有一個在底層數(shù)據(jù)庫中與之相對應的表,而EntityBean的每一個實例對應表中的一行數(shù)據(jù)。EntityEJB使得程序員對二維關系數(shù)據(jù)庫的存取對象化了,程序員可以使用Set或者Get等面向?qū)ο蟮姆椒▉聿倏v關系數(shù)據(jù)庫的數(shù)據(jù)。

4用Struts實現(xiàn)邏輯控制

下圖是系統(tǒng)與AppServer關系圖系統(tǒng)通過Struts實現(xiàn)了Web層MVC,通過Web層代理訪問EJB層,客戶端提交數(shù)據(jù)以后封裝在DTO進行傳輸,數(shù)據(jù)傳輸?shù)絊everlet后通過DAO接口轉換到模塊層。DAO中主要實現(xiàn)一些堆數(shù)據(jù)的方法。模塊層中主要由EJB構成,EJB又封裝了Hibernate,在Hibernate中實現(xiàn)對數(shù)據(jù)庫的具體操作。

DTO把多個數(shù)據(jù)封裝成一個對象提交,提高了傳輸效率。

DAO接口減少了數(shù)據(jù)之間的耦合性,整個系統(tǒng)如上圖所示是由各個模塊組成,在修改某個后,其他模塊不需要改動。

Struts實質(zhì)上就是在JSPModel的基礎上實現(xiàn)的一個MVC框架。在Struts框架中,模型由實現(xiàn)業(yè)務邏輯的JavaBean或EJB組件構成,控制器由ActionServlet和Action來實現(xiàn)。

4.1視圖視圖由一組JSP文件構成。JSP文件中沒有業(yè)務邏輯,也沒有模型信息,只有標簽,這些標簽可以是標準的JSP標簽或客戶化標簽。

4.2模型模型表示應用程序的狀態(tài)和業(yè)務邏輯。對于大型應用,業(yè)務邏輯通常由JavaBean或EJB組件來實現(xiàn)。

4.3控制器控制器由ActionServlet類和Action類來實現(xiàn)。ActionServlet類是Struts框架中的核心組件。ActionServlet主要負責接收HTTP請求信息,根據(jù)配置文件strutsconfig.xml的配置信息,把請求轉發(fā)給適當?shù)腁ction對象。如果該Action對象不存在,ActionServlet會先創(chuàng)建這個Action對象。Action類負責調(diào)用模型的方法,更新模型的狀態(tài),并幫助控制應用程序的流程。當ActionServlet控制器收到用戶請求后,把請求轉發(fā)到一個Ac-tion實例。如果這個實例不存在,控制器會首先創(chuàng)建它,然后調(diào)用這個Action實例的execute()方法。Action的execute()方法返回ActionForward對象,封裝了把用戶請求再轉發(fā)給其它Web組件的信息。用戶定義自己的Action類,即Action基類的子類時,必須覆蓋execute()方法。在Action基類中該方法返回null。

4.4Struts的工作流程對于采用Struts框架的Web應用,在Web應用啟動時就會加載并初始化ActionServlet,ActionServlet從strutsconfig.xml文件中讀取配置信息,把它們存放到各種配置對象中。當Ac-tionServlet接收到一個客戶請求時,將執(zhí)行如下流程:

(1)檢索和用戶請求匹配的ActionMapping實例,如果不存在,就返回用戶請求路徑無效的信息。

(2)如果ActionForm實例不存在,就創(chuàng)建一個ActionForm對象,把客戶提交的表單數(shù)據(jù)保存到ActionForm對象中。

(3)根據(jù)配置信息決定是否需要表單驗證。如果需要驗證,就調(diào)用ActionForm的validate()方法。

(4)如果Actionform的validate()返回null或返回一個不包含ActionMessage的ActionForm對象,就表示表單驗證成功。

(5)ActionServlet根據(jù)ActionMapping實例包含的映射信息決定將請求轉發(fā)給哪個Action。如果相應的Action實例不存在,就先創(chuàng)建這個實例,然后調(diào)用Action的execute()方法。

(6)Action的execute()方法返回一個ActionForward對象,ActionServlet再把客戶請求轉發(fā)給ActionForward對象指向的JSP組件。

(7)ActionForward對象指向的JSP組件生成動態(tài)網(wǎng)頁,返回給客戶。對于流程4)如果ActionForm的validate()方法返回一個包含一個或多個ActionMessage的ActionErrors對象,就表示表單驗證失敗,此時ActionServlet將直接把請求轉發(fā)給你好用戶提交表單的JSP組件,在這種情況下,不會再創(chuàng)建Action對象并調(diào)用Action的execute()方法。

5搭建數(shù)據(jù)庫系統(tǒng)

5.1登陸數(shù)據(jù)庫在win2000服務中啟動監(jiān)聽服務,打開數(shù)據(jù)庫,連接身份選擇sysdba用戶名:system密碼:manager5.2導入數(shù)據(jù)庫第一步:impfile=D:\ocean.dmpfromuser=jiaxuemingtouser=ocean第二步:用戶名設置為ocean(新建數(shù)據(jù)庫的用戶名)密碼自己定義。

5.3Weblogic配置第一步:登陸:http://localhost:7001/console/Id:systemPwd:12345678第二步:JDBC->connctionType->數(shù)據(jù)庫名->數(shù)據(jù)庫驅(qū)動->oracle’sDriver(thin)第三步:DataSourcesJndiName:ocean\ocean\classes\hibernate.cfg.xml第四步:修改C:

\bea\use_projects\domains\mydomain\startWeblogic.cmd的path路徑就可以在IE中運行http://localhost:7001/OceanWebApp/logistics//menu/default.htm6結束語本文作者的創(chuàng)新點:完成后的系統(tǒng)為一個可部署到J2EE應用服務器上的Web應用,用戶界面為Html形式。整個系統(tǒng)構架在Struts之上,通過Struts實現(xiàn)Web層的MVC框架。業(yè)務操作放到SessionBean中,SessionBean作為SessionFacade訪問底層的EntityBean。

通過項目的實現(xiàn)可以得出以下幾點結論:1)因為Hibernate是開源的,具有豐富的文檔支持,而且對持久層進行了封裝,不用程序員去寫SQL代碼,因此采用Hibernate進行數(shù)據(jù)持久層的設計能夠完整地對多表間的關系進行影射,所以能夠極大地提高數(shù)據(jù)訪問的效率,改善系統(tǒng)性能;2)同時借用Struts架構可以搭建一個更成熟的符合MVC規(guī)范的J2EE架構,而且使數(shù)據(jù)的安全性在原有數(shù)據(jù)庫安全性的基礎上得到進一步的提高。

參考文獻[1]宋秀琴,侯殿昆。基于Struts和Hibernate的Web應用的構建。[J]微計算機信息,2005,11-3[2]夏昕,曹曉鋼。深入淺出HIBERNATE[M]。北京:電子工業(yè)出版社,2005[3]孫衛(wèi)琴。精通STRUTS:基于MVC的JavaWeb設計與開發(fā)[M],北京:電子工業(yè)出版社,2004。

[4]TURNERJ,BEDELLK.STRUTSKickStart中文版[M]。孫勇譯。北京:電子工業(yè)出版社,2004。本文由無憂論文網(wǎng)物流管理論文

溫馨提示

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

最新文檔

評論

0/150

提交評論