Java ee 企業應用開發:第3章 開始J2EE開發之旅_第1頁
Java ee 企業應用開發:第3章 開始J2EE開發之旅_第2頁
Java ee 企業應用開發:第3章 開始J2EE開發之旅_第3頁
Java ee 企業應用開發:第3章 開始J2EE開發之旅_第4頁
Java ee 企業應用開發:第3章 開始J2EE開發之旅_第5頁
已閱讀5頁,還剩33頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第3章 開始J2EE開發之旅3.1 網上書店概述3.2 數據庫設計3.3 系統結構 3.4 搭建系統框架 3.1 網上書店概述任何軟件開發的第一步就是明確系統需求,即要知道系統要實現什么功能,具體的要求是什么,如果這些都沒有弄明白,開發出來的系統肯定是不合格的。大部分讀者都有過網上購物的經歷,在購物網站可以很方便的注冊、瀏覽商品,查詢商品購買時只需點幾下鼠標。本書的網上書店實現了上述的基本功能,用戶可以在網上書店進行注冊,瀏覽商品以及查詢購物車。主要的界面如圖3-1所示。圖3-1 網上書店首頁3.1 網上書店概述用戶可以瀏覽圖書分類和推薦的圖書;用戶可以根據分類,瀏覽某一類的圖書列表;用戶可以

2、查看具體一本圖書的介紹;用戶在圖書瀏覽頁面,點擊添加,把選定圖書添加到購物車中;用戶可以點擊購物車,查看購物車信息;用戶可以點擊結帳按鈕下訂單,但是需要登錄后才能進行;用戶在注冊頁面,填寫注冊信息,確認有效注冊稱為新用戶;用戶在登錄頁面,填寫用戶名和密碼,確認正確以后可以結帳。功能模塊劃分如圖3-2所示。網上書店登錄注銷注冊瀏覽目錄瀏覽圖書購物查看購物車結帳圖3-2 功能模塊劃分3.2 數據庫設計3.2.1 設計概念數據模型1. 設計概念數據模型網上商店中有以下幾個實體:用戶、圖書分類、圖書、訂單、訂單項目,因此,系統可以設計如下的數據概念模型:圖3-3 數據概念模型3.2.1 設計概念數據模

3、型用戶:代表一個用戶實體,主要包括用戶信息,如用戶名、密碼、性別、年齡等。圖書分類:代表網上書店中已有的圖書種類,如:計算機、少兒、生活等。圖書:代表具體圖書的具體信息,如圖書名,價格和封面圖片等等。訂單:代表用戶的訂單,購買信息。訂單項:代表訂單中具體項,每一個訂單的具體訂單信息。其中實體之間還可能存在對應關系。圖書分類和圖書:一個圖書類別中有多個圖書,一個圖書屬于一個圖書分類,是一對多的關系。用戶和訂單:一個用戶可以擁有多個訂單,一個訂單只能屬于一個用戶,它們之間的關系是一對多的關系,在數據庫中表現為訂單表中有一個用戶表的外鍵。訂單和訂單項:一個訂單中包含多個訂單項,一個訂單項只能屬于一個

4、訂單,是一對多的關系。圖書和訂單項:一個訂單項就是對圖書的封裝,訂單項中除了有這個商品的信息,還有這個商品的購買數量等。3.2.1 設計概念數據模型2. 用PowerDesigner創建數據概念模型主要步驟步驟1:創建概念模型項目步驟2:創建用戶實體步驟3:創建圖書分類實體步驟4:創建圖書實體步驟5:創建訂單實體步驟6:創建訂單項目實體步驟7:創建實體之間的關聯步驟1 打開PowerDesigner,選擇菜單新建ConceptualM 圖3-4 新建ConceptualDataModel3.2.1 設計概念數據模型 步驟2 創建“用戶”實體在PowerDesigner中主要用到如圖3-5所示的

5、工具欄中的工具,用于創建實體和創建關聯。創建概念模型實體創建實體之間的關聯圖3-5 工具欄3.2.1 設計概念數據模型點擊工具,創建一個實體。雙擊創建的實體,出現如圖3-6所示的對話框,用于編輯實體的屬性。修改實體的名稱,如圖3-6所示。圖3-6 修改實體名稱3.2.1 設計概念數據模型 在對話框中,切換到“屬性”標簽,添加用戶實體的屬性。如圖3-7所示。圖3-7 添加實體屬性3.2.1 設計概念數據模型步驟3 創建圖書分類實體創建實體,為實體命名,如圖3-8所示。圖3-8 修改實體名稱3.2.1 設計概念數據模型切換到屬性標簽,添加如圖3-9所示屬性。圖3-9 添加實體屬性3.2.1 設計概

6、念數據模型 步驟4 創建圖書實體創建實體,為實體命名,如圖3-10所示。圖3-10 修改實體名稱3.2.1 設計概念數據模型切換到屬性標簽,添加如圖3-11所示屬性圖3-11 添加實體屬性3.2.1 設計概念數據模型步驟5 創建訂單實體創建實體,為實體命名,如圖3-12所示。圖3-12 修改實體名稱3.2.1 設計概念數據模型切換到屬性標簽,添加如圖3-13所示屬性。圖3-13 添加實體屬性3.2.1 設計概念數據模型步驟6 創建訂單項實體創建實體,為實體命名,如圖3-14所示圖3-14 修改實體名稱3.2.1 設計概念數據模型切換到屬性標簽,添加如圖3-15所示屬性。圖3-15 添加實體屬性

7、 3.2.1 設計概念數據模型步驟7 添加實體之間的關系按照圖3-3所示,添加實體之間的關系。用戶和訂單之間是一對多關系。圖書分類與圖書是一對多關系。訂單和訂單項是一對多關系。圖書和訂單項是一對多關系。3.2.2 生成物理數據模型在PowerDesigner中,選擇菜單ToolsGenerate Physical Data Model,按圖3-16所示配置,由PowerDesigner自動創建相應數據庫的物理模型。圖3-16 創建物理數據模型3.2.2 生成物理數據模型 點擊“確定”,系統自動生成如圖3-17所示的物理數據模型。圖3-17 生成物理數據模型3.2.3 生成數據庫通過物理模型,生

8、成SQL語句。選擇菜單DatabaseGenerate Database,出現如圖3-18所示對話框,選擇SQL語句的保存路徑和名稱,PowerDesigner自動根據物理模型生成SQL語句。圖3-18 生成數據庫由于實體id是數據庫自動增長型的,所以需要修改自動生成的MySQL語句,為每一個添加一個auto_increment關鍵字。如下所示,修改生成的sql文件。3.2.4 在MYSQL中創建數據庫和表 打開MySQL數據庫,輸入密碼。創建一個名為bookstore的數據庫,執行PowerDesigner生成的SQL語句,生成數據庫表。(假設SQL文件的存放路徑是e:/book/books

9、tore.sql)。Enter password:(輸入密碼);mysqlcreate database bookstore;mysqlsource e:/book/bookstore.sql;最后生成的數據庫和數據庫表如圖3-19所示。圖3-19 創建好的數據庫3.3 系統結構3.3.1 項目包的命名一般在J2EE企業開發中,項目的命名有個默認的做法:類型.公司.項目.功能模塊。例如:,其中,org代表包的類型是開源組織,apache是組織或團體的名稱,log4j是項目名稱,net就是某個功能模塊了。又如:com.mysql.jdbc.log,com代表包的類型是商業的,mysql是mysq

10、l公司簡稱,jdbc就是mysql公司jdbc驅動項目名稱,log就是日志功能模塊。因此,假設本書開發的系統機構名稱是apex,bookstore為商業應用,項目就可以這樣命名:org.apex.bookstore。同樣,如果apex機構以后要開發新的項目,如短信客戶關系管理系統,那么此項目就命名為org.apex.bookstore,這樣打開org.apex這個包,公司的項目就一目了然了。3.3.2功能模塊包的劃分在確定了項目包的命名后,要考慮對應的功能模塊劃分。根據項目的特點和部署的要求,功能模塊的劃分方式也有很多種,常見的有兩種方式: 按照應用系統的功能模塊直接劃分。 把應用系統按照J2

11、EE體系結構的3層劃分表示層,業務邏輯層和數據持久層劃分。1按照應用系統的功能模塊直接劃分按照應用系統的功能模塊直接劃分,在每個功能模塊下面根據軟件開發邏輯層(表示層、業務邏輯層和數據持久層)劃分。例如一個網上書店項目bookstore有四個相對獨立的功能模塊login(登錄)、browse(瀏覽)、search(搜索圖書)、cart(購物車)、account(結帳)。應用此方法可以劃分為如圖3-20所示。圖3-20 按照功能模塊劃分包3.3.2功能模塊包的劃分項目劃分為account、browse、cart、login、search五個相對獨立的功能模塊。每個功能模塊下,又按照J2EE的邏輯

12、3層來劃分,business業務邏輯層、persistence數據持久層、presentation表示層。各個層的具體實現代碼分別存放在對應的包中。這樣劃分的好處是各個功能模塊很獨立,也便于維護管理,但是它的部署的靈活性就受到很大的約束,它基本上都是以每個功能模塊為發布單元的。如果應用需要整個系統的表示層和業務邏輯層分開,例如,account、brose、cart、login和search各個模塊中的presentation包部署到Tomcat Web容器里,business和persitence包部署到JBoss EJB容器里。這時,按這種方式劃分的應用就變得不是很直觀了。2把應用系統按照J

13、2EE體系結構的3層劃分表示層、業務邏輯層和數據持久層劃分把應用系統按照J2EE體系結構的3層劃分表示層,業務邏輯層和數據持久層劃分,然后,在對應的每一個邏輯層下面再按照系統功能能模塊劃分,按照這種方式,bookstore應用結構就可以劃分如圖3-21所示。3.3.2功能模塊包的劃分圖3-21 按照三層結構劃分包如圖3-21所示,bookstore按照J2EE三層體系結構,把業務應用包劃分為:presentation:表示層代碼包,在這個包里包括了bookstore應用所有的表示層代碼。business:業務邏輯層代碼包,在此包里面包含了bookstore所有的業務邏輯代碼。而這些業務邏輯代碼

14、的歸類是根據bookstore應用的功能模塊來劃分的。例如,根據業務功能模塊的定義,business包下面又包括了account、browse、cart、login、search五個功能模塊包。3.3.2功能模塊包的劃分persistence:數據持久層代碼包。顧名思義,在這個包里面包含了bookstore所有的數據源訪問代碼。在這些代碼中不能包括業務邏輯,必須為一個數據訪問接口。如果應用DAO模式的話,那么此包就是存在一個DAO對象的地方。valueobject:值對象包,在應用系統中,往往定義了各種純的值對象來封裝系統的一個個實體,如對數據庫實體表的封裝的dto值對象等等。而這些值對象是系

15、統中各種邏輯層都要用到的共同對象,所以,為了便于管理和引用,專門把這些對象歸結到valueobject包。util:工具包,在一個項目中,有些類是公共的,它為每一個包所調用。例如,一些系統常量定義類、通用工具類等等。把這些類統一存放在util包中,便于維護和重用,也有利于發布。可見這種劃分的好處就是和J2EE體系結構思想一致,層次結構很清晰。每一層都是通過相關的接口隔離,從而解耦開來。每一層都是獨立開發,便于項目軟件工程師的管理。而且,按這種方式劃分的系統,其部署是十分靈活的,縮放性很強。理論上,隨時可以根據需要來各自獨立部署各個邏輯層。按照常見的一個情形是:Web表示層包presentati

16、on部署在多個不同物理機器Tomcat容器上,而業務邏輯和數據持久層business和persistence包只部署在一臺JBoss物理機器里面。3.3.2功能模塊包的劃分這些包的依賴關系如圖3-22所示presentationbusinessutilvalueobjectpersistence圖3-22 包的依賴關系3.3.2功能模塊包的劃分util和valueobject兩個包為3個層次所依賴,因為它們是公共的。表示層presentation包依賴業務邏輯層business包,而business包又依賴于數據持久層包persistence包。這都是和J2EE三層的體系結構一致的。在網絡書店

17、系統中,用了輕量級框架struts 2、Hibernate、Spring,并且系統不算大,將這個應用系統的包分為如圖3-23所示。圖3-23 bookstore包的劃分3.3.2功能模塊包的劃分其中:action對應presentation包。dao使用DAO模式,對應persistence包。model是模型包。service對應business層,表示的是業務邏輯。test用于測試。util工具包。vo即value object。3.4 搭建系統框架主要步驟如下:步驟1:創建Web Project步驟2:創建包步驟3:修改web.xml,添加struts.xml文件步驟4:加載用戶自定義包

18、,修改web.xml,添加perties文件步驟5:加載Hibernate框架步驟6:對數據庫表進行反向工程,生成映射文件具體的操作如下:步驟1 在MyEclipse中創建新的Web Project,名字為bookstore。步驟2 創建包創建如圖3-24所示包。圖3-24 項目主要包3.4 搭建系統框架步驟3修改web.xml,代碼如下: struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* 在src下添加struts.xml文件,內容如下: 3.4 搭建系統框架步驟4 加載用戶自定義包hiberante3創建新的

19、applicationContext.xml文件,存放在WebRoot/WEB-INF目錄下。修改web.xml的代碼如下: struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* org.springframework.web.context.ContextLoaderListener 3.4 搭建系統框架在src下添加perites文件,增加對Spring的支持。代碼如下:struts.objectFactory=spring步驟5 添加Hibernate框架添加Hibernate類庫,將Hibernate的配置信息存放在Spring配置文件applicationContext.xml中。不新建Spring配置文件,為SessionFactory ID起名為sessionFactory,選擇數據源驅動為mysql,數據源ID起名dataSource,不創建SessionFactory類。步驟6 反向工程,添加映射文件在MyEclipse中切換到MyEclipse Database Explorer視窗,選中五個創建好的表,右擊菜單“Hibernate Reverse Enginerring”,利用反向工程,將對應的Java類和映射文件放在org.bookst

溫馨提示

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

評論

0/150

提交評論