

摘要:本文根據軟件工程的流程分別闡述了系統需求以及系統功能的描述,系統設計。利用Struts和Hibernate技術來開發一個簡單的網絡商店,設計網上購物的基本功能,其主要功能包括用戶注冊,用戶登陸,瀏覽商品,購物以及從查看訂單等功能。
關鍵詞:Java Struts Hibernate JSP 網絡商店, 模型
一、開發環境
本文簡單地介紹了開發環境、Struts框架和Hibernate框架的技術特點,對設計過程中的開發環境進行陳述。本次設計開發平臺是MYEclipse7.0,Web服務器是Tomcat5.0,使用的開發技術是Struts框架,Hibernate技術,數據庫采用MySQL 5.0。
Struts是Java Web應用提供了現成的通用的框架。Struts可以大大提高Web的開發速度。Struts實質上就是在JSP Model2的基礎上面實現一個MVC的框架。在Struts框架中,模型就是實現業務邏輯的JavaBean或EJB組件構成,控制器就是由ActionServlet和Action來實現,視圖則是由一組JSP文件構成。
Hibernate是一個開放源碼的對象關系映射框架,它對JDBC進行了輕量級的對象封裝,使得Java程序員可以隨心所欲地使用面向對象的編程思想來操作數據庫。Hibernate可以應用在任何使用JDBC的場所,即可以在Java客戶端使用,也可以在Servlet/JSP的Web應用中使用,最具有意義的是,Hibernate可以在EJB的J2EE框架中完成數據持久化的重任。
二、系統概要分析及其功能描述
本文介紹了這次設計的概要分析,簡單地說明了它的工程模塊。在購物網站可以很方便的注冊,瀏覽查詢商品,購買結賬也是很簡單的事情。本次設計的網絡商店就簡單地實現了上述功能,用戶可以在網絡商店進行注冊,瀏覽商品以及查詢購物車。
1、登陸以及注冊
用戶登陸和注冊就是實現一個新的用戶注冊和老用戶的登陸的過程,這兩個功能是每個電子商務網站必不可少的一部分。用戶注冊就是新的用戶可以在網絡商店進行個人信息注冊,用戶必須先注冊才可以購物。注冊時系統會對注冊信息進行驗證,以確保注冊信息的正確性。用戶登陸就是用戶可以在登陸頁面進行登陸,在購物結賬時,用戶需要登陸信息。登陸的時候如果用戶名密碼錯誤,系統會提示錯誤。
2、商品瀏覽
商品瀏覽時實現用戶可以在網絡商店中隨意瀏覽商品,商品是根據商品的的類別進行分類的,用戶可以單擊每一個分類的鏈接來進入每一個分類,查看詳細的信息。進入每一個商品的類別之后,商品是根據每個產品的類型再分類的。3
3、結賬
在結賬的時候,系統會顯示用戶購物車中已有的商品,包括產品名,產品數量,單價,庫存等信息。在最后確定訂單的時候,用戶可以自己修改每一件商品的數量。本系統的功能模塊框圖如圖2-1所示。
三、系統設計
本文是對本次系統的分析過程,主要介紹了系統的各個層次,以及各個層次實現所使用的技術框架,對關系數據庫進行了詳細分析。
1、系統架構設計
整個應用程序遵循多個層次的構架模式,從上到下一次為視圖層,控制器層,模型層,持久化層和數據庫層。前三層也就是Struts框架的基本層次。持久化層是Hibernate來創建的。
其中,模型層,持久化層,數據庫層之間的關系是上層依賴下一層,而下一層對上一層的依賴很少。各個層次之間的以來關系應該是自頂向下的,即上層可以依賴下層,而下層盡量少依賴上層。
要在系統中使用Hibernate來實現持久層,若要采用其他機器實現持久化層時,則不要改動業務邏輯中的代碼。而視圖層和控制層都是通過Struts框架來實現的。模型層實際上又可以細分為數據訪問層和數據服務層。持久化層是使用Hibernate實現的,在這層使用了DAO模式,所以這層又可以分為數據訪問層和數據服務層。Struts所實現的MVC框架如圖3-1所示。
2、業務實體設計
本次設計網絡商店中有以下的業務實體:用戶,商品信息,商品系類,商品類別,訂單,訂單項,購物車和購物車中的具體商品。
用戶(Account)。用戶代表一個用戶實體,主要包括用戶的詳細信息,如用戶名,密碼,用戶地址等。
具體商品(Item)。代表每一個具體的商品信息,主要包括商品的名字,價格等分量信息。
商品系列(Product)。代表一系類商品。
商品類別(Category)。代表一類商品。
訂單(Order)。代表用戶的訂單。主要包括訂單名,用戶信息,訂單的具體內容。
訂單項(LineItem)。代表訂單中的具體項,一個訂單包括一個商品的購買情況。
購物車(Cart)。代表用戶的購物車。
購物車中的具體商品(CartItem)。表示購物車中的具體項。
將上述的業務實體分析,總結它們的各實體之間的關系如下:
用戶和訂單:一個用戶可以有多個訂單,一個訂單只能屬于一個用戶,他們之間的關系是一對多的關系。在數據庫中的表現為訂單表中有一個用戶表的外鍵,在Hibernate中就表現成訂單持久化類中有一個用戶持久化類的引用。
訂單與訂單項:一個訂單中可以有多個訂單項,一個訂單項只可對應一個具體商品的具體信息。訂單項和訂單的關系在Hibernate中表現一個訂單項中有一個訂單的持久化類引用。
訂單項與具體商品:一個訂單項就是對具體商品的封裝,一個具體的商品就是這個商品詳細信息,訂單項中除了有這個具體商品的信息,還有這個具體商品的購買數量,屬于哪個訂單等信息。
商品系列與具體商品:一個商品系列有多個具體商品。
商品類別與具體商品:一個商品類別有多個商品系列。
購物車和購物車中具體商品:用戶的購物車可以有多個具體商品,由于是網上購物,或許購物車中把一個沒有庫存的商品放到了購物車中,所以購物車中具體商品就必須有這個信息。
購物商品和具體商品:這個關系和訂單項與商品的關系相似,只是購物商品對具體商品的封裝角度不一樣,購物商品中除了要記錄商品的數量,還需要它的庫存情況。
各個實體之間的關系如圖3-2所示。
3、業務邏輯設計
在本系統中,應用的持久化層采用Hibernate作為中間件,并使用了DAO設計模式實現數據層的訪問。DAO模式是J2EE核心模式中的一種,其主要行為是在業務核心方法和具體數據源之間再添加一層,用這層來連接業務方法和數據源,這樣就實現了兩個的解耦合。
因為具體持久層數據源可能是多樣化的,可能是XML或者關系數據庫。通過使用DAO模式,業務邏輯核心部分就不用關心數據層是如何實現對數據庫的操作的,而只關心自己的業務操作,對數據庫的操作全部交給了DAO代理,如下圖3-3所示。
四、結論
這次設計的網絡購物系統是使用Struts和Hibernate技術進行簡單的構建的,在設計中,使用到了Struts框架的MVC模型結構,同時結合Hibernate技術,使用DAO設計模式,在業務邏輯和數據源之間增加一層,更為方便安全地對數據庫進行操作。在設計地過程中調用了大量地API,并需要對控制器,業務實體等進行相應配置。設計過程中要對面向對象有很清楚地認識,這樣在操作過程中才能利用提供地API來完成各個模塊要實現地相應功能。
參考文獻:
[1].宋漢增,沈琳;利用Hibernate對象持久化服務簡化Java數據庫訪問[J];計算機應用;2003.12
[2].沈銳;基于J2EE物流系統持久層的Hibernate解決方案[J];電腦知識與技術;2005.03