




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第3章 開始J2EE開發(fā)之旅3.1 網(wǎng)上書店概述3.2 數(shù)據(jù)庫設(shè)計3.3 系統(tǒng)結(jié)構(gòu) 3.4 搭建系統(tǒng)框架 3.1 網(wǎng)上書店概述任何軟件開發(fā)的第一步就是明確系統(tǒng)需求,即要知道系統(tǒng)要實現(xiàn)什么功能,具體的要求是什么,如果這些都沒有弄明白,開發(fā)出來的系統(tǒng)肯定是不合格的。大部分讀者都有過網(wǎng)上購物的經(jīng)歷,在購物網(wǎng)站可以很方便的注冊、瀏覽商品,查詢商品購買時只需點幾下鼠標(biāo)。本書的網(wǎng)上書店實現(xiàn)了上述的基本功能,用戶可以在網(wǎng)上書店進行注冊,瀏覽商品以及查詢購物車。主要的界面如圖3-1所示。圖3-1 網(wǎng)上書店首頁3.1 網(wǎng)上書店概述用戶可以瀏覽圖書分類和推薦的圖書;用戶可以根據(jù)分類,瀏覽某一類的圖書列表;用戶可以
2、查看具體一本圖書的介紹;用戶在圖書瀏覽頁面,點擊添加,把選定圖書添加到購物車中;用戶可以點擊購物車,查看購物車信息;用戶可以點擊結(jié)帳按鈕下訂單,但是需要登錄后才能進行;用戶在注冊頁面,填寫注冊信息,確認(rèn)有效注冊稱為新用戶;用戶在登錄頁面,填寫用戶名和密碼,確認(rèn)正確以后可以結(jié)帳。功能模塊劃分如圖3-2所示。網(wǎng)上書店登錄注銷注冊瀏覽目錄瀏覽圖書購物查看購物車結(jié)帳圖3-2 功能模塊劃分3.2 數(shù)據(jù)庫設(shè)計3.2.1 設(shè)計概念數(shù)據(jù)模型1. 設(shè)計概念數(shù)據(jù)模型網(wǎng)上商店中有以下幾個實體:用戶、圖書分類、圖書、訂單、訂單項目,因此,系統(tǒng)可以設(shè)計如下的數(shù)據(jù)概念模型:圖3-3 數(shù)據(jù)概念模型3.2.1 設(shè)計概念數(shù)據(jù)模
3、型用戶:代表一個用戶實體,主要包括用戶信息,如用戶名、密碼、性別、年齡等。圖書分類:代表網(wǎng)上書店中已有的圖書種類,如:計算機、少兒、生活等。圖書:代表具體圖書的具體信息,如圖書名,價格和封面圖片等等。訂單:代表用戶的訂單,購買信息。訂單項:代表訂單中具體項,每一個訂單的具體訂單信息。其中實體之間還可能存在對應(yīng)關(guān)系。圖書分類和圖書:一個圖書類別中有多個圖書,一個圖書屬于一個圖書分類,是一對多的關(guān)系。用戶和訂單:一個用戶可以擁有多個訂單,一個訂單只能屬于一個用戶,它們之間的關(guān)系是一對多的關(guān)系,在數(shù)據(jù)庫中表現(xiàn)為訂單表中有一個用戶表的外鍵。訂單和訂單項:一個訂單中包含多個訂單項,一個訂單項只能屬于一個
4、訂單,是一對多的關(guān)系。圖書和訂單項:一個訂單項就是對圖書的封裝,訂單項中除了有這個商品的信息,還有這個商品的購買數(shù)量等。3.2.1 設(shè)計概念數(shù)據(jù)模型2. 用PowerDesigner創(chuàng)建數(shù)據(jù)概念模型主要步驟步驟1:創(chuàng)建概念模型項目步驟2:創(chuàng)建用戶實體步驟3:創(chuàng)建圖書分類實體步驟4:創(chuàng)建圖書實體步驟5:創(chuàng)建訂單實體步驟6:創(chuàng)建訂單項目實體步驟7:創(chuàng)建實體之間的關(guān)聯(lián)步驟1 打開PowerDesigner,選擇菜單新建ConceptualM 圖3-4 新建ConceptualDataModel3.2.1 設(shè)計概念數(shù)據(jù)模型 步驟2 創(chuàng)建“用戶”實體在PowerDesigner中主要用到如圖3-5所示的
5、工具欄中的工具,用于創(chuàng)建實體和創(chuàng)建關(guān)聯(lián)。創(chuàng)建概念模型實體創(chuàng)建實體之間的關(guān)聯(lián)圖3-5 工具欄3.2.1 設(shè)計概念數(shù)據(jù)模型點擊工具,創(chuàng)建一個實體。雙擊創(chuàng)建的實體,出現(xiàn)如圖3-6所示的對話框,用于編輯實體的屬性。修改實體的名稱,如圖3-6所示。圖3-6 修改實體名稱3.2.1 設(shè)計概念數(shù)據(jù)模型 在對話框中,切換到“屬性”標(biāo)簽,添加用戶實體的屬性。如圖3-7所示。圖3-7 添加實體屬性3.2.1 設(shè)計概念數(shù)據(jù)模型步驟3 創(chuàng)建圖書分類實體創(chuàng)建實體,為實體命名,如圖3-8所示。圖3-8 修改實體名稱3.2.1 設(shè)計概念數(shù)據(jù)模型切換到屬性標(biāo)簽,添加如圖3-9所示屬性。圖3-9 添加實體屬性3.2.1 設(shè)計概
6、念數(shù)據(jù)模型 步驟4 創(chuàng)建圖書實體創(chuàng)建實體,為實體命名,如圖3-10所示。圖3-10 修改實體名稱3.2.1 設(shè)計概念數(shù)據(jù)模型切換到屬性標(biāo)簽,添加如圖3-11所示屬性圖3-11 添加實體屬性3.2.1 設(shè)計概念數(shù)據(jù)模型步驟5 創(chuàng)建訂單實體創(chuàng)建實體,為實體命名,如圖3-12所示。圖3-12 修改實體名稱3.2.1 設(shè)計概念數(shù)據(jù)模型切換到屬性標(biāo)簽,添加如圖3-13所示屬性。圖3-13 添加實體屬性3.2.1 設(shè)計概念數(shù)據(jù)模型步驟6 創(chuàng)建訂單項實體創(chuàng)建實體,為實體命名,如圖3-14所示圖3-14 修改實體名稱3.2.1 設(shè)計概念數(shù)據(jù)模型切換到屬性標(biāo)簽,添加如圖3-15所示屬性。圖3-15 添加實體屬性
7、 3.2.1 設(shè)計概念數(shù)據(jù)模型步驟7 添加實體之間的關(guān)系按照圖3-3所示,添加實體之間的關(guān)系。用戶和訂單之間是一對多關(guān)系。圖書分類與圖書是一對多關(guān)系。訂單和訂單項是一對多關(guān)系。圖書和訂單項是一對多關(guān)系。3.2.2 生成物理數(shù)據(jù)模型在PowerDesigner中,選擇菜單ToolsGenerate Physical Data Model,按圖3-16所示配置,由PowerDesigner自動創(chuàng)建相應(yīng)數(shù)據(jù)庫的物理模型。圖3-16 創(chuàng)建物理數(shù)據(jù)模型3.2.2 生成物理數(shù)據(jù)模型 點擊“確定”,系統(tǒng)自動生成如圖3-17所示的物理數(shù)據(jù)模型。圖3-17 生成物理數(shù)據(jù)模型3.2.3 生成數(shù)據(jù)庫通過物理模型,生
8、成SQL語句。選擇菜單DatabaseGenerate Database,出現(xiàn)如圖3-18所示對話框,選擇SQL語句的保存路徑和名稱,PowerDesigner自動根據(jù)物理模型生成SQL語句。圖3-18 生成數(shù)據(jù)庫由于實體id是數(shù)據(jù)庫自動增長型的,所以需要修改自動生成的MySQL語句,為每一個添加一個auto_increment關(guān)鍵字。如下所示,修改生成的sql文件。3.2.4 在MYSQL中創(chuàng)建數(shù)據(jù)庫和表 打開MySQL數(shù)據(jù)庫,輸入密碼。創(chuàng)建一個名為bookstore的數(shù)據(jù)庫,執(zhí)行PowerDesigner生成的SQL語句,生成數(shù)據(jù)庫表。(假設(shè)SQL文件的存放路徑是e:/book/books
9、tore.sql)。Enter password:(輸入密碼);mysqlcreate database bookstore;mysqlsource e:/book/bookstore.sql;最后生成的數(shù)據(jù)庫和數(shù)據(jù)庫表如圖3-19所示。圖3-19 創(chuàng)建好的數(shù)據(jù)庫3.3 系統(tǒng)結(jié)構(gòu)3.3.1 項目包的命名一般在J2EE企業(yè)開發(fā)中,項目的命名有個默認(rèn)的做法:類型.公司.項目.功能模塊。例如:,其中,org代表包的類型是開源組織,apache是組織或團體的名稱,log4j是項目名稱,net就是某個功能模塊了。又如:com.mysql.jdbc.log,com代表包的類型是商業(yè)的,mysql是mysq
10、l公司簡稱,jdbc就是mysql公司jdbc驅(qū)動項目名稱,log就是日志功能模塊。因此,假設(shè)本書開發(fā)的系統(tǒng)機構(gòu)名稱是apex,bookstore為商業(yè)應(yīng)用,項目就可以這樣命名:org.apex.bookstore。同樣,如果apex機構(gòu)以后要開發(fā)新的項目,如短信客戶關(guān)系管理系統(tǒng),那么此項目就命名為org.apex.bookstore,這樣打開org.apex這個包,公司的項目就一目了然了。3.3.2功能模塊包的劃分在確定了項目包的命名后,要考慮對應(yīng)的功能模塊劃分。根據(jù)項目的特點和部署的要求,功能模塊的劃分方式也有很多種,常見的有兩種方式: 按照應(yīng)用系統(tǒng)的功能模塊直接劃分。 把應(yīng)用系統(tǒng)按照J(rèn)2
11、EE體系結(jié)構(gòu)的3層劃分表示層,業(yè)務(wù)邏輯層和數(shù)據(jù)持久層劃分。1按照應(yīng)用系統(tǒng)的功能模塊直接劃分按照應(yīng)用系統(tǒng)的功能模塊直接劃分,在每個功能模塊下面根據(jù)軟件開發(fā)邏輯層(表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)持久層)劃分。例如一個網(wǎng)上書店項目bookstore有四個相對獨立的功能模塊login(登錄)、browse(瀏覽)、search(搜索圖書)、cart(購物車)、account(結(jié)帳)。應(yīng)用此方法可以劃分為如圖3-20所示。圖3-20 按照功能模塊劃分包3.3.2功能模塊包的劃分項目劃分為account、browse、cart、login、search五個相對獨立的功能模塊。每個功能模塊下,又按照J(rèn)2EE的邏輯
12、3層來劃分,business業(yè)務(wù)邏輯層、persistence數(shù)據(jù)持久層、presentation表示層。各個層的具體實現(xiàn)代碼分別存放在對應(yīng)的包中。這樣劃分的好處是各個功能模塊很獨立,也便于維護管理,但是它的部署的靈活性就受到很大的約束,它基本上都是以每個功能模塊為發(fā)布單元的。如果應(yīng)用需要整個系統(tǒng)的表示層和業(yè)務(wù)邏輯層分開,例如,account、brose、cart、login和search各個模塊中的presentation包部署到Tomcat Web容器里,business和persitence包部署到JBoss EJB容器里。這時,按這種方式劃分的應(yīng)用就變得不是很直觀了。2把應(yīng)用系統(tǒng)按照J(rèn)
13、2EE體系結(jié)構(gòu)的3層劃分表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)持久層劃分把應(yīng)用系統(tǒng)按照J(rèn)2EE體系結(jié)構(gòu)的3層劃分表示層,業(yè)務(wù)邏輯層和數(shù)據(jù)持久層劃分,然后,在對應(yīng)的每一個邏輯層下面再按照系統(tǒng)功能能模塊劃分,按照這種方式,bookstore應(yīng)用結(jié)構(gòu)就可以劃分如圖3-21所示。3.3.2功能模塊包的劃分圖3-21 按照三層結(jié)構(gòu)劃分包如圖3-21所示,bookstore按照J(rèn)2EE三層體系結(jié)構(gòu),把業(yè)務(wù)應(yīng)用包劃分為:presentation:表示層代碼包,在這個包里包括了bookstore應(yīng)用所有的表示層代碼。business:業(yè)務(wù)邏輯層代碼包,在此包里面包含了bookstore所有的業(yè)務(wù)邏輯代碼。而這些業(yè)務(wù)邏輯代碼
14、的歸類是根據(jù)bookstore應(yīng)用的功能模塊來劃分的。例如,根據(jù)業(yè)務(wù)功能模塊的定義,business包下面又包括了account、browse、cart、login、search五個功能模塊包。3.3.2功能模塊包的劃分persistence:數(shù)據(jù)持久層代碼包。顧名思義,在這個包里面包含了bookstore所有的數(shù)據(jù)源訪問代碼。在這些代碼中不能包括業(yè)務(wù)邏輯,必須為一個數(shù)據(jù)訪問接口。如果應(yīng)用DAO模式的話,那么此包就是存在一個DAO對象的地方。valueobject:值對象包,在應(yīng)用系統(tǒng)中,往往定義了各種純的值對象來封裝系統(tǒng)的一個個實體,如對數(shù)據(jù)庫實體表的封裝的dto值對象等等。而這些值對象是系
15、統(tǒng)中各種邏輯層都要用到的共同對象,所以,為了便于管理和引用,專門把這些對象歸結(jié)到valueobject包。util:工具包,在一個項目中,有些類是公共的,它為每一個包所調(diào)用。例如,一些系統(tǒng)常量定義類、通用工具類等等。把這些類統(tǒng)一存放在util包中,便于維護和重用,也有利于發(fā)布??梢娺@種劃分的好處就是和J2EE體系結(jié)構(gòu)思想一致,層次結(jié)構(gòu)很清晰。每一層都是通過相關(guān)的接口隔離,從而解耦開來。每一層都是獨立開發(fā),便于項目軟件工程師的管理。而且,按這種方式劃分的系統(tǒng),其部署是十分靈活的,縮放性很強。理論上,隨時可以根據(jù)需要來各自獨立部署各個邏輯層。按照常見的一個情形是:Web表示層包presentati
16、on部署在多個不同物理機器Tomcat容器上,而業(yè)務(wù)邏輯和數(shù)據(jù)持久層business和persistence包只部署在一臺JBoss物理機器里面。3.3.2功能模塊包的劃分這些包的依賴關(guān)系如圖3-22所示presentationbusinessutilvalueobjectpersistence圖3-22 包的依賴關(guān)系3.3.2功能模塊包的劃分util和valueobject兩個包為3個層次所依賴,因為它們是公共的。表示層presentation包依賴業(yè)務(wù)邏輯層business包,而business包又依賴于數(shù)據(jù)持久層包persistence包。這都是和J2EE三層的體系結(jié)構(gòu)一致的。在網(wǎng)絡(luò)書店
17、系統(tǒng)中,用了輕量級框架struts 2、Hibernate、Spring,并且系統(tǒng)不算大,將這個應(yīng)用系統(tǒng)的包分為如圖3-23所示。圖3-23 bookstore包的劃分3.3.2功能模塊包的劃分其中:action對應(yīng)presentation包。dao使用DAO模式,對應(yīng)persistence包。model是模型包。service對應(yīng)business層,表示的是業(yè)務(wù)邏輯。test用于測試。util工具包。vo即value object。3.4 搭建系統(tǒng)框架主要步驟如下:步驟1:創(chuàng)建Web Project步驟2:創(chuàng)建包步驟3:修改web.xml,添加struts.xml文件步驟4:加載用戶自定義包
18、,修改web.xml,添加perties文件步驟5:加載Hibernate框架步驟6:對數(shù)據(jù)庫表進行反向工程,生成映射文件具體的操作如下:步驟1 在MyEclipse中創(chuàng)建新的Web Project,名字為bookstore。步驟2 創(chuàng)建包創(chuàng)建如圖3-24所示包。圖3-24 項目主要包3.4 搭建系統(tǒng)框架步驟3修改web.xml,代碼如下: struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* 在src下添加struts.xml文件,內(nèi)容如下: 3.4 搭建系統(tǒng)框架步驟4 加載用戶自定義包hiberante3創(chuàng)建新的
19、applicationContext.xml文件,存放在WebRoot/WEB-INF目錄下。修改web.xml的代碼如下: struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* org.springframework.web.context.ContextLoaderListener 3.4 搭建系統(tǒng)框架在src下添加perites文件,增加對Spring的支持。代碼如下:struts.objectFactory=spring步驟5 添加Hibernate框架添加Hibernate類庫,將Hibernate的配置信息存放在Spring配置文件applicationContext.xml中。不新建Spring配置文件,為SessionFactory ID起名為sessionFactory,選擇數(shù)據(jù)源驅(qū)動為mysql,數(shù)據(jù)源ID起名dataSource,不創(chuàng)建SessionFactory類。步驟6 反向工程,添加映射文件在MyEclipse中切換到MyEclipse Database Explorer視窗,選中五個創(chuàng)建好的表,右擊菜單“Hibernate Reverse Enginerring”,利用反向工程,將對應(yīng)的Java類和映射文件放在org.bookst
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年節(jié)能型空氣分離設(shè)備項目發(fā)展計劃
- 出售通達(dá)公寓合同范本
- 交通安全員聘用合同范例
- 鋼管防腐施工方案
- 會議廣告制作服務(wù)合同范例
- 加工覆膜合同范例
- 加盟合同范例300例
- 加盟店物料采購合同范例
- 基于居民幸福感的老舊小區(qū)交通環(huán)境評價研究
- 兒買工程合同范例
- 2022年江西科技職業(yè)學(xué)院單招綜合素質(zhì)考試筆試試題及答案解析
- 季節(jié)性施工專項施工方案(常用)
- 傷口(壓瘡)的評估與記錄
- 煤礦機電運輸類臺賬(各種記錄匯編)
- 風(fēng)電場道路及平臺施工組織方案
- 風(fēng)險分級管控74411ppt課件(PPT 146頁)
- 三八女神節(jié)活動策劃PPT課件
- 畢業(yè)設(shè)計(論文)3000t自由鍛液壓機本體設(shè)計
- 風(fēng)力發(fā)電機組PLC系統(tǒng)
- Q∕GDW 12131-2021 干擾源用戶接入電網(wǎng)電能質(zhì)量評估技術(shù)規(guī)范
- T∕CAEPI 32-2021 全尾砂膏體充填關(guān)鍵設(shè)備技術(shù)要求
評論
0/150
提交評論