畢業(yè)設(shè)計--網(wǎng)上購物系統(tǒng)的研究與實現(xiàn)_第1頁
已閱讀1頁,還剩53頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  袇肈芄薁螃肇莆莄蠆肆肆蕿薅肅膈莂襖膅芀薈螀膄莃莀蚆膃肂薆螞膂芅葿羈膁莇蚄袆膀葿蕆螂腿腿螞蚈螆芁蒅薄裊莃蟻袃襖肅蒄蝿袃膅蠆螅袃莈薂蟻袂蒀蒞羀袁膀薀袆袀節(jié)莃螂衿莄薈蚈羈肄莁薄羇膆薇袂羇艿莀袈羆蒁蚅螄羅膁蒈蝕羄芃蚃薆羃蒞蒆裊羂肅螞螁肁膇蒄蚇肁艿蝕薃肀蒂蒃羈聿膁芅袇肈芄薁螃肇莆莄蠆肆肆蕿薅肅膈莂襖膅芀薈螀膄莃莀蚆膃肂薆螞膂芅葿羈膁莇蚄袆膀葿蕆螂腿腿螞蚈螆芁蒅薄裊莃蟻袃襖肅蒄蝿袃膅蠆螅袃莈薂蟻袂蒀蒞羀袁膀薀袆袀節(jié)莃螂衿莄薈蚈

2、羈肄莁薄羇膆薇袂羇艿莀袈羆蒁蚅螄羅膁蒈蝕羄芃蚃薆羃蒞蒆裊羂肅螞螁肁膇蒄蚇肁艿蝕薃肀蒂蒃羈聿膁芅袇肈芄薁螃肇莆莄蠆肆肆蕿薅肅膈莂襖膅芀薈螀膄莃莀蚆膃肂薆螞膂芅葿羈膁莇蚄袆膀葿蕆螂腿腿螞蚈螆芁蒅薄裊莃蟻袃襖肅蒄蝿袃膅蠆螅袃莈薂蟻袂蒀蒞羀袁膀薀袆袀節(jié)莃螂衿莄薈蚈羈肄莁薄羇膆薇袂羇艿莀袈羆蒁蚅螄羅膁蒈蝕羄芃蚃薆羃蒞蒆裊羂肅螞螁肁膇蒄蚇肁艿蝕薃肀蒂蒃羈聿膁芅袇肈芄薁螃肇莆莄蠆肆肆蕿薅肅膈莂襖膅芀薈螀膄莃莀蚆膃肂薆螞膂芅葿羈膁莇蚄袆膀葿蕆螂腿腿螞蚈

3、螆芁蒅薄裊莃蟻袃襖肅蒄蝿袃膅蠆螅袃莈薂蟻袂蒀蒞羀袁膀薀袆袀節(jié)莃螂衿莄薈蚈羈肄莁薄羇膆薇袂羇艿莀袈羆蒁蚅螄羅膁蒈蝕羄芃蚃薆羃蒞蒆裊羂肅螞螁肁膇蒄</p><p>  腿薆羈聿蕆薅蚇芄莃薄螀肇艿蚃袂節(jié)膅螞羄肅蒄蟻蚄袈蒀蝕袆肅莆蝕羈羆節(jié)蠆蚈膂膈蚈螀羅蒆蚇袃膀莂螆羅羃羋螅蚅膈膄螄螇羈薃螄罿膇葿螃肂聿蒞螂螁芅芁莈襖肈膇莈羆芃蒆蕆蚆肆莁蒆螈芁芇蒅袀肄膃蒄肅袇薂蒃螂膃蒈蒂襖羅莄蒂羇膁芀蒁蚆羄膆薀蝿腿蒅蕿袁羂莁薈羃膇芇薇螃羀芃薆

4、裊芆腿薆羈聿蕆薅蚇芄莃薄螀肇艿蚃袂節(jié)膅螞羄肅蒄蟻蚄袈蒀蝕袆肅莆蝕羈羆節(jié)蠆蚈膂膈蚈螀羅蒆蚇袃膀莂螆羅羃羋螅蚅膈膄螄螇羈薃螄罿膇葿螃肂聿蒞螂螁芅芁莈襖肈膇莈羆芃蒆蕆蚆肆莁蒆螈芁芇蒅袀肄膃蒄肅袇薂蒃螂膃蒈蒂襖羅莄蒂羇膁芀蒁蚆羄膆薀蝿腿蒅蕿袁羂莁薈羃膇芇薇螃羀芃薆裊芆腿薆羈聿蕆薅蚇芄莃薄螀肇艿蚃袂節(jié)膅螞羄肅蒄蟻蚄袈蒀蝕袆肅莆蝕羈羆節(jié)蠆蚈膂膈蚈螀羅蒆蚇袃膀莂螆羅羃羋螅蚅膈膄螄螇羈薃螄罿膇葿螃肂聿蒞螂螁芅芁莈襖肈膇莈羆芃蒆蕆蚆肆莁蒆螈芁芇蒅袀肄膃蒄

5、肅袇薂蒃螂膃蒈蒂襖羅莄蒂羇膁芀蒁蚆羄膆薀蝿腿蒅蕿袁羂莁薈羃膇芇薇螃羀芃薆裊芆腿薆羈聿蕆薅蚇芄莃薄螀肇艿蚃袂節(jié)膅螞羄肅蒄蟻蚄袈蒀蝕袆肅莆蝕羈羆節(jié)蠆蚈膂膈蚈螀羅蒆蚇袃膀莂螆羅羃羋螅蚅膈膄螄螇羈薃螄罿膇葿螃肂聿蒞螂螁芅芁莈襖肈膇莈羆芃蒆蕆蚆肆莁蒆螈芁芇蒅袀肄膃蒄肅袇薂蒃螂膃蒈蒂襖羅莄蒂羇膁芀蒁蚆羄膆薀蝿腿蒅蕿袁羂</p><p>  畢業(yè)設(shè)計說明書(論文)</p><p>  作 者:

6、 學 號: </p><p>  系 部: 通信工程學院 </p><p>  專 業(yè): 通信工程 </p><p>  題 目: 網(wǎng)上購物系統(tǒng)的研究與實現(xiàn)

7、 </p><p>  指導者: </p><p>  評閱者: </p><p><b>  摘要</b></p><p>  伴隨著Inter

8、net的蓬勃發(fā)展,網(wǎng)絡(luò)購物中心作為電子商務(wù)的一種形式正以其高效、低成本的優(yōu)勢,逐步成為新興的經(jīng)營模式和理念,人們已經(jīng)不再滿足用途信息的瀏覽和發(fā)布,而是渴望著能夠充分享受網(wǎng)絡(luò)所帶來的更加多的便利。網(wǎng)絡(luò)購物正適應了當今社會快節(jié)奏地生活,使顧客足不出戶便可以方便快捷輕松地選購自己喜歡的商品。</p><p>  本系統(tǒng)便是嘗試用J2EE架構(gòu)在網(wǎng)絡(luò)上架構(gòu)一個動態(tài)的電子商務(wù)網(wǎng)站,它是在Windows XP下,以MYSQL為

9、數(shù)據(jù)庫開發(fā)平臺,Tomcat網(wǎng)絡(luò)信息服務(wù)作為應用服務(wù)器,采用J2EE框架開發(fā)的網(wǎng)上購物系統(tǒng)。他分前臺部分和后臺部分,前臺部分由用戶使用,主要包括用戶注冊,購物車管理等功能;后臺部分由管理員使用,主要包括商品管理,處理訂單,用戶信息管理等功能。建立后的網(wǎng)站系統(tǒng)是一個動態(tài)、交互式、具有商品提供、系統(tǒng)管理等功能的電子商務(wù)網(wǎng)站。</p><p>  關(guān)鍵字:J2EE; MYSQL;Tomcat;網(wǎng)上購物系統(tǒng)</p&

10、gt;<p><b>  Abstract</b></p><p>  Along with the vigorous development of the Internet, e-commerce networks as a shopping center is a form of its highly efficient, low-cost advantages, grad

11、ually emerging as a business model and philosophy, there is no longer meet use and dissemination of information browsing, but a desire to bring the full enjoyment network more convenient. Internet shopping is being adapt

12、ed to the fast pace of today's society to live, so that customers can enjoy the convenience of fast and easy way to purchase t</p><p>  The system is trying to use J2EE architecture in a dynamic network

13、of e-commerce websites structure, which is in Windows XP, MYSQL for database development in platform, Tomcat application server as a network information services, use J2EE architecture development online shopping system.

14、 Prospects and the background of some of his hours, the prospects of users, including users registered, a shopping cart management, order management, personal information management; Background in part by managers</p&

15、gt;<p>  After the establishment of the website is a dynamic, interactive, with commodities, systems management, voice mail, and other functions of the e-commerce website users. </p><p>  Keywords:J2E

16、E;JSP; MYSQL;Tomcat;Online shopping system</p><p><b>  目 錄</b></p><p><b>  第一章 緒論2</b></p><p><b>  1.1 引言2</b></p><p>  1.2 選題背景與意

17、義2</p><p>  1.3 研究現(xiàn)狀3</p><p>  1.4 論文主要研究內(nèi)容3</p><p>  1.5 主要章節(jié)安排4</p><p>  第二章J2EE簡介5</p><p>  2.1 J2EE基本概念5</p><p>  2.1.1 J2EE概念5<

18、/p><p>  2.1.2 J2EE的優(yōu)勢6</p><p>  2.2 J2EE關(guān)鍵技術(shù)9</p><p>  2.2.1 JSP的技術(shù)原理9</p><p>  2.2.2 Struts框架11</p><p>  第三章 系統(tǒng)需求分析及總體設(shè)計16</p><p>  3.1需求分

19、析16</p><p>  3.1.1系統(tǒng)用戶16</p><p>  3.1.2 網(wǎng)站功能16</p><p>  3.2系統(tǒng)功能模塊設(shè)計16</p><p>  3.2.1系統(tǒng)功能分析16</p><p>  3.2.2用戶訪問系統(tǒng)的流程18</p><p>  第四章 數(shù)據(jù)庫設(shè)

20、計與實現(xiàn)19</p><p>  4.1 數(shù)據(jù)庫需求分析19</p><p>  4.2 數(shù)據(jù)庫結(jié)構(gòu)設(shè)計19</p><p>  4.2.1 用戶信息表(cart_user)19</p><p>  4.2.2 商品信息表(cart_product)20</p><p>  4.2.3 訂單表(cart_o

21、rder)20</p><p>  4.2.4 訂單條目表(cart_order_item)20</p><p>  4.3 Hibernate訪問數(shù)據(jù)庫21</p><p>  4.3.1 Hibernate簡介21</p><p>  4.3.2 Hibernate的工作方式21</p><p>  4.

22、3.3 用Hibernate訪問數(shù)據(jù)庫22</p><p>  4.3.4 用Hibernate訪問數(shù)據(jù)庫24</p><p>  第五章 系統(tǒng)詳細設(shè)計26</p><p>  5.1前臺部分26</p><p>  5.1.1前臺總體框架26</p><p>  5.1.2 用戶管理模塊28</p&

23、gt;<p>  5.1.3用戶登錄29</p><p>  5.1.4 購物車模塊30</p><p>  5.1.5 修改用戶資料33</p><p>  5.1.6 商品查詢34</p><p>  5.2后臺部分36</p><p>  5.2.1后臺總體框架36</p>

24、<p>  5.2.2管理員登錄37</p><p>  5.2.3商品管理38</p><p>  5.2.4訂單管理39</p><p>  5.2.5 用戶管理40</p><p>  第六章 總結(jié)與展望42</p><p><b>  致謝43</b></p&

25、gt;<p><b>  參考文獻44</b></p><p><b>  附錄A45</b></p><p><b>  附錄B47</b></p><p><b>  第一章 緒論</b></p><p><b>  1.

26、1 引言</b></p><p>  21世紀是網(wǎng)絡(luò)飛速發(fā)展的時代,上網(wǎng)、創(chuàng)建網(wǎng)站已經(jīng)成為熱門話題。Internet技術(shù)得到持續(xù)、猛烈的發(fā)展,已經(jīng)成為計算機產(chǎn)業(yè)的一個技術(shù)熱點,越來越多的企業(yè)開始關(guān)注網(wǎng)絡(luò),許多人正在或正準備學習網(wǎng)絡(luò)知識,進行網(wǎng)絡(luò)開發(fā)或創(chuàng)建自己的網(wǎng)站。</p><p>  網(wǎng)上購物是一種具有交互功能的商業(yè)信息系統(tǒng)。它向用戶提供靜態(tài)和動態(tài)兩類信息資源。所謂靜態(tài)信息是

27、指那些比經(jīng)常變動或更新的資源,如公司簡介、管理規(guī)范和 公司制度等等;動態(tài)信息是指隨時變化的信息,如商品報價,會議安排和培訓信息等。網(wǎng)上購物系統(tǒng)具有強大的交互功能,可使商家和用戶方便的傳遞信息,完成電子貿(mào)易或EDI交易。這種全新的交易方式實現(xiàn)了公司間文檔與資金的無紙化交換。</p><p>  1.2 選題背景與意義</p><p>  網(wǎng)上商店是電子商務(wù)的典型應用。大多數(shù)網(wǎng)上商店系統(tǒng)是基于

28、兩層體系結(jié)構(gòu)來進行設(shè)計和開發(fā)的。隨著Internet的飛速發(fā)展,傳統(tǒng)的兩層體系結(jié)構(gòu)面臨著嚴峻的挑戰(zhàn),其中最為突出的問題是開發(fā)負擔重、維護困難等。</p><p>  J2EE 是構(gòu)建電子商務(wù)系統(tǒng)的新興技術(shù),采用J2EE技術(shù),可以方便地將系統(tǒng)分離為三層:表示層、業(yè)務(wù)層及數(shù)據(jù)庫層。表示層向客戶的瀏覽器提供基于Web的顯示頁 面;業(yè)務(wù)層處理客戶購物過程;數(shù)據(jù)層則提供數(shù)據(jù)存儲。采用這種層次結(jié)構(gòu)可以提高系統(tǒng)的擴展性和服務(wù)器

29、的效率,方便開發(fā)。</p><p>  本文針對目前網(wǎng)上商店所面臨的問題,采用J2EE技術(shù),設(shè)計開發(fā)了一個網(wǎng)上商店系統(tǒng)。系統(tǒng)具有高可靠性、可擴展性和可重用性的特點。</p><p>  系統(tǒng)中采用多種設(shè)計模式來提高系統(tǒng)性能:采用前臺控制器來方便地實現(xiàn)導航;采用復合視圖來向用戶提供Web顯示,減少了視圖中代碼的重復;采用DAO模式訪問數(shù)據(jù)庫,從而實現(xiàn)了業(yè)務(wù)層和數(shù)據(jù)訪問層的分離,降低了層與層之

30、間的耦合性。</p><p>  系統(tǒng)使用了J2EE中的多種技術(shù),如Struts、JSP、Servlet、Hibernate、等。系統(tǒng)以MySql作為后臺數(shù)據(jù)庫,在Tomcat5.0應用服務(wù)器上部署成功。</p><p><b>  1.3 研究現(xiàn)狀</b></p><p>  在美、日等信息化程度較高的國家和地區(qū),網(wǎng)絡(luò)商店發(fā)展速度迅猛,美國的

31、世界級超一流的零售商,如沃爾瑪凱瑪特,家庭倉儲、科羅格、J.C培尼等紛紛擠身于網(wǎng)絡(luò)經(jīng)商的行列。調(diào)查表明:美國的家庭已越來越習慣于在家中從網(wǎng)上購物。</p><p>  在我國,網(wǎng)上購物從無到有也不過短短幾年時間。我國第一家網(wǎng)上購物發(fā)生在1996年,燕莎友誼商場首次通過網(wǎng)上商城售出一個景泰藍,雖然貨款的支付不是在網(wǎng)上進行的,但這畢竟為我國零售業(yè)奏出了網(wǎng)上購物的先聲。根據(jù)CNNIC的統(tǒng)計結(jié)果,截止2004年1月中國有

32、互聯(lián)網(wǎng)用戶7950萬人,而又有40.7%以上的網(wǎng)民在過去的一年里有過網(wǎng)上購物經(jīng)歷,這就說明中國有網(wǎng)上購物的用戶達是3235.7萬人,并且這一數(shù)字還在以17%左右的速度增長,到2006年中國網(wǎng)上購物用戶將達到6962萬人,這說明在中國發(fā)展網(wǎng)上購物具有良好的群眾基礎(chǔ),網(wǎng)上購物方式日趨被大家所接受。</p><p>  1.4 論文主要研究內(nèi)容</p><p>  本論文涉及了軟件開發(fā)基礎(chǔ)知識、

33、J2EE、MVC模式等方面的內(nèi)容,主要包括了以下幾個方面:</p><p>  軟件開發(fā)流程包括以下步驟,即業(yè)務(wù)需求分析,可行性研究,方案設(shè)計,確定開發(fā)計劃,需求分析,建模,詳細設(shè)計,編寫代碼,軟件測試,軟件維護。</p><p>  J2EE是一種利用Java 2平臺來簡化企業(yè)解決方案的開發(fā)、部署和管理相關(guān)的復雜問題的體系結(jié)構(gòu)。J2EE技術(shù)的基礎(chǔ)就是核心Java平臺或Java 2平臺的標

34、準版,J2EE不僅鞏固了標準版中的許多優(yōu)點,例如"編寫一次、隨處運行"的特性、方便存取數(shù)據(jù)庫的JDBC API、CORBA技術(shù)以及能夠在Internet應用中保護數(shù)據(jù)的安全模式等等,同時還提供了對 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術(shù)的全面支持。其最終目的就是成為一個能夠使企業(yè)開發(fā)者大幅縮短投放市場時間的體系

35、結(jié)構(gòu)。</p><p>  利用J2EE框架和MVC模式來開發(fā)一個web應用項目。</p><p>  最后,就全文的成果加以總結(jié)。</p><p>  1.5 主要章節(jié)安排</p><p>  首先就課題研究的背景和意義做出說明。第一章總體的介紹了下設(shè)計的內(nèi)容。第二章簡要介紹了J2EE的基礎(chǔ)知識。第三章介紹了系統(tǒng)需求分析及總體設(shè)計,包括需求

36、分析,系統(tǒng)功能模塊設(shè)計,對具體功能及用例說明。第四章是數(shù)據(jù)庫設(shè)計,包括數(shù)據(jù)庫結(jié)構(gòu)設(shè)計,Hibernate訪問數(shù)據(jù)庫。第五章給出了系統(tǒng)詳細設(shè)計,包括前臺和后臺兩個大的部分,前臺部分由用戶使用,主要包括用戶注冊,購物車管理,訂單管理,個人資料管理等功能;后臺部分由管理員使用,主要包括會員信息管理,主要包括商品管理,用戶信息管理,處理訂單等功能。最后給出結(jié)論并對課題未來的發(fā)展做出了展望。</p><p><b&g

37、t;  第二章J2EE簡介</b></p><p>  2.1 J2EE基本概念</p><p>  2.1.1 J2EE概念</p><p>  J2EE(Java 2 Enterprise Edition)是建立在Java 2平臺上的企業(yè)級應用的解決方案。J2EE技術(shù)的基礎(chǔ)便是Java 2平臺,不但有J2SE平臺的所有功能,同時還提供了對EJB,Se

38、rvlet,JSP,XML等技術(shù)的全面支持,其最終目標是成為一個支持企業(yè)級應用開發(fā)的體系結(jié)構(gòu),簡化企業(yè)解決方案的開發(fā),部署和管理等復雜問題。事實上,J2EE已經(jīng)成為企業(yè)級開發(fā)的工業(yè)標準和首選平臺。</p><p>  J2EE并非一個產(chǎn)品,而是一系列的標準。市場上可以看到很多實現(xiàn)了J2EE的產(chǎn)品,如BEA WebLogic,IBM WebSphere以及開源的JBoss等等。</p><p&g

39、t;  J2EE,是sun公司提出的一個標準,符合這個標準的產(chǎn)品叫"實現(xiàn)";其中你下載的sun公司的j2ee開發(fā)包中就有一個這樣的"實現(xiàn)",而 jboss,weblogic,websphere都是j2ee標準的一個"實現(xiàn)"。由于jboss,weblogic,websphere自身帶有 j2ee的api,所以可以不使用sun的j2ee實現(xiàn)。</p><p>

40、;  目前,Java 2平臺有3個版本,它們是適用于小型設(shè)備和智能卡的Java 2平臺Micro版(Java 2 Platform Micro Edition,J2ME)、適用于桌面系統(tǒng)的Java 2平臺標準版(Java 2 Platform Standard Edition,J2SE)、適用于創(chuàng)建服務(wù)器應用程序和服務(wù)的Java2平臺企業(yè)版(Java 2 Platform Enterprise Edition,J2EE)。</p&

41、gt;<p>  J2EE是一種利用Java 2平臺來簡化企業(yè)解決方案的開發(fā)、部署和管理相關(guān)的復雜問題的體系結(jié)構(gòu)。J2EE技術(shù)的基礎(chǔ)就是核心Java平臺或Java 2平臺的標準版,J2EE不僅鞏固了標準版中的許多優(yōu)點,例如"編寫一次、隨處運行"的特性、方便存取數(shù)據(jù)庫的JDBC API、CORBA技術(shù)以及能夠在Internet應用中保護數(shù)據(jù)的安全模式等等,同時還提供了對 EJB(Enterprise Ja

42、vaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術(shù)的全面支持。其最終目的就是成為一個能夠使企業(yè)開發(fā)者大幅縮短投放市場時間的體系結(jié)構(gòu)。 </p><p>  J2EE體系結(jié)構(gòu)提供中間層集成框架用來滿足無需太多費用而又需要高可用性、高可靠性以及可擴展性的應用的需求。通過提供統(tǒng)一的開發(fā)平臺,J2EE降低了開發(fā)多層應用的費用和復雜性,同時提供對現(xiàn)有應用程序集成

43、強有力支持,完全支持Enterprise JavaBeans,有良好的向?qū)еС执虬筒渴饝?,添加目錄支持,增強了安全機制,提高了性能。</p><p>  2.1.2 J2EE的優(yōu)勢</p><p>  2.1.2.1 J2EE的優(yōu)勢</p><p>  J2EE為搭建具有可伸縮性、靈活性、易維護性的商務(wù)系統(tǒng)提供了良好的機制: </p><p&

44、gt;  高效的開發(fā): J2EE允許公司把一些通用的、很繁瑣的服務(wù)端任務(wù)交給中間件供應商去完成。這樣開發(fā)人員可以集中精力在如何創(chuàng)建商業(yè)邏輯上,相應地縮短了開發(fā)時間。高級中間件供應商提供以下這些復雜的中間件服務(wù):</p><p>  穩(wěn)定的可用性: 一個服務(wù)器端平臺必須能全天候運轉(zhuǎn)以滿足公司客戶、合作伙伴的需要。因為INTERNET是全球化的、無處不在的,即使在夜間按計劃停機也可能造成嚴重損 失。若是意外停機,那會

45、有災難性后果。J2EE部署到可靠的操作環(huán)境中,他們支持長期的可用性。一些J2EE部署在WINDOWS環(huán)境中,客戶也可選擇健 壯性能更好的操作系統(tǒng)如Sun Solaris、IBM OS/390。最健壯的操作系統(tǒng)可達到99.999%的可用性或每年只需5分鐘停機時間。這是實時性很強商業(yè)系統(tǒng)理想的選擇。</p><p>  2.1.2.2 J2EE三層模型(MVC)</p><p>  MVC英文

46、即Model-View-Controller,即把一個應用的輸入、處理、輸出流程按照Model、View、Controller的方式進行分離,這樣一個應用被分成三個層——模型層、視圖層、控制層。 </p><p>  視圖(View)代表用戶交互界面,對于Web應用來說,可以概括為HTML界面,但有可能為XHTML、XML和Applet。 隨著應用的復雜性和規(guī)模性,界面的處理也變得具有挑戰(zhàn)性。一個應用可能有很多不

47、同的視圖,MVC設(shè)計模式對于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以 及用戶的請求,而不包括在視圖上的業(yè)務(wù)流程的處理。業(yè)務(wù)流程的處理交予模型(Model)處理。比如一個訂單的視圖只接受來自模型的數(shù)據(jù)并顯示給用戶,以 及將用戶界面的輸入數(shù)據(jù)和請求傳遞給控制和模型。 </p><p>  模型(Model):就是業(yè)務(wù)流程/狀態(tài)的處理以及業(yè)務(wù)規(guī)則的制定。業(yè)務(wù)流程的處理過程對其它層來說是黑箱操作,模型接受視圖請求的數(shù)據(jù)

48、,并返回最終的處理結(jié)果。業(yè)務(wù)模型的設(shè)計可以說是MVC最主要的核心。目前流行的EJB模型就是一個典型的應用例子,它從應用技術(shù)實現(xiàn)的角度對模型做了進一步的劃分,以便充分利用現(xiàn)有的組件,但它不能作為應用設(shè)計模型的 框架。它僅僅告訴你按這種模型設(shè)計就可以利用某些技術(shù)組件,從而減少了技術(shù)上的困難。對一個開發(fā)者來說,就可以專注于業(yè)務(wù)模型的設(shè)計。MVC設(shè)計模式告訴 我們,把應用的模型按一定的規(guī)則抽取出來,抽取的層次很重要,這也是判斷開發(fā)人員是否優(yōu)秀的

49、設(shè)計依據(jù)。抽象與具體不能隔得太遠,也不能太近。MVC并沒有 提供模型的設(shè)計方法,而只告訴你應該組織管理這些模型,以便于模型的重構(gòu)和提高重用性。我們可以用對象編程來做比喻,MVC定義了一個頂級類,告訴它的子類你只能做這些,但沒法限制你能做這些。這點對編程的開發(fā)人員非常重要。 </p><p>  業(yè)務(wù)模型還有一個很重要的模型那就是數(shù)據(jù)模型。數(shù)據(jù)模型主要指實體對象的數(shù)據(jù) 保存(持續(xù)化)。比如將一張訂單保存到數(shù)據(jù)庫,從

50、數(shù)據(jù)庫獲取訂單。我們可以將這個模型單獨列出,所有有關(guān)數(shù)據(jù)庫的操作只限制在該模型中。 </p><p>  控制(Controller)可以理解為從用戶接收請求, 將模型與視圖匹配在一起,共同完成用戶的請求。劃分控制層的作用也很明顯,它清楚地告訴你,它就是一個分發(fā)器,選擇什么樣的模型,選擇什么樣的視圖,可以 完成什么樣的用戶請求??刂茖硬⒉蛔鋈魏蔚臄?shù)據(jù)處理。例如,用戶點擊一個連接,控制層接受請求后, 并不處理業(yè)務(wù)信

51、息,它只把用戶的信息傳遞給模型,告訴模型做什么,選擇符合要求的視圖返回給用戶。因此,一個模型可能對應多個視圖,一個視圖可能對應多個模型。 </p><p>  模型、視圖與控制器的分離,使得一個模型可以具有多個顯示視圖。如果用戶通過某個視圖的控制器改變了模型的數(shù)據(jù),所有其它依賴于這些數(shù)據(jù)的視圖都應 反映到這些變化。因此,無論何時發(fā)生了何種數(shù)據(jù)變化,控制器都會將變化通知所有的視圖,導致顯示的更新。這實際上是一種模型

52、的變化-傳播機制。模型、視 圖、控制器三者之間的關(guān)系和各自的主要功能,如圖2-1所示。</p><p>  圖2-1 MVC框架圖</p><p>  2.1.2.3 J2EE企業(yè)級應用示例</p><p>  下面我們通過假設(shè)一個企業(yè)應用的J2EE實現(xiàn),來了解各種組件和服務(wù)的應用。假設(shè)應用對象是計算機產(chǎn)品的生產(chǎn)商/零售商的銷售系統(tǒng),這個銷售系統(tǒng)能夠通過自己的網(wǎng)站發(fā)

53、布產(chǎn)品信息,同時也能將產(chǎn)品目錄傳送給計算機產(chǎn)品交易市場。銷售系統(tǒng)能夠在線接受訂單,并隨后轉(zhuǎn)入內(nèi)部企業(yè)管理系統(tǒng)進行相關(guān)的后續(xù)處理。</p><p>  參見圖2-2,這個企業(yè)應用可以這種方式架構(gòu)。該企業(yè)應用的核心是產(chǎn)品目錄管理和產(chǎn)品定購管理這兩個業(yè)務(wù)邏輯,使用EJB加以實現(xiàn),并部署在EJB容器中。由于產(chǎn)品目錄和定購信息都需要持久化,因此使用JDBC連接數(shù)據(jù)庫。 </p><p>  圖2-2

54、 J2EE應用示例</p><p>  2.2 J2EE關(guān)鍵技術(shù)</p><p>  2.2.1 JSP的技術(shù)原理</p><p>  2.2.1.1 JSP語言及其特點</p><p>  在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標記(tag),就構(gòu)成了JSP網(wǎng)頁(*.jsp)

55、。JSP頁面看上去象標準的HTML和XML頁面,并附帶有JSP引擎能夠處理和抽取的額外元件。</p><p>  Web服務(wù)器在遇到訪問JSP網(wǎng)頁的請求時,首先執(zhí)行其中的程序片段,然后將執(zhí)行結(jié)果以HTML格式返回給用戶。</p><p>  程序片段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁以及發(fā)送E-mail等,這就是建立動態(tài)網(wǎng)站所需要的功能。</p><p>  所有程序都在

56、服務(wù)器端執(zhí)行,網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果,對客戶瀏覽器的要求最低。它基于強大的Java語言,具有良好的伸縮性,在網(wǎng)絡(luò)數(shù)據(jù)庫應用開發(fā)領(lǐng)域具有得天獨厚的優(yōu)勢。</p><p>  2.2.1.2 JSP技術(shù)對動態(tài)Web頁面的開發(fā)的影響</p><p> ?。?)將內(nèi)容的生成和顯示進行分離</p><p>  使用JSP技術(shù),Web頁面開發(fā)人員可以使用HTML或者

57、XML標識來動態(tài)的設(shè)計和格式化最終頁面。使用JSP標識或者小腳本來生成頁面上的動態(tài)內(nèi)容(內(nèi)容是根據(jù)請求來變化的,會根據(jù)不同的請求作相應的處理得到不同的內(nèi)同,例如請求用戶信息或者特定的商品的價格)。生成內(nèi)容的邏輯被封裝在標識和JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運行。如果核心邏輯被封裝在標識和Beans中,那么其他人,如Web管理人員和頁面設(shè)計者,能夠編輯和使用JSP頁面,而不影響內(nèi)容的生成。</p&g

58、t;<p>  在服務(wù)器端,JSP引擎解釋JSP標識和小腳本,生成所請求的內(nèi)容(例如,通過訪問JavaBeans組件,使用JDBC技術(shù)訪問數(shù)據(jù)庫,或者包含文件),并且將結(jié)果以HTML(或者XML)頁面的形式發(fā)送回瀏覽器。這有助于作者保護自己的代碼,而又保證任何基于HTML的Web瀏覽器的完全可用性。</p><p> ?。?)強調(diào)可重用的組件</p><p>  絕大多數(shù)JS

59、P頁面依賴于可重用的,跨平臺的組件(JavaBeans)來執(zhí)行應用程序所要求的更為復雜的處理。開發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,或者使得這些組件為更多的使用者或者客戶團體所使用?;诮M件的方法加速了總體開發(fā)過程,并且使得各種組織在他們現(xiàn)有的技能和優(yōu)化結(jié)果的開發(fā)努力中得到平衡。</p><p>  (3)采用標識簡化頁面開發(fā)</p><p>  Web頁面開發(fā)人員不會都是熟悉腳本語言

60、的編程人員。JavaServer Page技術(shù)封裝了許多功能,這些功能是在易用的、與JSP相關(guān)的XML標識中進行動態(tài)內(nèi)容生成所需要的。標準的JSP標識能夠訪問和實例化JavaBeans組件,設(shè)置或者檢索組件屬性,下載Applet,以及執(zhí)行用其他方法更難于編碼和耗時的功能。</p><p>  通過開發(fā)定制化標識庫,JSP技術(shù)是可以擴展的。今后,第三方開發(fā)人員和其他人員可以為常用功能創(chuàng)建自己的標識庫。這使得Web頁

61、面開發(fā)人員能夠使用熟悉的工具和如同標識一樣的執(zhí)行特定功能的構(gòu)件來工作。</p><p> ?。?)JSP能提供所有Servlets功能</p><p>  與Servlets相比,JSP能提供所有Servlets功能,它比用Println書寫和修改HTML更方便。可以更明確地進行分工,Web頁面設(shè)計人員編寫HTML,只需留出空間讓Servlets程序員插入動態(tài)部分即可。JSP技術(shù)能夠支持高

62、度復雜的基于Web的應用。</p><p> ?。?)健壯的存儲管理和安全性</p><p>  由于JSP頁面的內(nèi)置腳本語言是基于Java編程語言的,而且所有的JSP頁面都被編譯成為Java Servlet,JSP頁面就具有Java技術(shù)的所有好處,包括健壯的存儲管理和安全性。</p><p> ?。?)一次編寫,各處運行</p><p> 

63、 作為Java平臺的一部分,JSP擁有Java編程語言“一次編寫,各處運行”的特點。隨著越來越多的供應商將JSP支持添加到他們的產(chǎn)品中,您可以使用自己所選擇的服務(wù)器和工具,更改工具或服務(wù)器并不影響當前的應用。</p><p>  2.2.2 Struts框架</p><p>  2.2.2.1 Servlet控制器組件技術(shù)</p><p>  Servlet在一個典

64、型的Web應用中擔任的重要角色就是Servlet非常適合做Web頁面之間的消息轉(zhuǎn)發(fā)器.因為Servlet是一個被Web容器動態(tài)加載的組件模塊,它并不十分適合做用戶的界面表示,而當Web用戶發(fā)出請求的時候Servlet組件可以通過Servlet容器來捕獲這個請求消息,這樣它可以調(diào)用模型組件來出來這個消息。</p><p>  當客戶程序(如: 瀏覽器)首先向Servlet容器發(fā)出Web請求,服務(wù)器接受到請求以后會調(diào)

65、用相應的Servlet組件來執(zhí)行相應的程序來完成這個請求,然后Servlet組件吧處理結(jié)果交給Servlet容器,再由Servlet容器把請求回復給客戶程序.這也是一個典型的web應用的執(zhí)行過程.Java的Servlet技術(shù)提供了一組用戶的編程接口為開發(fā)人員定義了相關(guān)的類。</p><p>  Servlet API中以下幾個比較重點的類決定了Servlet的處理流程:</p><p> 

66、 HttpServlet :該類提供了用戶擴展的能力,用戶通過繼承該類編寫Servlet組件.主要填寫Http方法(如: doPost doGet)完成服務(wù)。</p><p>  HttpServletRequest: 該類提供了接受用戶請求數(shù)據(jù)的能力,該類通常是由Web容器在一次客戶請求服務(wù)中創(chuàng)建的.Servlet可以通過該對象訪問到請求時用戶的請求數(shù)據(jù)。</p><p>  HttpS

67、ervletResponse: 該類用于生成執(zhí)行后的相應結(jié)果.該類也是由Web容器在服務(wù)中創(chuàng)建的。</p><p>  HttpSession: 該了同類處理客戶的會話跟蹤。</p><p>  ServletContext: Servlet容器為每個Web 應用模塊都提供了一個環(huán)境來保持該應用模塊的狀態(tài).這組狀態(tài)是該模塊中所有Web組件可以訪問到的共享信息。</p><

68、;p>  2.2.2.2 Struts框架結(jié)合MVC框架</p><p>  隨著軟件開發(fā)日漸成熟,軟件工程師們也變得逐漸成熟起來,我們開始首先設(shè)計軟件框架結(jié)構(gòu),這樣在開發(fā)階段我們才會井然有序的進行.而對于現(xiàn)代軟件開發(fā)對軟件的開發(fā)周期要求越來越迅速,所以如果要自己開發(fā)一套框架已經(jīng)不太現(xiàn)實了.所以我們必須要選擇已經(jīng)成熟的軟件框架了.</p><p>  而Struts對于Java的We

69、b開發(fā)而言就是一個不錯的選擇.Struts框架實質(zhì)就是JSP Model2模型的實現(xiàn).</p><p><b>  1.視圖</b></p><p>  視圖是通過一組JSP程序?qū)崿F(xiàn)的.這些JSP程序中不能包含業(yè)務(wù)邏輯,也不能包括模型的信息.模型的信息是通過控制器傳遞的.在Struts中ActionForm 也被看成是視圖的一部分.它其他更新視圖,以及視圖查詢模型狀態(tài)

70、的橋梁.</p><p><b>  2.模型</b></p><p>  模型是程序的狀態(tài)表示,其狀態(tài)包括,消息中傳遞的狀態(tài),以及共享狀態(tài)或一次回話中的狀態(tài),以及持久狀態(tài).而操作這些狀態(tài)的流程也同樣包括在模型中.這些模型也就是業(yè)務(wù)的總體運作流程和數(shù)據(jù).</p><p><b>  3.控制器</b></p>

71、<p>  控制器部分由ActionServlet和Action來實現(xiàn).ActionServlet也就是Struts框架用來和Web容器交互的接口.該類是Struts框架的核心組件.ActionServlet繼承了HttpServlet類.它在MVC模型中扮演中央控制器的角色.當Web容器一接收到客戶請求就會交割ActionServlet該類更加struts-config.xml文件的配置信息選擇合適Action來處理請求.

72、并傳遞請求過程中的數(shù)據(jù),這些數(shù)據(jù)是通過ActionForm傳遞的.Action本身也并不包含業(yè)務(wù)邏輯的處理代碼.它只是負責調(diào)用業(yè)務(wù)的處理代碼的.</p><p>  調(diào)用這些代碼的方法在execute()方法中.該方法在調(diào)用業(yè)務(wù)處理以后會放回一個ActionForward對象來選擇對應的視圖.一般而言我們的Action必須直接或間接的繼承該類.然后重寫excecute()方法以完成我們自己的處理消息.</p

73、><p>  4.Struts的配置文件 struts-config.xml</p><p>  該文件實質(zhì)是一個控制器和視圖的黏合劑,控制器之所以能夠選擇對應的視圖,以及視圖能夠通過對應的控制器查詢到模型中的數(shù)據(jù)都是依賴該文件.該文件是一個XML文件.在該配置文件中每Action都對應一個<Action>標簽用來映射Action類的信息.</p><p>

74、  2.2.2.3 Struts流程</p><p>  1. web容器啟動,根據(jù)web.xml內(nèi)容中的 標簽<servlet></servlet> new一個struts的WebServlet對象action. 從此action對象開始一直存在,直到web服務(wù)器停止. </p><p>  action實例配置根據(jù)<servlet><

75、/servlet></p><p>  2. 當客戶端瀏覽器有*.do的請求時,web容器就會根據(jù)<servlet-mapping>轉(zhuǎn)給struts的WebServlet對象action處理.從此程序進入struts處理流程</p><p>  3.struts的接收到*.do的請求后,根據(jù)配置文件struts-config.xml的映射關(guān)系,<action-map

76、pings>的對應關(guān)系轉(zhuǎn)到相應的action控制器類處理.并且把相應的表單對象actionForm 傳進去</p><p>  4.action控制器類根據(jù)需要調(diào)用相應的bo類來處理業(yè)務(wù)邏輯.</p><p>  5. bo類根據(jù)需要調(diào)用相應的dao類來實現(xiàn)與底層數(shù)據(jù)庫連接</p><p>  6. dao返回結(jié)果給bo,bo返回給action 調(diào)用Actio

77、nMapping 對象轉(zhuǎn)到相應的頁面.</p><p>  圖2-2 Struts基本流程狀態(tài)圖</p><p>  ActionServlet是Struts的核心控制器,通過這個核心的控制器來調(diào)用其他用戶注冊了的自定義的控制器Action,自定義Action需要符合Struts的自定義Action規(guī)范,還需要在struts-config.xml的特定配置文件中進行配置,接收JSP輸入字段

78、形成Action form,然后調(diào)用一個Action控制器。</p><p>  ActionForm是可以自動將表單中的數(shù)據(jù)封裝成對象,當然,一個自定義ActionForm也是要遵守Struts規(guī)范的,也就是要繼承于ActionForm,其中包含有validate方法,并對struts-config.xml配置文件進行配置。根據(jù)提交過來的url,如*.do,從ActionMapping 中得到相應的Action

79、Form和Action。然后將request的參數(shù)對應到ActionForm中,進行form驗證。如果驗證通過則調(diào)用Action的execute()方法來執(zhí)行Action,最終返回ActionFoward。</p><p>  ActionFoward是對mapping中一個foward的包裝,對應于一個url 。</p><p>  ActionErrors是對錯誤信息的包裝,一旦在執(zhí)行

80、action或者form.validate中出現(xiàn)異常,即可產(chǎn)生一個ActionError并最終加入到ActionErrors。在Form驗證的過程中,如果有Error發(fā)生,則會將頁面重新導向至輸入頁,并提示錯誤。</p><p>  ServletController(ActionServlet和自定義的Action),配置Ctrler需要配置struts-config.xml,通過客戶端form的action來

81、查找調(diào)用相應的action,自定義action中的mapping對應的是配置文件中的forward標簽,通過forward的path屬性來跳轉(zhuǎn)到相應的路徑。</p><p>  Struts提供了多種Action供選擇使用。普通的Action只能通過調(diào)用execute執(zhí)行一項任務(wù),而DispatchAction可以根據(jù)配置參數(shù)執(zhí)行,而不是僅進入execute()函數(shù),這樣可以執(zhí)行多種任務(wù)。如insert,upda

82、te等。LookupDispatchAction可以根據(jù)提交表單按鈕的名稱來執(zhí)行函數(shù)。</p><p>  第三章 系統(tǒng)需求分析及總體設(shè)計</p><p><b>  3.1需求分析</b></p><p>  現(xiàn)在Internet上隨處可見網(wǎng)上商城、網(wǎng)上書店等電子商務(wù)網(wǎng)站,讓消費者(在本章中有時也稱為客戶)足不出戶就可購買到想到的商品,不僅方

83、便了消費者,也讓擁有電子商務(wù)網(wǎng)站的企業(yè)能及時向廣大客戶推銷產(chǎn)品、構(gòu)建企業(yè)形象、贏得利潤。電子商務(wù)系統(tǒng)與傳統(tǒng)的面對面的營銷方式相比,具有不可比擬的優(yōu)勢,如銷售成本與物流大大降低、信息傳輸及時等。</p><p><b>  3.1.1系統(tǒng)用戶</b></p><p>  使用網(wǎng)上書店系統(tǒng)的用戶主要有兩種:一種是消費者,可以瀏覽網(wǎng)上書店中的商品信息、進行網(wǎng)上購書;另一種是

84、網(wǎng)站的管理者,可以對網(wǎng)上書店中的商品信息進行管理、處理客戶的訂單。</p><p>  3.1.2 網(wǎng)站功能</p><p>  此基于JSP的購物網(wǎng)站分前臺功能和后臺功能: </p><p>  前臺部分由用戶使用,主要包括用戶注冊,購物車管理,訂單管理,個人資料管理。 </p><p>  后臺部分由管理員使用,主要包括管理員身份驗證,商

85、品管理,處理訂單,用戶信息管理,連接信息管理。</p><p>  3.2系統(tǒng)功能模塊設(shè)計</p><p>  3.2.1系統(tǒng)功能分析</p><p>  鑒于網(wǎng)上商店系統(tǒng)的兩種用戶角色的說明,可將系統(tǒng)分為前臺和后臺,這種分法也是當前網(wǎng)站系統(tǒng)慣用的做法,前臺供給客戶使用,用于展現(xiàn)信息和完成與客戶的交互性處理;后臺供給網(wǎng)站的管理者使用,用于管理網(wǎng)站的內(nèi)容。有的系統(tǒng)為保

86、障安全,將后臺處理部分獨立出來,采用C/S方式,用專門的編程語言(如Visual Basic、Visual C++)來實現(xiàn),因為這種方式需要網(wǎng)站的管理者安裝客戶端程序;本章中實現(xiàn)的網(wǎng)上書店其后臺用B/S方式。</p><p>  網(wǎng)上書店前臺實現(xiàn)的功能有:</p><p> ?。?)用戶管理。實現(xiàn)用戶資料的自助修改,維護個人信息。</p><p> ?。?)購物車管

87、理。提供購物車商品條目的數(shù)量修改,增加、刪除等操作。</p><p> ?。?)用戶登錄。供已注冊的用戶登錄,登錄后才能在網(wǎng)上購物。</p><p> ?。?)網(wǎng)上購物。已登錄的用戶可以將需要購買的物品放入購物車,可將已放入購物車中的物品生成一張訂單并作確認,可將“未作確認”和缺貨的訂單取消。</p><p>  網(wǎng)上書店后臺管理實現(xiàn)的功能有:</p>

88、<p>  (1)用戶信息管理。提供對用戶資料的查詢、刪除操作。</p><p> ?。?)商品管理管理。供網(wǎng)站管理員增加、修改、刪除網(wǎng)上書店中書藉的基本資料信息,主要是文本信息。</p><p> ?。?)訂單管理。供網(wǎng)站管理員管理客戶提交的訂單,客戶“已確認”的訂單可修改狀態(tài)為“已發(fā)貨”。</p><p>  下圖為系統(tǒng)的功能結(jié)構(gòu)圖</p>

89、;<p>  圖3-1 系統(tǒng)的功能結(jié)構(gòu)圖</p><p>  3.2.2用戶訪問系統(tǒng)的流程</p><p>  當用戶在瀏覽器直接輸入相應的工程名時,通過解析web.xml配置文件(里面設(shè)置了初始的頁面),會跳傳到相應的JSP頁面,根據(jù)JSP中的.do的定向,再次解析web.xml配置文件(里面設(shè)置了ActionServlet控制器,然后解析struts-config.xml

90、配置文件,進入相應的自定義的Action類,調(diào)用相應的JavaBean類的方法通過Hibernate實現(xiàn)對數(shù)據(jù)庫的入庫和出庫操作.</p><p>  圖3-2用戶訪問系統(tǒng)的流程圖</p><p>  第四章 數(shù)據(jù)庫設(shè)計與實現(xiàn)</p><p>  4.1 數(shù)據(jù)庫需求分析</p><p>  數(shù)據(jù)庫的設(shè)計通常是以一個已經(jīng)存在的數(shù)據(jù)庫管理系統(tǒng)為

91、基礎(chǔ)的,常用的數(shù)據(jù)庫管理系統(tǒng)有MYSQL,SQL Server, Oracle等。我采用了MYSQL數(shù)據(jù)庫管理系統(tǒng),建立的數(shù)據(jù)庫名為njit。</p><p>  整個系統(tǒng)功能需要以下數(shù)據(jù)項:</p><p>  用戶:用戶id、用戶名稱、登錄密碼、聯(lián)系地址、郵編、郵箱地址、住宅電話、聯(lián)系電話、單位電話。</p><p>  商品:商品id、名稱、價格、商品描述。&

92、lt;/p><p>  訂單:訂單id、訂單狀態(tài)、訂單用戶id。</p><p>  訂單條目:條目id、商品數(shù)量、條目價格、訂單id、商品id。</p><p>  4.2 數(shù)據(jù)庫結(jié)構(gòu)設(shè)計</p><p>  4.2.1 用戶信息表(cart_user)</p><p>  主要用于保存用戶(包括管理員)信息,該表的結(jié)構(gòu)

93、如表4-1所示。</p><p>  表4-1 用戶信息表(cart_user)</p><p>  4.2.2 商品信息表(cart_product)</p><p>  主要用于保存商品信息,該表的結(jié)構(gòu)如表4-2所示。</p><p>  表4-2 商品信息表(cart_product)</p><p>  4.2

94、.3 訂單表(cart_order)</p><p>  主要用于保存訂單信息,該表的結(jié)構(gòu)如表4-3所示。</p><p>  表4-3 訂單表(cart_order)</p><p>  4.2.4 訂單條目表(cart_order_item) </p><p>  主要用于保存訂單條目信息,該表的結(jié)構(gòu)如表4-4示。</p>

95、<p>  表4-4 訂單條目表(cart_order_item)</p><p>  4.3 Hibernate訪問數(shù)據(jù)庫</p><p>  4.3.1 Hibernate簡介</p><p>  在今日的企業(yè)環(huán)境中,把面向?qū)ο蟮能浖完P(guān)系數(shù)據(jù)庫一起使用可能是相當麻煩浪費時間的。Hibernate是一個面向Java環(huán)境的對象/關(guān)系數(shù)據(jù)庫映射工具。對象/

96、關(guān)系數(shù)據(jù)庫映射(ORM)這個術(shù)語表示一種技術(shù),用來把對象模型表示的對象映射到基于SQL的關(guān)系模型數(shù)據(jù)結(jié)構(gòu)中去。</p><p>  Hibernate不僅僅管理Java類到數(shù)據(jù)庫表的映射(包括Java數(shù)據(jù)類型到SQL數(shù)據(jù)類型的映射),還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法,可以大幅度減少開發(fā)時人工使用SQL和JDBC處理數(shù)據(jù)的時間。</p><p>  Hibernate的目標是對于開發(fā)者通常的數(shù)

97、據(jù)持久化相關(guān)的編程任務(wù),解放其中的95%。對于以數(shù)據(jù)為中心的程序來說,它們往往只在數(shù)據(jù)庫中使用存儲過程來實現(xiàn)商業(yè)邏輯,Hibernate可能不是最好的解決方案;對于那些在基于Java的中間層應用中,它們實現(xiàn)面向?qū)ο蟮臉I(yè)務(wù)模型和商業(yè)邏輯的應用,Hibernate是最有用的。不管怎樣,Hibernate一定可以幫助你消除或者包裝那些針對特定廠商的SQL代碼,并且?guī)湍惆呀Y(jié)果集從表格式的表示形式轉(zhuǎn)換到一系列的對象去。</p>&l

98、t;p>  Hibernate 是一個可以自動的根據(jù)xml完成對象關(guān)系映射,并持久化到數(shù)據(jù)庫的開源組件。其底層也是由JDBC實現(xiàn)的。hibernate是通過xml文件的配置,對數(shù)據(jù)庫的底層的方言,以及數(shù)據(jù)庫連接所需的信息,以及連接數(shù)據(jù)庫的驅(qū)動。</p><p>  4.3.2 Hibernate的工作方式</p><p>  Hibernate比傳統(tǒng)的數(shù)據(jù)庫訪問方式(最典型的JDBC

99、)更能體現(xiàn)面向?qū)ο蟮乃枷?,它對JDBC實現(xiàn)了某種意義上的封裝,以對象的方式來訪問數(shù)據(jù)庫,進行增、刪、查、改的操作,而底層則完全由JDBC來實現(xiàn)。Hibernate將數(shù)據(jù)庫中的表與現(xiàn)實中抽象出來的實體類進行實體關(guān)系映射,這些實體類也就是通常所說的POJO類,它們就是普通的JavaBean,它們不需要實現(xiàn)任何接口以便能夠持續(xù)存在,數(shù)據(jù)庫表中的每一條記錄對應在Hibernate中就是實體類的一個實例。惟一需要做的就是創(chuàng)建一份 XML“映射文檔

100、”,告訴Hibernate將要保存到數(shù)據(jù)庫中的類,以及它們?nèi)绾侮P(guān)聯(lián)到該數(shù)據(jù)庫中的表和列,然后就可以以對象的形式獲取數(shù)據(jù)、更改數(shù)據(jù),或者把對象保存為數(shù)據(jù)。 </p><p>  運行時,Hibernate讀取映射文檔,然后動態(tài)構(gòu)建Java類,以便管理數(shù)據(jù)庫與Java之間的轉(zhuǎn)換。在Hibernate中有一個簡單而直觀的API,用于對數(shù)據(jù)庫所表示的對象執(zhí)行查詢。要修改這些對象,(一般情況下)只需在程序中與它們進行交互,

101、然后告訴Hibernate保存修改即可。類似地,創(chuàng)建新對象也很簡單;只需以常規(guī)方式創(chuàng)建它們,然后告訴Hibernate有關(guān)它們的信息,這樣就能在數(shù)據(jù)庫中保存它們。</p><p>  4.3.3 用Hibernate訪問數(shù)據(jù)庫</p><p>  使用Hibernate訪問數(shù)據(jù)庫首先要配置一個名為hibernate.cfg.xml的配置文件,該配置文件設(shè)置了連接數(shù)據(jù)庫的基本信息以及映射的實

102、體的信息,其內(nèi)容如下:</p><p>  <?xml version="1.0"?></p><p>  <!DOCTYPE hibernate-configuration PUBLIC</p><p>  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

103、</p><p>  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"></p><p>  <hibernate-configuration></p><p>  <session-factory></p><p

104、>  <property name="show_sql">true</property></p><p>  <property name="dialect">org.hibernate.dialect.MySQLDialect</property></p><p>  <property

105、name="connection.driver_class">com.mysql.jdbc.Driver</property></p><p>  <property name="connection.username">root</property></p><p>  <property name=

106、"connection.password">zjl523</property></p><p>  <property name="connection.url">jdbc:mysql://localhost:3306/njit</property></p><p>  <property name=&

107、quot;hibernate.hbm2ddl.auto">none</property></p><p>  <!--mapping configuration--></p><p>  <property name="myeclipse.connection.profile">mysql_connector</

108、property></p><p>  <mapping resource="com/tarena/shop/entity/User.hbm.xml" /></p><p>  <mapping resource="com/tarena/shop/entity/Product.hbm.xml" /></p>

109、<p>  <mapping resource="com/tarena/shop/entity/Item.hbm.xml" /></p><p>  <mapping resource="com/tarena/shop/entity/Order.hbm.xml" /></p><p>  </session-

110、factory></p><p>  </hibernate-configuration></p><p>  然后是所對應的實體的映射配置文件User.hbm.xml、Product.hbm.xml、Order.hbm.xml、Item.hbm.xml,并配置實體間的映射關(guān)系,實體的映射關(guān)系圖如圖4-1:</p><p>  圖4-1 實體間映射

溫馨提示

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

評論

0/150

提交評論