網路
本文介紹一下網路商店的開發所需要的開發工具和架構。
基本配置
開發本例需要的開發工具。
·開發平台: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模式