畢業(yè)論文-網(wǎng)上拍賣(mài)平臺(tái)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
已閱讀1頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  論文題目 網(wǎng)上拍賣(mài)平臺(tái)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  姓 名 </p><p>  學(xué) 院 </p><p>  專(zhuān) 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù)</p><p><b>  指導(dǎo)教師 </b></p><p><b>

2、  備 注</b></p><p>  2010 年 6 月4日</p><p>  網(wǎng)上拍賣(mài)平臺(tái)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>  2010年6月</b></p><p>  Design and Implementation of Online Auction Platform Syste

3、m</p><p>  Northeastern University Neusoft Institute of Information</p><p><b>  June 2010</b></p><p>  畢業(yè)設(shè)計(jì)(論文)任務(wù)書(shū)</p><p>  網(wǎng)上拍賣(mài)平臺(tái)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p&

4、gt;<b>  摘 要</b></p><p>  拍賣(mài)是購(gòu)買(mǎi)和銷(xiāo)售中的一種主要的交易方式,隨著Internet的日益普及和電子商務(wù)的發(fā)展,網(wǎng)上拍賣(mài)迅速成為一種非?;钴S的C2C電子商務(wù)模式。因?yàn)樗浞掷昧嘶ミB網(wǎng)的特性開(kāi)創(chuàng)了一個(gè)前所未有的巨大市場(chǎng)而被廣泛看好。對(duì)商家而言,以拍賣(mài)的形式在網(wǎng)上采購(gòu)、銷(xiāo)售物品,因?yàn)椴皇軙r(shí)間和空間限制、并且可以有效降低運(yùn)營(yíng)成本并提高效率而具有極大的吸引力。<

5、;/p><p>  本中詳細(xì)介紹了Struts2、Spring、Hibernate三大框架技術(shù),以及它們之間的整合。通過(guò)這三個(gè)框架建立整個(gè)系統(tǒng)結(jié)構(gòu),采用JavaEE的三層結(jié)構(gòu),分為表現(xiàn)層、業(yè)務(wù)邏輯層和數(shù)據(jù)服務(wù)層。三層體系將業(yè)務(wù)規(guī)則、數(shù)據(jù)訪問(wèn)等工作放到中間層處理,客戶端不直接與數(shù)據(jù)庫(kù)交互,而是通過(guò)控制器與中間層建立連接,再由中間層與數(shù)據(jù)庫(kù)交互。</p><p>  三個(gè)框架的整合是通過(guò)Sprin

6、g IoC容器的支持,將Struts2的Action、基于Hibernate的DAO組件都納入Spring容器的管理下,從而避免了在Struts2的Action中直接調(diào)用Hibernate API。</p><p>  本文結(jié)合軟件工程的各個(gè)階段,對(duì)網(wǎng)上拍賣(mài)平臺(tái)系統(tǒng)進(jìn)行分析、設(shè)計(jì),然后編碼實(shí)現(xiàn),最終進(jìn)行測(cè)試,完成了系統(tǒng)的核心功能。</p><p>  關(guān)鍵詞:拍賣(mài)系統(tǒng),框架,三層結(jié)構(gòu)<

7、;/p><p>  Design and Implementation of Online Auction Platform System</p><p><b>  Abstract</b></p><p>  Auction the purchase and sale transactions in a major way, with the

8、increasing popularity of Internet and e-commerce development, online auction quickly became a very active C2C e-commerce model. Because it makes full use of the characteristics of the Internet has created a tremendous an

9、d unprecedented market is widely optimistic. Businessmen are in the form of online auction purchase, sale items, as from time and space constraints, and can reduce operating costs and increase efficiency has grea</p&g

10、t;<p>  The detailed description of the Struts2, Spring, Hibernate three framework technology, and integration between them. Framework through the establishment of the whole system of these three structures, three

11、-tier structure with JavaEE divided into presentation layer, business logic and data layer. Three-tier system will be business rules, data access and so on into the middle layer of processing, the client does not directl

12、y interact with the database, but through the controller and the middle lay</p><p>  Integration of the three frameworks is the support through the Spring IoC container will Struts2 in Action, based on Hiber

13、nate for DAO components into the Spring container management, thus avoiding the Action in Struts2 directly call the Hibernate API.</p><p>  In this paper, all stages of software engineering, on-line auction

14、platform system analysis, design, and coding to achieve the ultimate test and completed the core system.</p><p>  Key words: Auction System, Frame, Three Level Structure</p><p><b>  目 錄&l

15、t;/b></p><p><b>  任務(wù)書(shū)I</b></p><p><b>  摘要II</b></p><p>  AbstractIII</p><p><b>  第1章 緒論1</b></p><p>  1.1 論文研究主要

16、內(nèi)容1</p><p>  1.2 國(guó)內(nèi)外現(xiàn)狀2</p><p>  第2章 關(guān)鍵技術(shù)介紹3</p><p>  2.1 Java語(yǔ)言簡(jiǎn)介3</p><p>  2.2 JSP技術(shù)4</p><p>  2.3 Struts2技術(shù)4</p><p>  2.4 Spring框架5&

17、lt;/p><p>  2.5 Hibernate框架5</p><p>  第3章 系統(tǒng)分析6</p><p>  3.1 構(gòu)架概述6</p><p>  3.1.1 功能構(gòu)架6</p><p>  3.1.2 模塊需求描述6</p><p>  3.2 系統(tǒng)開(kāi)發(fā)環(huán)境8</p&g

18、t;<p>  3.3 系統(tǒng)任務(wù)的可行性分析8</p><p>  3.3.1 技術(shù)可行性8</p><p>  3.3.2 系統(tǒng)安全性分析8</p><p>  第4章 系統(tǒng)設(shè)計(jì)10</p><p>  4.1 設(shè)計(jì)指導(dǎo)思想和原則10</p><p>  4.1.1 指導(dǎo)思想10</p

19、><p>  4.1.2 軟件設(shè)計(jì)原則11</p><p>  4.2 構(gòu)架概述13</p><p>  4.3 系統(tǒng)的功能結(jié)構(gòu)設(shè)計(jì)14</p><p>  4.4 系統(tǒng)控制流程14</p><p>  4.5系統(tǒng)數(shù)據(jù)設(shè)計(jì)16</p><p>  4.6 系統(tǒng)功能順序圖18</p&

20、gt;<p>  4.6.1 用戶登錄18</p><p>  4.6.2 發(fā)布新商品18</p><p>  4.6.3 參與競(jìng)價(jià)19</p><p>  4.7 系統(tǒng)界面設(shè)計(jì)19</p><p>  4.7.1 系統(tǒng)首頁(yè)設(shè)計(jì)19</p><p>  4.7.2 發(fā)布新商品頁(yè)面20</

21、p><p>  4.7.3 管理種類(lèi)頁(yè)面21</p><p>  第5章 系統(tǒng)實(shí)現(xiàn)23</p><p>  5.1 實(shí)現(xiàn)Hibernate PO23</p><p>  5.2 實(shí)現(xiàn)系統(tǒng)的DAO層24</p><p>  5.3 實(shí)現(xiàn)系統(tǒng)Web層24</p><p>  5.4 實(shí)現(xiàn)系統(tǒng)視

22、圖層25</p><p>  第6章 系統(tǒng)測(cè)試26</p><p>  6.1 測(cè)試目的26</p><p>  6.2測(cè)試方案及測(cè)試用例26</p><p>  6.2.1 預(yù)期結(jié)果26</p><p>  6.2.2測(cè)試方案27</p><p><b>  第7章 結(jié)論

23、29</b></p><p><b>  參考文獻(xiàn)30</b></p><p><b>  致謝31</b></p><p><b>  第1章 緒論</b></p><p>  電子商務(wù)(electronic commerce)是計(jì)算機(jī)網(wǎng)絡(luò)所帶來(lái)的又一次革命

24、,它的發(fā)展將形成新的交換體制,產(chǎn)生新的市場(chǎng)規(guī)則,沖破時(shí)間與空間的限制,加快全球市場(chǎng)一體化的進(jìn)程,電子商務(wù)還將有力地推動(dòng)信息和信息服務(wù)業(yè)的發(fā)展。它不僅涉及電子技術(shù)和商業(yè)交易本身,而且涉及到諸如金融、稅務(wù)、教育等其他社會(huì)層面,是一個(gè)與社會(huì)大環(huán)境息息相關(guān)并且具有完整結(jié)構(gòu)體系的系統(tǒng)工程。電子商務(wù)的發(fā)展為網(wǎng)上拍賣(mài)帶來(lái)了勃勃生機(jī),使得網(wǎng)上拍賣(mài)迅速成為一種非常活躍的電子商務(wù)模式。</p><p>  網(wǎng)上拍賣(mài)系統(tǒng)是一個(gè)C2C模

25、式下的電子商務(wù)系統(tǒng),提供了一個(gè)網(wǎng)上拍賣(mài)的市場(chǎng)給買(mǎi)方和賣(mài)方,企業(yè)可以以拍賣(mài)的方式出售自己的產(chǎn)品。擁有商品展示、拍賣(mài)競(jìng)投、用戶注冊(cè)、網(wǎng)上支付、信息反饋和新商品發(fā)布幾項(xiàng)基本功能。使得網(wǎng)上的用戶可以安全、便捷的使用該系統(tǒng)。企業(yè)可以通過(guò)該系統(tǒng)觀察到消費(fèi)者、客戶之間的買(mǎi)賣(mài)情況,從中獲取最直接的市場(chǎng)消息,掌握最詳細(xì)的市場(chǎng)動(dòng)態(tài)。它與傳統(tǒng)的拍賣(mài)模式相比具有以下五個(gè)方面的主要優(yōu)勢(shì)。</p><p>  (1)降低了采購(gòu)價(jià)格,借助ED

26、I企業(yè)能夠完成自動(dòng)的例行采購(gòu),可減少采購(gòu)過(guò)程中人力、印刷和郵寄的費(fèi)用。</p><p> ?。?)采用“零庫(kù)存”管理方式,可大大縮短資金的周轉(zhuǎn)周期。</p><p> ?。?)互聯(lián)網(wǎng)商務(wù)更有利于開(kāi)拓全球市場(chǎng)。</p><p> ?。?)實(shí)現(xiàn)24小時(shí)不問(wèn)斷營(yíng)業(yè),有利于提高營(yíng)業(yè)額。</p><p>  (5)可使用多媒體手段進(jìn)行促銷(xiāo)活動(dòng),可依靠客

27、戶數(shù)據(jù)庫(kù)提供全新個(gè)人服務(wù)。</p><p>  隨著通信技術(shù)和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,網(wǎng)上拍賣(mài)的開(kāi)展勢(shì)在必行。應(yīng)該說(shuō)網(wǎng)上拍賣(mài)發(fā)展的前景十分廣闊,作用越來(lái)越大。文中論述了構(gòu)建網(wǎng)上拍賣(mài)系統(tǒng)的技術(shù)手段及其實(shí)現(xiàn)的關(guān)鍵方法。</p><p>  1.1 論文研究主要內(nèi)容</p><p>  本次畢業(yè)設(shè)計(jì)完成的系統(tǒng)主要實(shí)現(xiàn)的功能包括用戶注冊(cè)、發(fā)布商品、競(jìng)拍商品、查看商品的詳細(xì)信息以

28、及通過(guò)Web方式對(duì)系統(tǒng)的數(shù)據(jù)進(jìn)行管理。網(wǎng)上拍賣(mài)平臺(tái)是為用戶與用戶之間的交易競(jìng)價(jià)而搭建的平臺(tái),負(fù)責(zé)用戶通過(guò)這個(gè)系統(tǒng)自動(dòng)的在異地完成交易而毋須人工來(lái)操作。以高內(nèi)聚低耦合的系統(tǒng)結(jié)構(gòu),靈活處理新增功能服務(wù),主要表現(xiàn)在面向接口編程等軟件架構(gòu)宗旨。從而使得該系統(tǒng)在實(shí)際的應(yīng)用環(huán)境中有足夠的生存能力。</p><p>  軟件結(jié)構(gòu)的好壞直接影響的軟件的質(zhì)量,所以運(yùn)用Struts2、Spring、Hibernate這三個(gè)框架來(lái)建立

29、軟件的框架,嚴(yán)格按照J(rèn)avaEE的MVC三層體系去實(shí)現(xiàn)。</p><p><b>  1.2 國(guó)內(nèi)外現(xiàn)狀</b></p><p>  說(shuō)起拍賣(mài)網(wǎng)站就一定少不了eBay,這家美國(guó)網(wǎng)站締造了一個(gè)美妙的網(wǎng)絡(luò)發(fā)家致富的奇跡。幾年前eBay出現(xiàn)的時(shí)候,它還只是個(gè)小不點(diǎn),但嶄新的商業(yè)思想?yún)s使eBay在短時(shí)間內(nèi)成為網(wǎng)絡(luò)巨人。它帶動(dòng)起網(wǎng)絡(luò)時(shí)代新的行為方式,為買(mǎi)賣(mài)雙方在網(wǎng)上提供交易的場(chǎng)

30、所,供應(yīng)一些別人看不上眼的零碎物品,例如二手電腦,舊書(shū)等等。這個(gè)點(diǎn)子引出了一顆閃耀的新星,如今的eBay已經(jīng)成為拍賣(mài)網(wǎng)站中首屈一指的名牌。</p><p>  本來(lái)市場(chǎng)活躍并非不好,只是目前拍賣(mài)網(wǎng)站的涌現(xiàn)還只能為網(wǎng)絡(luò)經(jīng)濟(jì)帶來(lái)嶄新的概念和廣闊的發(fā)展空間,特別是在國(guó)內(nèi)大陸地區(qū),目前還沒(méi)有以拍賣(mài)為電子商務(wù)中心的網(wǎng)站。除去沒(méi)有意義的新聞炒作,大多數(shù)網(wǎng)站對(duì)網(wǎng)友的影響尚乏善可陳。而現(xiàn)在他們面對(duì)的將是“誰(shuí)會(huì)買(mǎi)”和“怎樣賣(mài)”兩大

31、難題。</p><p>  對(duì)于“網(wǎng)上拍賣(mài)”系統(tǒng),要完成的主要是網(wǎng)上的拍賣(mài)流程,要求對(duì)拍賣(mài)信息的發(fā)布、查詢(xún)都能在線進(jìn)行,而且,對(duì)于用戶滿意的拍賣(mài)品,要求能夠在線出價(jià)。因?yàn)榕馁u(mài)是一種公開(kāi)的投標(biāo)方式,所以競(jìng)價(jià)人在競(jìng)價(jià)時(shí)也應(yīng)該可以查看歷史的競(jìng)價(jià)記錄。對(duì)拍賣(mài)商來(lái)說(shuō),他應(yīng)該可以隨時(shí)掌握拍賣(mài)品的拍賣(mài)情況,所以也應(yīng)該為拍賣(mài)商提供一個(gè)查看競(jìng)價(jià)情況的空間。對(duì)某一拍賣(mài)品,它的拍賣(mài)狀態(tài)應(yīng)該是可以設(shè)置的。</p><

32、p>  第2章 關(guān)鍵技術(shù)介紹</p><p>  本系統(tǒng)的IoC容器使用Spring框架,Spring容器負(fù)責(zé)管理本系統(tǒng)中所有組件,是系統(tǒng)最大的工廠。數(shù)據(jù)的持久化使用Hibernate完成,表現(xiàn)層的MVC框架使用Struts2,這些框架都是目前最流行的輕量級(jí)JavaEE框架。</p><p>  2.1 Java語(yǔ)言簡(jiǎn)介</p><p>  Java是一種語(yǔ)法

33、簡(jiǎn)潔、清晰的語(yǔ)言,它的程序運(yùn)行需要一個(gè)解釋器,也就是所謂的“虛擬機(jī)”。虛擬機(jī)以某種高速算法解釋執(zhí)行Java的面向?qū)ο笳Z(yǔ)言代碼。Java是基于WWW開(kāi)發(fā)的,主要分為客戶端和服務(wù)器端兩大類(lèi)型。Java客戶端軟件包括Applet應(yīng)用小程序,傳統(tǒng)的客戶端圖形界面程序、各類(lèi)加點(diǎn)設(shè)備的客戶端應(yīng)用程序。服務(wù)器端軟件則包括利用Socket套接字或使用封裝了Socket功能函數(shù)的Java高級(jí)網(wǎng)絡(luò)流類(lèi)編寫(xiě)的Server并發(fā)程序、Servlet程序、JSP網(wǎng)

34、頁(yè)程序和服務(wù)器端的EJB組件等。</p><p>  根據(jù)Sun的Java語(yǔ)言白皮書(shū)中的歸納和總結(jié),簡(jiǎn)單地說(shuō),Java語(yǔ)言有如下特點(diǎn):</p><p> ?。?)簡(jiǎn)單(Simple)。程序較小,編寫(xiě)容易,能夠在小型機(jī)器上執(zhí)行,基本的解釋器約為40KB,若加上基本的程序庫(kù),約為215KB。</p><p> ?。?)面向?qū)ο螅∣bject-Oriented)。一個(gè)對(duì)象

35、的狀態(tài)只由對(duì)象自己可知的變量定義。Java把這些變量稱(chēng)為數(shù)據(jù)域或者成員變量。數(shù)據(jù)域?qū)?duì)象來(lái)說(shuō)是私有的,除非顯示地使用關(guān)鍵字來(lái)定義它們的作用域,使它們對(duì)其他類(lèi)可見(jiàn)。一個(gè)對(duì)象的行為是由它上面的操作定義的。在Java中,這些操作被叫做方法。方法可以改變一個(gè)對(duì)象的狀態(tài),創(chuàng)建新對(duì)象,實(shí)現(xiàn)實(shí)用的功能等。</p><p> ?。?)分布式(Distributed)。Java有一個(gè)龐大的程序庫(kù),且容易地與HTTP和FTP等TCP

36、/IP通信協(xié)議相配合。</p><p> ?。?)健壯性(Robust)。有Java所編寫(xiě)的程序,在多數(shù)情況下執(zhí)行穩(wěn)定。Java與C/C++最大不同是Java通過(guò)一個(gè)指針模型來(lái)排除內(nèi)存被覆蓋和毀損數(shù)據(jù)的可能性。</p><p> ?。?)安全性(Secure)。Java是被設(shè)計(jì)用于網(wǎng)絡(luò)及分布式的環(huán)境中,Java擁有數(shù)個(gè)階層的互鎖保護(hù)措施,能有效地防止病毒的侵入和破壞行為的發(fā)生。</p

37、><p>  (6)結(jié)構(gòu)中立(Architecture Neutral)。Java的編譯器產(chǎn)生一種結(jié)構(gòu)中立的目標(biāo)文件格式,這使得編譯碼得以在很多種處理器中執(zhí)行。</p><p>  (7)解釋執(zhí)行(Interpreted)。Java解釋器能直接在任何機(jī)器上執(zhí)行Java位元碼,這對(duì)于縮短程序的開(kāi)發(fā)過(guò)程,有很大的幫助。</p><p> ?。?)高性能(High Perfo

38、rmance)。Java位元碼可迅速地能被轉(zhuǎn)換成機(jī)器碼,從位元碼轉(zhuǎn)換到機(jī)器碼的性能與C和C++幾乎沒(méi)有分別。</p><p> ?。?)多線程的(Multi threaded)。Java語(yǔ)言具有多線程的功能,這對(duì)于交互回應(yīng)能力及即時(shí)執(zhí)行行為是有幫助的。</p><p> ?。?0)動(dòng)態(tài)性(Dynamic)。Java比C或C++語(yǔ)言更具有動(dòng)態(tài)性,更能適應(yīng)時(shí)刻在變的環(huán)境,Java不會(huì)因程序庫(kù)的

39、更新而必須重新編譯程序。</p><p><b>  2.2 JSP技術(shù)</b></p><p>  JSP技術(shù)可以以一種簡(jiǎn)捷而快速的方法生成Web頁(yè)面。使用JSP技術(shù)的Web頁(yè)面可以很容易地顯示動(dòng)態(tài)內(nèi)容。JSP技術(shù)的設(shè)計(jì)目的是使得構(gòu)造基于Web的應(yīng)用程序更加容易和快捷,而這些應(yīng)用程序能夠與各種Web服務(wù)器、應(yīng)用服務(wù)器、瀏覽器和開(kāi)發(fā)工具共同工作。</p>

40、<p>  本系統(tǒng)使用JSP技術(shù)作為表現(xiàn)層技術(shù),它負(fù)責(zé)收集用戶的請(qǐng)求數(shù)據(jù),并將用戶請(qǐng)求數(shù)據(jù)提交到指定的控制器。當(dāng)系統(tǒng)處理完用戶請(qǐng)求后,JSP頁(yè)面還負(fù)責(zé)將處理結(jié)果呈現(xiàn)給用戶。本系統(tǒng)中的JSP頁(yè)面禁用可Java腳本,保證JSP頁(yè)面只能作為系統(tǒng)表現(xiàn)層使用,避免將業(yè)務(wù)邏輯混雜在表現(xiàn)層中。通過(guò)使用Struts2的頁(yè)面標(biāo)簽,可以保證JSP頁(yè)面中不再出現(xiàn)任何小腳本,從而保證了JSP頁(yè)面只有變現(xiàn)邏輯。</p><p>

41、;  2.3 Struts2技術(shù)</p><p>  用戶的所有請(qǐng)求都由Struts2的FilterDispatcher過(guò)濾,通過(guò)這種方式,將系統(tǒng)的所有請(qǐng)求都轉(zhuǎn)入Struts2系統(tǒng)內(nèi),從而保證所有請(qǐng)求都交給Struts2的Action處理。本系統(tǒng)采用了Struts2和Spring的整合策略,當(dāng)Struts2和Spring整合時(shí),使用了Struts2提供的Spring插件,該插件將Struts2的objectFac

42、tory設(shè)置成Spring,這意味著Struts2的Action實(shí)例也是由Spring容器負(fù)責(zé)生成,讓后通過(guò)制定Spring的自動(dòng)裝配策略,從而讓struts2的Action定位Spring容器中的業(yè)務(wù)邏輯組件。</p><p>  因?yàn)镾truts2的objectFactory直接改為了Spring容器,從而讓Struts2的Action直接由容器來(lái)產(chǎn)生,進(jìn)而讓用戶請(qǐng)求進(jìn)入Spring容器內(nèi)部,一旦進(jìn)入了Spr

43、ing IoC容器的內(nèi)部,Ioc容器就負(fù)責(zé)管理所有的業(yè)務(wù)邏輯組件、DAO組件,從而以這種方式將系統(tǒng)中所有組件串接起來(lái)。</p><p>  2.4 Spring框架</p><p>  借助于Spring IoC容器的支持,容器中各組件以松耦合的方式組合在一起,組件與組件之間的依賴(lài)通過(guò)Spring的依賴(lài)注入進(jìn)行管理。系統(tǒng)中的各組件之間面向接口編程,降低了系統(tǒng)異構(gòu)的代價(jià)。</p>

44、<p>  DAO對(duì)象的創(chuàng)建實(shí)際上是使用了Spring的HibernateDaoSupport作為基類(lèi),使得繼承HibernateDaoSupport的DAO對(duì)象實(shí)現(xiàn)更加簡(jiǎn)單,程序開(kāi)發(fā)人員無(wú)需管理Hibernate的SessionFactory、Session等對(duì)象。程序開(kāi)發(fā)者通過(guò)Spring提供的HibernateTemplate完成數(shù)據(jù)庫(kù)操作。</p><p>  事務(wù)采用Spring的聲明式事

45、務(wù)框架。通過(guò)聲明事務(wù),無(wú)需將事務(wù)策略以硬編碼的方式與代碼耦合在一起,而是放在配置文件中聲明。業(yè)務(wù)邏輯組件可以更加專(zhuān)注于業(yè)務(wù)的實(shí)現(xiàn),從而簡(jiǎn)化開(kāi)發(fā)。同時(shí),聲明事務(wù)降低了不同事務(wù)策略的切換代價(jià)。</p><p>  2.5 Hibernate框架</p><p>  Hibernate作為O/R Mapping框架使用,Hibernate提供的O/R Mapping功能簡(jiǎn)化了數(shù)據(jù)庫(kù)訪問(wèn),Hibe

46、rnate在JDBC層上提供了更好的封裝,以面向?qū)ο蟮姆绞讲僮鲾?shù)據(jù)庫(kù),更加符合面向?qū)ο蟪绦蛟O(shè)計(jì)的思路。</p><p>  然而Hibernate的內(nèi)置標(biāo)識(shí)生成器根據(jù)數(shù)據(jù)庫(kù)的不同而選用不同的方法,在MySQL中把ID設(shè)為auto_increment類(lèi)型,MS SQL Server把ID設(shè)為identity類(lèi)型,數(shù)據(jù)庫(kù)就會(huì)自動(dòng)為主鍵賦值,但是本程序中使用的是Oracle數(shù)據(jù)庫(kù),因此在Oracle中是從序列(Sequ

47、ence)中獲取自動(dòng)增長(zhǎng)的標(biāo)識(shí)符。</p><p>  Hibernate以?xún)?yōu)雅、靈活的方法操作數(shù)據(jù)庫(kù),無(wú)需開(kāi)發(fā)者編寫(xiě)繁瑣的SQL語(yǔ)句,執(zhí)行冗長(zhǎng)的多表查詢(xún),而通過(guò)對(duì)象與對(duì)象之間的關(guān)聯(lián)操作數(shù)據(jù)庫(kù)。Hibernate為底層的DAO對(duì)象的實(shí)現(xiàn)提供了支持。</p><p><b>  第3章 系統(tǒng)分析</b></p><p><b>  3.

48、1 構(gòu)架概述</b></p><p>  3.1.1 功能構(gòu)架</p><p>  根據(jù)需求調(diào)研結(jié)果確定本系統(tǒng)主要包括以下功能模塊,如圖3.1所示。</p><p>  圖3.1 系統(tǒng)體系結(jié)構(gòu)</p><p>  3.1.2 模塊需求描述</p><p><b> ?。?)用戶管理</b&g

49、t;</p><p>  客戶第一次登錄需要填寫(xiě)注冊(cè)信息,由于拍賣(mài)行業(yè)的特殊性故此每位客戶必須填寫(xiě)真實(shí)信息。對(duì)于以注冊(cè)用戶只需登錄即可進(jìn)入系統(tǒng)??蛻粼谙到y(tǒng)中有兩個(gè)角色。一種是買(mǎi)家,另外一種是賣(mài)家。每個(gè)客戶可以是其中一種角色,也可以是兩種。如圖3.2所示。</p><p>  用管理分為用戶注冊(cè)與用戶登錄,用戶注冊(cè)用例起始于用戶想要注冊(cè)成為會(huì)員,當(dāng)用戶點(diǎn)擊用戶注冊(cè)按鈕時(shí),系統(tǒng)將自動(dòng)跳轉(zhuǎn)到用戶

50、注冊(cè)頁(yè),用戶按要求填寫(xiě)完注冊(cè)信息點(diǎn)擊提交按鈕,系統(tǒng)則成功響應(yīng),完成注冊(cè)。</p><p>  用戶登錄用例起始于用戶想要登錄該系統(tǒng),當(dāng)用戶正確輸入用戶名與密碼后,點(diǎn)擊登錄按鈕,系統(tǒng)響應(yīng)用戶的請(qǐng)求,將用戶的Session記錄,同時(shí)提示成功登錄。</p><p>  圖3.2 用戶管理用例圖</p><p><b> ?。?)發(fā)布新商品</b>&l

51、t;/p><p>  當(dāng)用戶正常登錄系統(tǒng)后,就可以添加自己的拍賣(mài)物品了,添加拍賣(mài)物品是本系統(tǒng)中需要處理表單域比較多的場(chǎng)景。而且添加物品時(shí),應(yīng)該能讓用戶選擇所添加物品所屬的種類(lèi),這要求進(jìn)入添加物品表單頁(yè)之前,先使用一個(gè)取得所有物品種類(lèi)。如圖3.3所示。</p><p>  發(fā)布新商品用例起始于,用戶以賣(mài)家的身份想要添加拍賣(mài)的物品,當(dāng)用戶按規(guī)定填寫(xiě)好要發(fā)布商品的信息后,點(diǎn)擊發(fā)布新商品按鈕,系統(tǒng)則成

52、功響應(yīng)用戶的請(qǐng)求,將其信息正確的添加到后臺(tái)數(shù)據(jù)庫(kù)。</p><p>  圖3.3 發(fā)布新商品用例圖</p><p><b> ?。?)用戶競(jìng)價(jià)</b></p><p>  處理用戶競(jìng)價(jià)是系統(tǒng)中比較復(fù)雜的一個(gè)模塊,涉及到用戶表、物品表,如果用戶需要對(duì)指定物品進(jìn)行競(jìng)價(jià),必須先進(jìn)入查看物品詳細(xì)信息的頁(yè)面,然后由bid.action進(jìn)行處理,完成對(duì)物品

53、表的狀態(tài)、最后競(jìng)價(jià)人等信息的更新。如圖3.4所示。</p><p>  競(jìng)價(jià)管理用例是用戶以買(mǎi)家的身份來(lái)實(shí)現(xiàn)的一個(gè)模塊,該用例起始于用戶想要在某個(gè)商品完成對(duì)該商品的出價(jià)。當(dāng)用戶填寫(xiě)高于當(dāng)前物品競(jìng)價(jià)的最高價(jià)格時(shí),點(diǎn)擊競(jìng)價(jià)按鈕,系統(tǒng)正確的響應(yīng)該用戶的請(qǐng)求,并在數(shù)據(jù)庫(kù)中修改物品類(lèi)的相應(yīng)元素。</p><p>  圖3.4 用戶參與競(jìng)價(jià)用例圖</p><p><b&g

54、t; ?。?)其它業(yè)務(wù)功能</b></p><p>  其它業(yè)務(wù)功能見(jiàn)表3.1。</p><p>  表3.1 其它業(yè)務(wù)功能</p><p>  3.2 系統(tǒng)開(kāi)發(fā)環(huán)境 </p><p>  硬件環(huán)境:450*2MHZ/40G/1024MB/40G/</p><p>  軟件環(huán)境:Windows XP/MyE

55、clipse6.0/tomcat6.0/ORACLE 9I/</p><p>  3.3 系統(tǒng)任務(wù)的可行性分析</p><p>  3.3.1 技術(shù)可行性</p><p>  本系統(tǒng)采用Struts2+Hibernate+Spring三個(gè)框架整合,采用Java作為開(kāi)發(fā)語(yǔ)言,數(shù)據(jù)庫(kù)采用Oracle,前臺(tái)的頁(yè)面使用JSP。這些軟件和技術(shù)都已經(jīng)非常的成熟,軟件的波動(dòng)性很小

56、。</p><p> ?。?)典型的J2EE三層結(jié)構(gòu),分為表現(xiàn)層、中間層(業(yè)務(wù)邏輯層)和數(shù)據(jù)服務(wù)層。三層體系將業(yè)務(wù)規(guī)則、數(shù)據(jù)訪問(wèn)及合法性校驗(yàn)等工作放在中間層處理??蛻舳瞬恢苯优c數(shù)據(jù)庫(kù)交互,而是通過(guò)組件與中間層建立連接,再由中間層與數(shù)據(jù)庫(kù)交互。</p><p>  一個(gè)良好的框架可以讓開(kāi)發(fā)人員減輕重新建立解決復(fù)雜問(wèn)題方案的負(fù)擔(dān)和精力;它可以被擴(kuò)展以進(jìn)行內(nèi)部的定制化;并且有強(qiáng)大的用戶社區(qū)來(lái)支持

57、它。框架通常能很好的解決一個(gè)問(wèn)題。然而,你的應(yīng)用是分層的,可能每一個(gè)層都需要各自的框架,然而這三個(gè)框架正是開(kāi)發(fā)人員所需要的。</p><p> ?。?)表現(xiàn)層是傳統(tǒng)的JSP技術(shù),自1999年問(wèn)世以來(lái),經(jīng)過(guò)多年的發(fā)展,其廣泛的應(yīng)用和穩(wěn)定的表現(xiàn),為其作為表現(xiàn)層技術(shù)打下了堅(jiān)實(shí)的基礎(chǔ)。JSP技術(shù)可以以一種簡(jiǎn)捷而快速的方法生成Web頁(yè)面。使用JSP技術(shù)的Web頁(yè)面可以很容易地顯示動(dòng)態(tài)內(nèi)容。JSP技術(shù)的設(shè)計(jì)目的是使得構(gòu)造基于

58、Web的應(yīng)用程序更加容易和快捷,而這些應(yīng)用程序能夠與各種Web服務(wù)器、應(yīng)用服務(wù)器、瀏覽器和開(kāi)發(fā)工具共同工作。</p><p> ?。?)Oracle的關(guān)系數(shù)據(jù)庫(kù)是世界第一個(gè)支持SQL語(yǔ)言的數(shù)據(jù)庫(kù),經(jīng)歷過(guò)20多年的發(fā)展,由于其優(yōu)越的安全性、完整性、穩(wěn)定性和支持多種操作系統(tǒng)、多種硬件平臺(tái)等特點(diǎn),得到了廣泛的應(yīng)用。加上Hibernate對(duì)Oracle的支持,使得該系統(tǒng)的有更足夠的技術(shù)支持。</p><

59、;p>  3.3.2 系統(tǒng)安全性分析</p><p>  (1)本系統(tǒng)除了瀏覽商品信息外,進(jìn)行其他的操作必須要經(jīng)過(guò)登錄模塊,從數(shù)據(jù)庫(kù)中驗(yàn)證是否存在該用戶的信息。用戶每次發(fā)出請(qǐng)求都是經(jīng)過(guò)Struts2的攔截器的過(guò)濾,攔截器攔截用戶Session,判斷Session中是否保存了當(dāng)前用戶ID,如果保存了用戶ID,即該用戶已經(jīng)登錄,否則沒(méi)有登陸。</p><p> ?。?)添加服務(wù)器端校驗(yàn)使

60、得侵入者不容易侵入該系統(tǒng),很多惡意的侵入者,并不是通過(guò)瀏覽器來(lái)破解某個(gè)應(yīng)用,他會(huì)采用更底層的Socket通信進(jìn)行侵入。然而通過(guò)校驗(yàn)文件可以提高該系統(tǒng)的安全性。校驗(yàn)文件時(shí)一個(gè)XML配置文件,該文件指定了Action的屬性必須滿足怎樣的規(guī)則。</p><p><b>  第4章 系統(tǒng)設(shè)計(jì)</b></p><p>  4.1 設(shè)計(jì)指導(dǎo)思想和原則</p><

61、;p>  4.1.1 指導(dǎo)思想</p><p> ?。?)系統(tǒng)設(shè)計(jì)思想決定了一個(gè)系統(tǒng)設(shè)計(jì)的成敗也從某種角度反映了一個(gè)系統(tǒng)的生命力。此系統(tǒng)采用了三層架構(gòu)的設(shè)計(jì)思想做到了功能的獨(dú)立化和模塊化。</p><p> ?。?)JSP是嵌入了Java代碼的HTML,兩種標(biāo)記混雜在一定程序上使開(kāi)發(fā)更為方便,但也存在混雜的代碼容易出錯(cuò),且出錯(cuò)時(shí)不方便使用開(kāi)發(fā)工具來(lái)設(shè)置斷點(diǎn)排查。三層架構(gòu)設(shè)計(jì)使用Jav

62、aBean專(zhuān)注開(kāi)發(fā)邏輯層,JSP頁(yè)面專(zhuān)注開(kāi)發(fā)應(yīng)用表達(dá)層,最大限度地提高了開(kāi)發(fā)效率。</p><p>  同時(shí)系統(tǒng)將涉及復(fù)雜操作的不同功能獨(dú)立出來(lái),作為一個(gè)模塊來(lái)設(shè)計(jì),在需要用到特定功能的程序中,僅僅做出調(diào)用即可。這種做法不僅避免了程序代碼中一些不必要的重復(fù)更重要的是使整個(gè)系統(tǒng)層次結(jié)構(gòu)更為清晰,方便了以后系統(tǒng)功能的增加,縮減了開(kāi)發(fā)成本。</p><p> ?。?)此次設(shè)計(jì)采用“用戶界面-業(yè)務(wù)

63、處理層-數(shù)據(jù)存儲(chǔ)層”的三層架構(gòu)設(shè)計(jì),它的工作原理如圖4.1所示。</p><p>  圖4.1 三層結(jié)構(gòu)系統(tǒng)功能圖</p><p>  采用三層架構(gòu)以后,用戶界面層通過(guò)統(tǒng)一的接口向業(yè)務(wù)層發(fā)送請(qǐng)求,業(yè)務(wù)層按自己的邏輯規(guī)則將請(qǐng)求處理后進(jìn)行數(shù)據(jù)庫(kù)操作,然后將數(shù)據(jù)庫(kù)返回的數(shù)據(jù)封裝成類(lèi)的形式返回給用戶界面層。這樣用戶界面層甚至可以不知道數(shù)據(jù)庫(kù)的結(jié)構(gòu),它只要維護(hù)與業(yè)務(wù)層之間的接口即可。這種方式在一定程

64、序上增加了數(shù)據(jù)庫(kù)的安全性,同時(shí)也降低了對(duì)用戶界面層開(kāi)發(fā)人員的要求,因?yàn)樗静恍枰M(jìn)行任何數(shù)據(jù)庫(kù)操作。</p><p>  4.1.2 軟件設(shè)計(jì)原則</p><p> ?。?)目前,最具代表性的電子商務(wù)有以下幾種形式:B2B企業(yè)之間的業(yè)務(wù),如采購(gòu)、分銷(xiāo)、服務(wù)等業(yè)務(wù);B2C企業(yè)與消費(fèi)者之間的交易,如網(wǎng)上售購(gòu)、網(wǎng)上教育、網(wǎng)上其他服務(wù)等;G2C政府與消費(fèi)者或市民之間的業(yè)務(wù),如個(gè)人報(bào)稅、養(yǎng)老金、特

65、殊補(bǔ)貼、各種救濟(jì)金發(fā)放等;C2C消費(fèi)者對(duì)消費(fèi)者,如網(wǎng)上交流、網(wǎng)上房屋交易、網(wǎng)上跳蚤市場(chǎng)交易等。</p><p>  本系統(tǒng)研究開(kāi)發(fā)定位在實(shí)現(xiàn)完善在線拍賣(mài)交易模式上,主要是實(shí)現(xiàn)一個(gè)提供在線拍賣(mài)交易的平臺(tái),因此既不站在一般的商品供應(yīng)商,也不站在一般的商品采購(gòu)商的角度,從某一點(diǎn)來(lái)說(shuō),是基于第三方的拍賣(mài)系統(tǒng)。對(duì)系統(tǒng)而言,所有的用戶都是顧客(Customer),所以是一個(gè) C2C 模式的電子商務(wù)拍賣(mài)交易系統(tǒng)。目前主要面對(duì)的

66、顧客是一般的消費(fèi)者(學(xué)生)。因此設(shè)計(jì)出的系統(tǒng)是基于 C2C 的電子商務(wù)模式開(kāi)展的。</p><p> ?。?)反拍賣(mài)形式(在本文中等價(jià)于拍賣(mài)方式、拍賣(mài)的競(jìng)價(jià)方式)主要有三種:①增價(jià)拍賣(mài)。又稱(chēng)英國(guó)式拍賣(mài)。這是最常見(jiàn)的一種拍賣(mài)方式。拍賣(mài)時(shí),由拍賣(mài)人宣布預(yù)定的最低價(jià),然后竟買(mǎi)者相繼出價(jià)競(jìng)購(gòu)。拍賣(mài)行可規(guī)定每次加價(jià)的金額限度。至某一價(jià)格,經(jīng)拍賣(mài)人三次提示而無(wú)人加價(jià)時(shí),則為最高價(jià),由拍賣(mài)人擊槌表示成交。如果貨主與拍賣(mài)人事先商

67、定了最低限價(jià),而竟買(mǎi)人的叫價(jià)低于該價(jià),拍賣(mài)人可終止拍賣(mài)。②減價(jià)拍賣(mài)。又稱(chēng)荷蘭式拍賣(mài),源于世界上最大的荷蘭花卉拍賣(mài)市場(chǎng),由拍賣(mài)人先開(kāi)出最高價(jià)格,然后漸次降低價(jià)格,直到有人表示接受,即達(dá)成交易。這種拍賣(mài)方式買(mǎi)主之間無(wú)反復(fù)競(jìng)價(jià)的過(guò)程,且買(mǎi)主一旦表示接受,不能再行撤銷(xiāo)。由于減價(jià)拍賣(mài)成交迅速,特別適合于數(shù)量大,批次多的鮮活商品。③密封遞價(jià)拍賣(mài)。又稱(chēng)招標(biāo)式拍賣(mài)。由買(mǎi)主在規(guī)定的時(shí)間內(nèi)將密封的報(bào)價(jià)單(也稱(chēng)標(biāo)書(shū))遞交拍賣(mài)人,由拍賣(mài)人選擇買(mǎi)主。這種拍賣(mài)方式

68、,和上述兩種方式相比較,有以下兩個(gè)特點(diǎn):一是除價(jià)格條件外,還可能有其他交易條件需要考慮:二是可以采取公開(kāi)開(kāi)標(biāo)方式,也可以采取不公開(kāi)開(kāi)標(biāo)方式。拍賣(mài)大型設(shè)施或數(shù)量較大的庫(kù)存物資或政府罰沒(méi)物資時(shí),可能采用這種方式。本系統(tǒng)選擇的拍賣(mài)形式是增價(jià)拍賣(mài)。</p><p> ?。?)和C/S結(jié)構(gòu)相比,B/S結(jié)構(gòu)受限于網(wǎng)絡(luò)帶寬不利于進(jìn)行大數(shù)據(jù)量的統(tǒng)計(jì)分析,網(wǎng)絡(luò)傳輸存在潛在的安全問(wèn)題,還有用戶界面不及C/S結(jié)構(gòu)友好等等,但隨著網(wǎng)絡(luò)帶

69、寬和網(wǎng)絡(luò)應(yīng)用的發(fā)展,加上AJAX技術(shù)的流行,使得現(xiàn)在越來(lái)越多的MIS系統(tǒng)或基于MIS系統(tǒng)的專(zhuān)業(yè)化應(yīng)用系統(tǒng)都開(kāi)始傾向于采用B/S結(jié)構(gòu)進(jìn)行設(shè)計(jì),充分利用B/S結(jié)構(gòu)的優(yōu)點(diǎn)。但是,要充分發(fā)揮Web應(yīng)用的內(nèi)在潛力,挖掘應(yīng)用深度和擴(kuò)大適應(yīng)能力,需要采用先進(jìn)的應(yīng)用架構(gòu)和以實(shí)用為根本準(zhǔn)則,使得系統(tǒng)既能滿足業(yè)務(wù)需求,又能適應(yīng)將來(lái)發(fā)展需要。因此,在開(kāi)發(fā)Web應(yīng)用系統(tǒng)時(shí)需要盡量遵循Web應(yīng)用系統(tǒng)設(shè)計(jì)原則。</p><p>  實(shí)用性原

70、則:這是所有應(yīng)用軟件最基本的原則,直接衡量系統(tǒng)的成敗,每一個(gè)提交到用戶手中的系統(tǒng)都應(yīng)該是實(shí)用的,能解決用戶的實(shí)際問(wèn)題,否則該設(shè)計(jì)就是垃圾。</p><p>  適應(yīng)性和可擴(kuò)展性原則:系統(tǒng)需要具備一定的適應(yīng)能力,特別是Web應(yīng)用要能適應(yīng)于多種運(yùn)行環(huán)境,來(lái)應(yīng)對(duì)未來(lái)變化的環(huán)境和需求。可擴(kuò)展性主要體現(xiàn)在系統(tǒng)易于擴(kuò)展,例如可以采用分布式設(shè)計(jì)、系統(tǒng)結(jié)構(gòu)模塊化設(shè)計(jì),系統(tǒng)架構(gòu)可以根據(jù)網(wǎng)絡(luò)環(huán)境和用戶的訪問(wèn)量而適時(shí)調(diào)整,從某種程度上

71、說(shuō),這也是系統(tǒng)的適應(yīng)性。</p><p>  可靠性原則:系統(tǒng)應(yīng)該是可靠的,在出現(xiàn)異常的時(shí)候應(yīng)該有人性化的異常信息方便用戶理解原因,或采取適當(dāng)?shù)膽?yīng)對(duì)方案,在設(shè)計(jì)業(yè)務(wù)量比較大的時(shí)候可采用先進(jìn)的嵌入式技術(shù)來(lái)保證業(yè)務(wù)的流暢運(yùn)行。</p><p>  可維護(hù)性和可管理性原則:Web系統(tǒng)應(yīng)該有一個(gè)完善的管理機(jī)制,而可維護(hù)性和可管理性是重要的兩個(gè)指標(biāo)。</p><p>  安全

72、性原則:現(xiàn)在的計(jì)算機(jī)病毒幾乎都來(lái)自于網(wǎng)絡(luò),Web應(yīng)用應(yīng)盡量采用五層安全體系,即網(wǎng)絡(luò)層安全、系統(tǒng)安全、用戶安全、用戶程序的安全和數(shù)據(jù)安全。系統(tǒng)必須具備高可靠性,對(duì)使用信息進(jìn)行嚴(yán)格的權(quán)限管理。</p><p>  總體規(guī)劃、分層實(shí)施原則:在開(kāi)始設(shè)計(jì)之前應(yīng)該對(duì)Web系統(tǒng)進(jìn)行總體設(shè)計(jì),然后在總體設(shè)計(jì)指導(dǎo)下分步開(kāi)發(fā)?;贘2EE技術(shù)的應(yīng)用系統(tǒng)是一個(gè)融合了多元信息的集成系統(tǒng),現(xiàn)在一般都采用分層開(kāi)發(fā):表現(xiàn)層、控制層、業(yè)務(wù)邏輯層

73、、模型層、數(shù)據(jù)訪問(wèn)層等,在適應(yīng)系統(tǒng)需求的準(zhǔn)則下,設(shè)計(jì)低耦合的分層結(jié)構(gòu),利于團(tuán)隊(duì)成員的分工協(xié)作,提高開(kāi)發(fā)效率,降低項(xiàng)目風(fēng)險(xiǎn),實(shí)現(xiàn)各個(gè)模塊的功能設(shè)計(jì),完成整個(gè)系統(tǒng)的開(kāi)發(fā)。</p><p> ?。?)軟件設(shè)計(jì)的工作是創(chuàng)造性的技能,對(duì)于高效的軟件工程,良好的設(shè)計(jì)是關(guān)鍵,一個(gè)設(shè)計(jì)得好的軟件系統(tǒng)應(yīng)該是可直接實(shí)現(xiàn)和易于維護(hù)、易懂和可靠的。設(shè)計(jì)得不好的系統(tǒng),盡管可以工作,但很可能維護(hù)起來(lái)費(fèi)用昂貴、測(cè)試?yán)щy和不可靠,因此,設(shè)計(jì)階段

74、是軟件開(kāi)發(fā)過(guò)程中最重要的階段。在將軟件的需求規(guī)約轉(zhuǎn)換為軟件設(shè)計(jì)的過(guò)程中,軟件的設(shè)計(jì)人員通常采用抽象與逐步求精、分而治之、模塊化、封裝和信息隱藏、高內(nèi)聚和低耦合、關(guān)注點(diǎn)分離、策略和實(shí)現(xiàn)的分離、接口和實(shí)現(xiàn)分離與模塊獨(dú)立原則。</p><p><b>  4.2 構(gòu)架概述</b></p><p>  本系統(tǒng)嚴(yán)格采用JavaEE的三層結(jié)構(gòu),分為表現(xiàn)出、業(yè)務(wù)邏輯層和數(shù)據(jù)服務(wù)層。

75、三層體系將業(yè)務(wù)規(guī)則、數(shù)據(jù)訪問(wèn)等工作放到中間層處理,客戶端不直接與數(shù)據(jù)庫(kù)交互,而是通過(guò)控制器與中間層建立連接,再由中間層與數(shù)據(jù)庫(kù)交互。</p><p>  表現(xiàn)層禁止JSP內(nèi)嵌Java腳本,因而比較簡(jiǎn)單,JSP頁(yè)面使用Struts2標(biāo)簽來(lái)顯示數(shù)據(jù),生成頁(yè)面顯示效果。</p><p>  中間層采用Struts2+Spring+Hibernate,為了分離控制層與業(yè)務(wù)邏輯層,又可細(xì)分為:(1)

76、Web層,就是MVC模式里面的“C”(Controller),負(fù)責(zé)表現(xiàn)層與業(yè)務(wù)邏輯層的交互,調(diào)用業(yè)務(wù)邏輯層,并將業(yè)務(wù)數(shù)據(jù)返回給表現(xiàn)層來(lái)顯示。MVC框架采用流行的Struts2。</p><p> ?。?)Service層(業(yè)務(wù)邏輯層),負(fù)責(zé)實(shí)現(xiàn)業(yè)務(wù)邏輯,多DAO對(duì)象進(jìn)行正面模式的封裝。</p><p> ?。?)DAO層(數(shù)據(jù)訪問(wèn)對(duì)象層),負(fù)責(zé)與持久化對(duì)象交互,封裝了數(shù)據(jù)的增、刪、改、查原

77、子操作。</p><p>  (4)PO層(持久化對(duì)象層),通過(guò)實(shí)體/關(guān)系映射工具將關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)映射成對(duì)象,負(fù)責(zé)攔截,然后通過(guò)Spring提供的自動(dòng)裝配功能,定位Spring容器中的業(yè)務(wù)邏輯組件,調(diào)用業(yè)務(wù)邏輯組件方法來(lái)處理用戶請(qǐng)求。</p><p>  數(shù)據(jù)服務(wù)層使用Oracle數(shù)據(jù)庫(kù)存放數(shù)據(jù)。</p><p>  系統(tǒng)的總體架構(gòu)如圖4.2所示。</p&

78、gt;<p><b>  圖4.2系統(tǒng)架構(gòu)圖</b></p><p>  隨著網(wǎng)絡(luò)應(yīng)用技術(shù)的成熟,針對(duì)這一系列的問(wèn)題,基于多層框架(三層或以上)的B/S(Browser/Server)結(jié)構(gòu)應(yīng)運(yùn)而生。典型情況下,由表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)層各自獨(dú)立組成所謂的“三層架構(gòu)”。其中,數(shù)據(jù)層又叫企業(yè)信息系統(tǒng)層、集成層或者持久化層。本系統(tǒng)所運(yùn)用的正是B/S的結(jié)構(gòu)。</p>&

79、lt;p>  4.3 系統(tǒng)的功能結(jié)構(gòu)設(shè)計(jì)</p><p>  每個(gè)身份都必須經(jīng)過(guò)登錄系統(tǒng)才可以得到一定的權(quán)限許可進(jìn)入客戶界面后,用戶可以有信息設(shè)置,競(jìng)拍,拍賣(mài)等服務(wù)可供選擇。貨主也可以添加一些新的貨物到自己的拍賣(mài)品中,同時(shí)設(shè)置他們的屬性。客戶在查找到自己所需的貨物時(shí)可以進(jìn)行拍賣(mài)。同時(shí)為了維護(hù)客戶的個(gè)人隱私和可能更替的個(gè)人信息,系統(tǒng)提供給客戶相關(guān)的設(shè)置功能,方便用戶修改信息。具體模塊圖如4.3所示。</

80、p><p><b>  圖4.3用戶模塊圖</b></p><p>  4.4 系統(tǒng)控制流程</p><p>  系統(tǒng)中用戶可以是買(mǎi)家也可以是賣(mài)家,買(mǎi)家最核心的功能是參與競(jìng)拍,賣(mài)家最核心的功能是發(fā)布新商品。</p><p> ?。?)參與競(jìng)拍:客戶查找到自己想要的貨物時(shí),可以對(duì)其進(jìn)行競(jìng)拍。進(jìn)入貨物競(jìng)拍模塊時(shí),系統(tǒng)將提供給客戶

81、該貨物的詳細(xì)信息,包括貨物來(lái)源,低價(jià),開(kāi)始競(jìng)拍日期,競(jìng)拍截至日期,以及之前其他客戶所給出的拍賣(mài)價(jià)格。為了防止有客戶惡意拍賣(mài),如每次競(jìng)價(jià)都只在原來(lái)基礎(chǔ)上加很小的金額或者惡意起哄等等。所以系統(tǒng)對(duì)不同價(jià)格段的貨物限定不同的最少添加額,以及用戶對(duì)同一貨物競(jìng)拍次數(shù)的限制性。該限制性與客戶信譽(yù)度,客戶總交易次數(shù)以及總交易額相關(guān)。對(duì)有惡意行為的客戶將減少其對(duì)同一貨物的競(jìng)拍次數(shù),而對(duì)于記錄良好的客戶則適當(dāng)添加其對(duì)同一貨物的競(jìng)拍次數(shù),直到一特定值??蛻粢?/p>

82、可以在該模塊中等到自己正在拍賣(mài)的其他貨物信息以及自己已經(jīng)拍買(mǎi)到的貨物及相關(guān)信息。</p><p>  (2)發(fā)布新商品:客戶有想要拍買(mǎi)掉的東西時(shí),可以放到該模塊中進(jìn)行拍賣(mài)。必須填寫(xiě)貨物名稱(chēng),起拍價(jià)等相關(guān)信息。具體流程圖如圖4.4所示。</p><p><b>  圖4.4系統(tǒng)流程圖</b></p><p><b>  4.5系統(tǒng)數(shù)據(jù)設(shè)

83、計(jì)</b></p><p>  (1)用戶表:系統(tǒng)中的用戶實(shí)體、競(jìng)價(jià)實(shí)體都是存在一對(duì)多的關(guān)聯(lián)關(guān)系,甚至和物品之間存在兩種一對(duì)多的關(guān)聯(lián)關(guān)系(一種是所屬,一種是贏?。?,但因?yàn)橛脩舳际且坏哪嵌?,所以無(wú)需保存外鍵,只需要保存用戶自身屬性即可。如表4.1所示為用戶信息表。</p><p><b>  表4.1用戶信息表</b></p><p>

84、; ?。?)狀態(tài)表:對(duì)于系統(tǒng)中的物品狀態(tài)而言,它僅和物品存在一對(duì)多關(guān)聯(lián)關(guān)系,這種一對(duì)多的關(guān)聯(lián)關(guān)系,可以通過(guò)外鍵來(lái)實(shí)現(xiàn),而外鍵是保存在多的一端的數(shù)據(jù)表里的。故物品狀態(tài)的數(shù)據(jù)非常簡(jiǎn)單,僅需要兩個(gè)字段:狀態(tài)ID和狀態(tài)名。如表4.2所示為物品狀態(tài)表。</p><p><b>  表4.2物品狀態(tài)表</b></p><p> ?。?)種類(lèi)表:與物品狀態(tài)實(shí)體相似的是,系統(tǒng)中的物品

85、種類(lèi)也只和物品存在一對(duì)多的關(guān)聯(lián)關(guān)系,這種關(guān)聯(lián)關(guān)系也是通過(guò)在物品中保存外鍵來(lái)進(jìn)行約束的。而物品種類(lèi)表只需保存物品種類(lèi)名、種類(lèi)描述兩個(gè)字段。如表4.3所示為種類(lèi)表。</p><p><b>  表4.3種類(lèi)表</b></p><p>  (4)物品表:系統(tǒng)的核心就是拍賣(mài)物品,拍賣(mài)物品和用戶之間存在兩種多對(duì)一得關(guān)聯(lián)關(guān)系,這兩種多對(duì)一的關(guān)聯(lián)關(guān)系都需要在物品表中保存外鍵。除此之

86、外,拍賣(mài)物品還和競(jìng)價(jià)記錄之間存在一對(duì)多的關(guān)聯(lián)關(guān)系,但這種關(guān)聯(lián)關(guān)系通過(guò)在競(jìng)價(jià)記錄表中保留外鍵實(shí)現(xiàn),故拍賣(mài)物品表里只需保存物品屬性,以及兩個(gè)與拍賣(mài)用戶關(guān)聯(lián)的外鍵。拍賣(mài)物品還和物品種類(lèi)實(shí)體、物品狀態(tài)之間存在多對(duì)一的關(guān)聯(lián)關(guān)系,這種關(guān)聯(lián)關(guān)系都是通過(guò)在物品表中增加外鍵來(lái)實(shí)現(xiàn)的。如表4.4所示為物品表。</p><p><b>  表4.4物品表</b></p><p> ?。?)

87、競(jìng)價(jià)記錄表:系統(tǒng)的競(jìng)價(jià)記錄實(shí)體則和拍賣(mài)物品、系統(tǒng)用戶存在多對(duì)一的關(guān)聯(lián)關(guān)系,故需要在競(jìng)價(jià)記錄表中增加兩列外鍵。如表4.5所示為競(jìng)價(jià)表。</p><p><b>  表4.5競(jìng)價(jià)表</b></p><p>  4.6 系統(tǒng)功能順序圖</p><p>  4.6.1 用戶登錄</p><p>  用戶是該系統(tǒng)的基本模塊其順序圖

88、如圖4.5所示。</p><p>  圖4.5用戶登錄順序圖</p><p>  4.6.2 發(fā)布新商品</p><p>  發(fā)布商品成功后,還會(huì)跳轉(zhuǎn)到商品顯示的頁(yè)面所以其順序圖如圖4.6所示。</p><p>  圖4.6 發(fā)布新商品順序圖</p><p>  4.6.3 參與競(jìng)價(jià)</p><p&

89、gt;  用戶瀏覽到自己想要競(jìng)價(jià)的商品時(shí),可以對(duì)該商品進(jìn)行競(jìng)價(jià),其順序圖如圖4.7所示。</p><p>  圖4.7 參與競(jìng)價(jià)順序圖</p><p>  4.7 系統(tǒng)界面設(shè)計(jì)</p><p>  4.7.1 系統(tǒng)首頁(yè)設(shè)計(jì)</p><p>  首頁(yè)是一個(gè)系統(tǒng)的靈魂,通過(guò)對(duì)首頁(yè)的第一印象就能了解到整個(gè)網(wǎng)站。此拍賣(mài)的首頁(yè)由上中下三部分組成,頁(yè)面的

90、頭部由top.jsp生成,尾部由copyright.jsp生成。這樣做的好處是能夠減少數(shù)據(jù)庫(kù)的訪問(wèn)次數(shù),在大型高并發(fā)高負(fù)載的系統(tǒng)架構(gòu)中能大大提高系統(tǒng)性能,在小系統(tǒng)也能為系統(tǒng)節(jié)約不少的系統(tǒng)開(kāi)銷(xiāo)。</p><p>  當(dāng)需要訪問(wèn)那三個(gè)表中的內(nèi)容時(shí),只需要在頁(yè)面中用<%@ include file="include/common.inc"%>把對(duì)應(yīng)的文件包含進(jìn)來(lái)就能達(dá)到同樣的效果。在加快

91、首頁(yè)顯示速度的同時(shí)降低了開(kāi)發(fā)的復(fù)雜程度。如圖4.8所示。</p><p><b>  圖4.8系統(tǒng)首頁(yè)</b></p><p>  4.7.2 發(fā)布新商品頁(yè)面</p><p>  用戶可以訪問(wèn)此模塊,但是必須先通過(guò)登錄。新發(fā)布的商品有兩種拍賣(mài)方式:拍賣(mài)和一口價(jià)。對(duì)于拍賣(mài)方式的商品有一個(gè)開(kāi)始出價(jià)的起點(diǎn),每次出價(jià)的長(zhǎng)幅,和成交價(jià)格。對(duì)于一口價(jià)方式的

92、商品只有當(dāng)用戶直接出指定的價(jià)時(shí)才會(huì)交易成功。因此在用戶發(fā)布之前我們先提供一個(gè)頁(yè)面(item_view.jsp)供用戶選擇拍賣(mài)的模式,在這個(gè)頁(yè)面中通過(guò)model的值來(lái)生成對(duì)應(yīng)的發(fā)布商品的頁(yè)面。</p><p>  在發(fā)布商品是需要用戶填寫(xiě)商品的名稱(chēng)、商品的簡(jiǎn)介、出售天數(shù)、限制的用戶等級(jí)等,同時(shí)還提供了上傳商品圖片的功能。通過(guò)此分析,我樣可以用Dreamware設(shè)計(jì)了一個(gè)供用戶填寫(xiě)資料和向服務(wù)器提交的表單,數(shù)據(jù)最后提

93、交到“item_view.jsp”中。頁(yè)面的功能是保存用戶發(fā)布的商品信息,它通過(guò)設(shè)置request.setCharacterEncoding(utf-8)響應(yīng)的字符集了utf-8防止中文亂碼的出現(xiàn),如果用戶發(fā)布商品成功將自動(dòng)返回到用戶操作的首頁(yè),否則出現(xiàn)“商品沒(méi)有添加成功!請(qǐng)返回?!钡奶崾尽H鐖D4.9所示。</p><p>  圖4.9發(fā)布商品界面</p><p>  4.7.3 管理種類(lèi)

94、頁(yè)面</p><p>  用戶訪問(wèn)此模塊也是必須先通過(guò)登錄,新添加物品的種類(lèi)是在所有顯示種類(lèi)的頁(yè)面中來(lái)實(shí)現(xiàn)添加的,由于種類(lèi)本表身沒(méi)有外鍵與其他的數(shù)據(jù)庫(kù)表的關(guān)系,所以種類(lèi)表中只有種類(lèi)名稱(chēng)與種類(lèi)描述二個(gè)要添加的。如圖4.10所示。</p><p>  圖4.10添加種類(lèi)界面</p><p><b>  第5章 系統(tǒng)實(shí)現(xiàn)</b></p>

95、<p>  本系統(tǒng)采用的Struts2+Spring+Hibernate三個(gè)框架整合搭建的。在開(kāi)發(fā)過(guò)程中利用了Struts2來(lái)實(shí)現(xiàn)Web層,這里遵循了經(jīng)典的MVC模式;使用Hibernate來(lái)實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)和持久化層;使用Spring來(lái)實(shí)現(xiàn)業(yè)務(wù)層和整合工作。其后就由登錄模塊來(lái)舉例,列出各個(gè)框架的實(shí)際實(shí)現(xiàn)。</p><p>  5.1 實(shí)現(xiàn)Hibernate PO</p><p>

96、  Hibernate PO由兩個(gè)部分組成:持久化類(lèi)和映射文件,其中映射文件負(fù)責(zé)把持久化類(lèi)映射到數(shù)據(jù)表,并把持久化類(lèi)的屬性映射到數(shù)據(jù)列。通過(guò)這種映射,允許程序以面向?qū)ο蟮姆绞讲僮鱄ibernate的PO,而Hibernate則負(fù)責(zé)把這種操作轉(zhuǎn)化成底層的JDBC數(shù)據(jù)訪問(wèn)。</p><p>  對(duì)于Hibernate PO而言,通常一個(gè)持久化類(lèi)被映射到一個(gè)數(shù)據(jù)表,而持久化類(lèi)的屬性則對(duì)應(yīng)到數(shù)據(jù)表的數(shù)據(jù)列,因此系統(tǒng)實(shí)體表

97、里包含了多少列,就意味著該實(shí)體對(duì)應(yīng)持久化類(lèi)應(yīng)包含多少個(gè)屬性。</p><p>  下面是系統(tǒng)中物品狀態(tài)PO類(lèi)的部分代碼:</p><p>  public class AuctionUser</p><p><b>  {</b></p><p>  private Integer id;</p><

98、p>  private String username;</p><p>  private String userpass;</p><p>  private Set<Item> itemsByOwner = new HashSet<Item>();</p><p>  private Set<Item> itemsBy

99、Winer = new HashSet<Item>();</p><p>  private Set<Bid> bids = new HashSet<Bid>();</p><p><b>  //無(wú)參數(shù)的構(gòu)造器</b></p><p>  public AuctionUser()</p>&l

100、t;p><b>  {</b></p><p><b>  }</b></p><p>  //初始化全部基本屬性的構(gòu)造器</p><p>  public AuctionUser(Integer id , String username ,</p><p>  String userpass

101、 , String email)</p><p><b>  {</b></p><p>  this.id = id;</p><p>  this.username = username;</p><p>  this.userpass = userpass;</p><p><b>

102、;  }</b></p><p>  省略了屬性的get和set方法</p><p><b>  }</b></p><p>  該P(yáng)O對(duì)應(yīng)的映射文件部分代碼如下:</p><p>  <hibernate-mapping package="model"></p>

103、<p>  <class name="AuctionUser" table="auction_user"></p><p>  <!-- 映射標(biāo)識(shí)屬性 --></p><p>  <idname="id" type="int" column="user_id

104、"></p><p>  <!-- 指定主鍵生成策略 --></p><p>  <generator class="sequence"></p><p>  <param name="sequence">user_sequence</param></p&g

105、t;<p>  </generator></p><p><b>  </id></b></p><p><b>  </class></b></p><p>  </hibernate-mapping></p><p>  5.2 實(shí)現(xiàn)

106、系統(tǒng)的DAO層</p><p>  JavaEE一向以良好的可擴(kuò)展性吸引了眾多行業(yè)的青睞,而這種良好的可擴(kuò)展性就是建立在嚴(yán)格的分層結(jié)構(gòu)之上的。JavaEE系統(tǒng)將系統(tǒng)的所有持久化層訪問(wèn)都封裝在系統(tǒng)的DAO層,所有的持久化訪問(wèn)都通過(guò)系統(tǒng)的DAO組件來(lái)實(shí)現(xiàn),避免了業(yè)務(wù)邏輯組件與持久化訪問(wèn)的耦合。DAO模式的實(shí)現(xiàn)應(yīng)用到DAO工廠類(lèi)、DAO接口、Dao接口的實(shí)現(xiàn)類(lèi)。</p><p>  5.3 實(shí)現(xiàn)

107、系統(tǒng)Web層</p><p>  Web層通常就是對(duì)應(yīng)系統(tǒng)的MVC結(jié)構(gòu)的控制層,本系統(tǒng)使用Struts2作為MVC框架,則控制器層都是由Struts2的Action充當(dāng),這些Action通過(guò)調(diào)用系統(tǒng)的業(yè)務(wù)邏輯方法來(lái)處理用戶請(qǐng)求,并將結(jié)果放入ValueStack中,在JSP頁(yè)面中通過(guò)Struts2的標(biāo)簽庫(kù)來(lái)輸出這些處理結(jié)果。</p><p>  系統(tǒng)登錄是本系統(tǒng)的基本功能,當(dāng)用戶需要使用本系

108、統(tǒng)的功能之前,必須先登錄系統(tǒng)才可以使用本系統(tǒng)的功能。系統(tǒng)的登錄頁(yè)面也就是系統(tǒng)的主頁(yè)homepage.jsp頁(yè)面,當(dāng)用戶在該頁(yè)面提交請(qǐng)求時(shí),請(qǐng)求被發(fā)送到Login.action,該Action負(fù)責(zé)處理用戶請(qǐng)求。如果登錄成功,則跳轉(zhuǎn)到member_login.jsp;否則返回loginpage.jsp,讓用戶再次登錄。</p><p>  下面是Action登錄部分的部分代碼:</p><p>

109、;  public class UserAction extends BaseAction{</p><p>  private Integer id;</p><p>  private String username;</p><p>  private String userpass;</p><p>  public void set

110、Username(String username) {</p><p>  this.username = username;</p><p><b>  }</b></p><p>  public void setUserpass(String userpass) {</p><p>  this.userpass

111、= userpass;</p><p><b>  }</b></p><p>  public Integer getId() {</p><p>  return id;</p><p><b>  }</b></p><p>  public void setId(In

112、teger id) {</p><p>  this.id = id;</p><p><b>  }</b></p><p>  public String login()throws Exception{</p><p>  id = mgr.validLogin(username,userpass);</p&

113、gt;<p>  if(id > 0){</p><p>  ActionContext.getContext().getSession().put("id", id);</p><p>  ActionContext.getContext().getSession().put("username", username);<

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論