本文介紹一下網絡商店的開發所需要的開發工具和架構。
基本配置
開發本例需要的開發工具。
·開發平台:Eclipse 3.1。
·Web服務器:Tomcat 5。
·開發技術:JSP,Struts框架,Hibernate技術,JSTL。
·數據庫服務器: MySQL5.0。
系統需求
大部分讀者都有過在網上購物的經歷,在購物網站可以很方便的注冊、浏覽商品、查詢商品、購買時也只需點幾下鼠標。本章的網絡商店實現了上述的基本功能,用戶可以在網絡商店中進行注冊、浏覽商品以及查詢購物車。下面來講解每個系統功能。
1.登錄和注冊
用戶登錄和注冊就是實現一個新的用戶注冊和老用戶的登陸,這兩個功能基本上每個電子商務網站上提供。用戶注冊就是新用戶可以在網絡商店進行信息注冊,這是購物的前提。用戶必需先注冊才能進行購物。注冊時系統會對注冊信息進行驗證,以確保注冊信息的正確性。用戶登錄就是用戶可以在登陸頁面進行登陸,在購物結帳時,用戶需要登陸信息,當然在進入系統開始的時,用戶可以進行登陸。登陸時,如果用戶名密碼錯誤,系統會提示錯誤。
2.商品浏覽
商品浏覽是實現用戶可以在網絡商店中隨意浏覽商品,商品是根據商品的類別來進行分類的,用戶可以單擊每一個分類的鏈接來進入每一個分類,查看的詳細信息。進入每一個商品類別之後,商品是根據每個產品的類型再分類的。
例如,進入書這個大的類別,書有可以分很多種,如計算機相關的書,管理方面相關的書。用戶根據每一個產品鏈接來進入每一個產品系列。例如單擊進入計算機相關的書,進入之後,列舉的就是每一個商品。單擊每一個商品就可以看到每一個商品的具體信息,例如單擊計算機程序設計藝術,就可以看到這本書的出版日期,價格,書的大概內容。如果覺得這本書很合適,就可以把它放進購物車。
3.結帳
在結帳的時候,系統會顯示用戶購物車中已有的商品,包括產品名、產品數量、單價、總的價格以及是否有庫存。在最後確定訂單時,用戶可以修改每一個商品的數量。例如計算機程序設計與藝術想買2本,則用戶可以修改它的購買數量,更新購物車就可以。如果用戶不想買這本書了,就可以把這本書從購物車中消除。但是一旦單擊了結帳生成訂單,則購物車就不能被改變了。
根據上面大概的需求,畫出網絡商店的用例圖,如圖1所示。
圖1 用例圖
系統功能描述
在本節中,將以最直觀的方式來向讀者介紹整個系統要實現的功能。
1、用戶注冊
用戶注冊是網絡商店的基本功能之一。用戶如果想從網絡商店購買商品,必須有一個網絡商店的賬號。用戶可以通過注冊獲得賬號。注冊頁面效果如圖2所示。
當注冊成功之後,會進入到網絡商店的首頁。此時已經以新的帳號登錄了網絡商店,系統頁面的首頁如圖3所示。在注冊時,系統會對注冊信息作一些簡單的驗證,如果信息格式不對,則注冊會失敗,系統會提示失敗的原因,注冊失敗如圖4所示。
圖2 注冊頁面
圖3 注冊成功
2、用戶登錄
當用戶已經擁有一個賬號,就可以進行登錄。當用戶登錄系統首頁時,可以點擊登陸鏈接盡心登錄。登錄頁面如圖5所示。如果登錄成功,則返回到系統的首頁,如果登錄失敗則會轉入到失敗頁面,如圖6所示。
圖4注冊失敗
圖5 登錄頁面
用戶成功登錄後,在系統的右上角有一個鏈接,單擊進入可以修改跟人信息,如圖7所示。
圖6 登錄失敗
圖7 修改個人信息
3、浏覽商品
用戶成功登錄後就可以浏覽網路商店中的商品了。在首頁有幾種商品品種可以供用戶選擇的,如電子商品、書籍以及軟件。例如,用戶單擊軟件,進入軟件商品的浏覽,軟件商品下面分為Microsoft和kingsoft,如圖8所示。
進入某一個商品品種後,系統會列出這個商品品種下的所有商品系列,每一商品系列又有很多具體的商品,例如用戶單擊Microsoft,如圖9所示。
圖8浏覽商品
圖9浏覽具體商品
在圖9的頁面中列出的是一個一個具體的商品,用戶可以單擊每一個商品名,以查看這個商品的具體信息。例如單擊anti spy,如圖10所示。
4、購物
當用戶浏覽商品時,看中了一個商品,就可以把這個商品放到自己購物車中。每一個商品都有一個鏈接提供放入購物車。單擊放入購物車,如圖11所示。
圖10 商品具體信息
圖11 查看購物車
在查看購物車頁面中有很多供選擇的操作,如刪除一個購物車。當用戶單擊刪除,如圖12所示,系統還是會跳轉到購物車頁面。如果用戶覺得某一個商品的數量不合適,用戶可以更改該商品的數量,在數量這一欄中填上要購買的數量,然後單擊更新購物車,如圖13所示。
圖12 刪除一個商品
圖13 更改商品的數量
5、結帳
查看購物車之後,如果用戶想進行結帳可以單擊結帳鏈接,如圖14所示。單擊下一步鏈接,就可以查看該訂單的詳細情況,如圖15所示
圖14 結帳
圖15 訂單詳細信息
查看訂單詳細後,然後單擊下一步鏈接,就是訂單的確認了,如圖16所示
訂單確認完畢之後,就是訂單的生成了。如果單擊下一步鏈接,生成訂單,此時訂單不能在被修改了。如圖17所示。
圖16確認訂單
圖17訂單生成
系統設計
在對系統的需求進行了分析以後,接下來開始對系統的整體架構進行設計。本章的重點在於講述如何進行開發,而不是在於如何進行設計。因此,在設計這一部分只是簡單進行了介紹,目的是為了使讀者更容易理解整個系統。
1、系統架構設計
整個應用程序遵循多層次的架構模式,從上到下依次為視圖層、控制器層、模型層、持久化層和數據庫層,如圖18所示。前面三層其實就是Struts框架的基本基本層次。持久化層則是Hibernate來創建的。
圖18系統架構
其中,模型層、持久化層、數據庫層之間的關系是上層依賴下一層,而下一層對上一層的依賴很少,如同網絡的ISO七層模型。各層次間的依賴關系應該是自頂向下的,即上層可以依賴下層,而下層應該盡量減少對上層的依賴。
例如,此時在系統中使用Hibernate來實現持久化層,若要采用其他機制實現持久化層時,則不需要改動業務邏輯中的代碼。而視圖層和控制器層都是通過Struts框架來實現的。模型層實際上又可細分為數據訪問層(DAO)和數據服務層(Manager)。持久化層是使用Hibernate實現的,在這層使用了DAO模式,所以這層又可分為數據訪問層和數據服務層。
2、業務實體設計
一個系統的業務實體在內存中表現為實體域對象,在數據庫中表現為關系數據,實現業務實體包括以下內容。
·設計域模型,創建域模型實體對象。
·設計關系數據模型。
·創建對象—關系映射文件。
在網絡商店中有以下的業務實體:用戶、具體商品、商品系類、商品類、訂單、訂單項、購物車和購物車中具體的商品。下面對這些業務實體作一個簡單的解釋,後面章節會有詳細的解釋。
·用戶:代表一個用戶實體,主要包括用戶的詳細信息,如用戶名,密碼,地址之類的。
·具體商品:代表每一個具體的商品信息,如上面提到的計算機程序設計藝術,主要包括商品的名字,價格等。
·商品系類:代表一系類商品,如前面提到計算機相關書籍。
·商品類別:代表一類商品,如前面提到的書。
·訂單:代表用戶的訂單,主要包括訂單名,用戶信息,訂單的具體內容。
·訂單項:代表訂單中具體項,一個訂單項包括一個商品的購買情況。
·購物車:代表用戶的購物車,是一個虛擬的概念。
·購物車中的具體商品:代表購物車中每一個具體的購物項。
這些實體之間的關系如圖19所示。
圖19 業務實體關系圖
如圖19所示,這裡來介紹一下各實體之間的對應關系。
·用戶和訂單:一個用戶可以擁有多個訂單,一個訂單只能屬於一個用戶,他們之間的關系是一對多的關系。在數據庫表中是表現為訂單表中有一個用戶表的外鍵,在Hibernate中則表現為訂單持久化類中有一個用戶持久化類引用。
·訂單與訂單項:一個訂單中可以有很多訂單項,一個訂單項只是對一個具體商品的封裝。訂單與訂單項的關系在Hibernate中表現為一個訂單項中有一個訂單的持久化類引用。
·訂單項與商品:一個訂單項就是對商品的封裝,一個商品就是這個商品的詳細信息,訂單項中除了有這個商品的信息,還有這個商品的購買數量,屬於哪個訂單等。
·商品系列與商品:一個商品系列有多個商品,如同計算機方面書籍與計算機程序設計藝術關系。
·商品類別與商品系列,一個商品類別有多個商品系列,如同書與計算機方面書籍的關系。
·購物車與購物商品,用戶的購物車中可以有多個購物商品,由於是網上購物,也許購物車中把一個沒有庫存的商品放到了購物車中,所以購物商品就必須有這個信息。
·購物商品與商品,這個關系同訂單項與商品的關系類似,只是購物商品對商品的封裝角度不一樣,購物商品中除了要記錄商品的數量還需記錄它的庫存情況。
以上是系統中所有實體域模型之間的關系的定義。
3、業務邏輯設計
在本系統中,應用的持久化層采用Hibernate做為中間件,並使用了DAO設計模式實現對數據層的訪問。DAO模式是J2EE核心模式中的一種,其主要的行為就是在業務核心方法和具體數據源之間再增加一層,用這一層來連接業務方法和數據源,這樣就實現了兩者的解耦。
因為具體持久層數據源可能是多樣化的,可能是XML或者是關系數據庫。在具體的關系數據庫中,也可能是不同的產品,如Oracle或者MySQL。通過使用DAO模式,業務核心部分就不用關心數據層是如何實現對數據庫的操作的,而只關心自己的業務操作,對數據庫的操作全部仍給了DAO代理,如圖20所示。
圖20 DAO模式