摘要:該文從網上購物系統的實際出發,引入了一個改進后的Struts框架,同時從占本系統很大比例的數據增、刪、改、查操作中抽象出了一個數據操作通用框架,在框架的設計過程中運用了一些設計模式。系統具有高可靠性、可擴展性和可重用性的特點。
關鍵詞:軟件架構;Struts;網上購書系統
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2009)24-6715-04
A Web BookShop System Based on Struts
FENG Jing-yi
(Guangzhou Vocational Information Engineering School, Guangzhou 510000, China)
Abstract: From the requirement of web shopping system, struts framework that has been improved is introduced at the same time a data operation currency framework is abstracted from the addition, deletion, modification, query operation that have the most percent of the system. In the course of framework design some design patterns are used. The system has the characteristics of high reliability, expansibility and reuse ability.
Key words: software framework; struts; web bookshop system
網上購書是在Internet開放的網絡環境下,基于瀏覽器/服務器應用方式,實現,消費者的的網上交易和在線電子支付的一種新型的商業運營模式。網上購書將傳統的購書流程電子化、數字化,一方面以電子流代替了實物流,可以大量減少人力、物力;另一方面突破了時間和空間的限制,使得交易活動可以在任何時間、任何地點進行,極大地方便了最終消費者,使您的購書過程變得輕松、快捷、方便,從而大大提高了效率。
目前大多數網上購書系統是基于兩層體系結構來進行設計和開發的。隨著Internet的飛速發展,傳統的兩層體系結構面臨著嚴峻的挑戰,其中最為突出的問題是開發負擔重、維護困難等。本文針對目前網上購書系統所面臨的問題,基于J2EE框架,采用框架技術及設計模式,設計開發了一個網上購書系統。系統具有高可靠性、可擴展性和可重用性的特點。
1 struts框架技術介紹
Struts是目前比較成熟的Web開發框架。它利用ActionForm Bean來進行View組件和Controller組件之間表單數據的傳遞。Struts框架把View組件接收到的表單數據保存在ActionFormBean中,并把它傳遞給Controller組件。而Controller組件可以對ActionForm Bean中的數據進行修改。JSP文件使用Struts標簽讀取修改后的 ActionForm Bean的信息,重新設置HTML表單。
2 系統設計
2.1 系統功能結構
網上購書系統的系統功能結構見圖1。
對一個電子商務網站而言,擁有一個完善的后臺管理系統是必不可少的,也是管理和維護該網站的核心所在。書店管理子系統提供了管理員管理書店的各項功能,
例如對書店管理了系統這一模塊就可以分為:注冊用戶的身份進行驗證、對圖書目錄的管理等。書店管理子系統從功能上可以劃分為以下幾個模塊:
2.1.1 注冊用戶管理
對注冊用戶身份的真實性進行驗證。
2.1.2 圖書目錄管理
可以查看圖書的詳細信息和實際庫存數量。主要處理新書入庫、書目變動等。
2.1.3 客戶訂單管理
可以修改訂單狀態,如是否己經結算,是否已經發貨,是否已經結單,刪除超期未付款的訂單。
2.1.4 預約信息管理
查看用戶的預約新書信息。這樣可以及時根據用戶登記的情況,組織庫管人員訂購書籍,最大程度的滿足用戶需求。
2.2 網上購書系統的框架設計
基于上述分析,在網上購書系統的開發中采用改進后的sturts框架,利用控制器來控制系統的流程、產生視圖、調用業務組件執行業務邏輯,用戶界面的生成由XML和XSL負責,業務邏輯交給后端的EJB和JvaBaena組件。這樣,系統的表現邏輯和業務邏輯分離,簡化了軟件開發、提高了系統的性能,使開發出的應用具有良好的可維護性、可擴展性。
我們將系統設計為四層Web體系結構。這四層分別是客戶層、Web層、業務層和資源層。如圖2所示。其中Web層和業務層在應用服務器上實現,資源層放在數據庫服務器上。控制器控制系統的整個流程。它讀取配置文件,將請求映像到相應的業務組件并執行業務邏輯。視圖部分封裝在XML文檔中,并為不同的訪問設備提供不同的樣式表以支持多種訪問設備。模型部分包括系統中所有的業務邏輯和數據映像,采用JvaBaaen和EJB組件技術實現,模型部分通過標準的JDBC訪問數據庫。
3 系統流程分析
所謂系統流程,就是用戶使用本網上書店系統的工作過程。系統流程分析是系統分析的重要組成部分,也是系統設計的重要基礎。本系統的流程是從首頁開始,對用戶身份進行認證,然后分別賦予不同的權限。如圖3所示。
系統用例圖描述了顧客和各類信息管理員通過登錄本模塊,進入不同的系統界面或管理模塊對其所管理的模塊進行相應操作。圖書信息管理員通過圖書管理模塊可以添加、刪除、修改書的種類和書;特價書籍信息管理員通過特價書籍信息管理模塊可以添加、刪除、修改每天的特價圖書;用戶管理員通過用戶管理模塊可以創建、刪除、修改不同信息管理員的用戶名和密碼;訂單管理員通過訂單管理模塊負責查看訂單,檢查庫存是否有訂單的圖書,然后將圖書發送給顧客,若庫存不存在該圖書,則需要及時聯系用戶和填寫圖書請購單;顧客反饋信息管理員通過顧客反饋信息管理模塊查看每個客戶的反饋意見,及時處理不滿意見和填寫不滿意見處理表。同時也反應了顧客通過Internet網訪問網上書店可以進行的操作。首先顧客需要登錄網上書店系統(即注冊為會員)可以選購圖書,如果不是會員但可以方便的查看圖書的信息、了解每天的特價書,會員可將選購的圖書放入購物車里,并對購物車進行添加、刪除、修改等操作,還可以填寫反饋意見。見圖4系統分析用例圖。
3 網上書店系統實現
3.1 數據模型設計
根據前面的需求描述,本系統中所涉及到的可以抽象出來的數據模型有:用戶(User),圖書(Book),訂單(Order),訂單明細(也就是購物車條目:Order_detail),這些數據模型在系統中相互聯系。
3.2 創建數據表
用SQL管理器,創建數據庫:shoppingcart,默認編碼設置為:UTF8
CREATE TABLE `user` (
`USER_ID` int(10) unsigned NOT NULL auto_increment,
`USER_NAME` varchar(45) NOT NULL,
`PASSWORD` varchar(45) NOT NULL,
`EMAIL` varchar(50) NOT NULL,
`ADDRESS` varchar(100) NOT NULL,
`POSTCODE` varchar(20) NOT NULL,
`TELEPHONE` varchar(45) NOT NULL,
`MOBILE` varchar(45) character set utf8 collate utf8_bin NOT NULL,
`LOGIN_TIMES` int(10) unsigned zerofill NOT NULL,
PRIMARY KEY USING BTREE (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `book` (
`BOOK_ID` int(10) unsigned NOT NULL auto_increment,
`ISBN` varchar(45) NOT NULL,
`BOOKNAME` varchar(45) NOT NULL,
`AUTHOR` varchar(45) NOT NULL,
`PUBLISHER` varchar(45) NOT NULL,
`PRICE` double(15,3) NOT NULL default '0.000',
`INTRODUCE` varchar(200) NOT NULL,
PRIMARY KEY (`BOOK_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `order` (
`ORDER_ID` int(10) unsigned NOT NULL auto_increment,
`REMARK` varchar(45) NOT NULL,
`PRICE` double(15,3) NOT NULL default '0.000',
`DATE` datetime NOT NULL,
`RECEIVE_NAME` varchar(45) NOT NULL,
`RECEIVE_ZIP` varchar(45) NOT NULL,
`RECEIVE_ADDRESS` varchar(200) NOT NULL,
`USER_ID` int(10) unsigned NOT NULL,
PRIMARY KEY USING BTREE (`ORDER_ID`),
KEY `ORDER_FK` (`USER_ID`),
CONSTRAINT `ORDER_FK` FOREIGN KEY (`USER_ID`) REFERENCES `user` (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `order_detail` (
`ORDER_ID` int(10) unsigned NOT NULL,
`BOOK_ID` int(10) unsigned NOT NULL,
`COUNT` int(10) unsigned NOT NULL,
`DETAIL_ID` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`DETAIL_ID`),
KEY `DETAIL_FK_BOOKID` (`BOOK_ID`),
KEY `DETAIL_FK_ORDERID` (`ORDER_ID`),
CONSTRAINT `DETAIL_FK_BOOKID` FOREIGN KEY (`BOOK_ID`) REFERENCES `book` (`BOOK_ID`),
CONSTRAINT `DETAIL_FK_ORDERID` FOREIGN KEY (`ORDER_ID`) REFERENCES `order` (`ORDER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3.3 系統模塊設計
3.3.1用戶注冊
此模塊通過如下幾個主要組件來完成:
Register.jsp UserRegAction UserRegServiceImpl UserDAOHibernate
在注冊時,使用Struts的Validator進行了簡單的數據有效性驗證。
3.3.2 瀏覽商品
該模塊通過:display.jspGetAllBookAction BookFindServiceImpl BookDAOHibernate來實現的;
3.3.3 添加商品到購物車
在圖書瀏覽頁面,點擊“加入購物車”即可購買物品。
該模塊由:addcart.jsp AddToCartAction CartServiceImpl BookDAOHibernate VoItem
在display.jsp頁面:
添加到購物車
也是通過這段代碼,將BookId傳入相應Action進行處理。在Action里邊,通過BookId查詢出對應的圖書信息,然后加入到一個List里邊,最后將List加入到Session里
3.3.4 從購物車移除商品
該模塊主要由DelBookFromCartAction CartServiceImpl來完成對應的刪除功能:
3.3.5 提交訂單
該模塊由:orders.jsp PayOrderAction來完成。
3.3.6 系統測試
部署成功后,啟動服務器,在瀏覽器輸入地址:http://localhost: shoppingbook即可測試。 經測試,系統基本符合要求,滿足已有的需求。
4 結束語
1) 熟悉了Struts,Spirng與Hibernate的集成。Struts在整個應用中,充當一個Controller的作用,而Spring充分發揮它的事務管理功能,利用Ioc注入Bean,極大的減輕了對象的耦合。 Hibernate作為持久層的一個工具,將對象映射為一個數據表,開發者要做的只是把一個對象進行Save就行了,其下層則完成由Hibernate來完成,不僅提高了開發效率,也減輕了開發的負擔。在本次實驗中,Struts對Action的控制,我并沒有交由Spirng來管理,但實際上,可以使用Spring的代理器來對Action進行控制。綜合起來說,使用這三個框架,使得應用分層很清晰。也極易進行擴展,維護也很方便。并且好多細節的部分,只要你配置一下就可以輕松實現對應的功能,比如Struts的Validator。但是,對于其他很多更深層的應用,些文還未涉及到,我也希望大家能跟我一起共同研究探討,一起學習。
2) 從系統需求分析、建模設計到最后的模塊開發、部署測試,我都嚴格按照軟件開發的步驟來進行,這不僅能夠增強了我對軟件開發流程的理解,更重要的是,明白了各個步驟在開發過程中的重要性。我認識到,一個軟件的成功與否,絕大部分要歸功與你的需求分析與應用系統的架構設計。如果需求不當,用戶不會滿意;系統架構設計不當,不僅難以維護,更不易于擴展。
3) 整個項目開發過程中,其實碰到了很多問題,這也增加了我解決問題的能力。如何利用現在的資料以及網絡和個人的經驗來快速排除錯誤,也是專業人員的一大素養。而這些只有在開發過程中,才能碰到。并且會使你對相關的技術理解得更加透徹。
參考文獻:
[1] 劉曉華.ZJEE企業級應用開發[M].北京:電子工業出版社,2008.
[2] 陳華軍.ZJEE構建企業級應用解決方案[M].北京:人民郵電出版社,2002.
[3] 何成萬,余秋惠.MVC模型2及軟件框架surtst的研究[J].計算機工程,2002(6).
[4] Tunrer J,Bedell K.SturtsKiekstart[M].孫勇,譯.北京:電子工業出版社,2004.
[5] 鄧玉龍.MVC設計模式在電子商務系統中的研究與應用[J].南京郵電學院學報,2002(2).