基于jsp的網上書店設計的與實現【畢業(yè)設計】_第1頁
已閱讀1頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  本科畢業(yè)設計(論文)</p><p><b> ?。ǘ?屆)</b></p><p>  基于JSP的網上書店設計的與實現</p><p>  所在學院 </p><p>  專業(yè)班級 計算機科學與技術 </p&

2、gt;<p>  學生姓名 學號 </p><p>  指導教師 職稱 </p><p>  完成日期 年 月 </p><p>  摘要:本文重點介紹了“網上書店”的開發(fā)意義及如何分析、設計和實現的?;竟δ馨ㄓ脩糇詴?/p>

3、員、登錄、圖書展示、圖書查詢、在線瀏覽圖書、遠程購買、遠程交易等。系統開發(fā)工具是使用JSP及MySQL數據庫,系統是基于零售商實體背景開發(fā)的,可以有效的實現網上圖書交易。 在論文中首先介紹了電子商務及開發(fā)所使用軟件的相關知識,并根據以上知識制作網站。文中主要包括需求分析,總體設計,功能設計,數據庫設計與實現等,并通過流程圖和文字加以解釋說明。</p><p>  關鍵詞:JAVA;JSP;網絡編程;網上書店<

4、;/p><p>  Design and Implementation of Online Bookshop based on JSP</p><p>  Abstract:This article has introduced the main body of ‘the web bookshop’ exploitation significance and how to analyses,

5、design and realize. The fundamental function logs on including consumer register member, the book shows book, browses on line, long-range purchase, long-range business etc. The system develop implement is to use JSP and

6、the MySQL data base , system is that background is development owing to entity family of retail dealer , the book trades on being able to be effective realizing</p><p>  Key words: JAVA;JSP;Network programmi

7、ng; bookshop Online</p><p><b>  目錄</b></p><p><b>  1 引言1</b></p><p>  1.1 開發(fā)網上書店的目的1</p><p>  1.2 開發(fā)網絡書店的意義2</p><p>  2 開發(fā)環(huán)境

8、與開發(fā)工具介紹4</p><p>  2.1 系統開發(fā)語言JSP4</p><p>  2.1.1 JSP的MVC模式4</p><p>  2.1.1 JSP技術的強勢4</p><p>  2.1.2 JSP技術的弱勢5</p><p>  2.2 系統開發(fā)工具MyEclipse5</p&

9、gt;<p>  2.3 系統開發(fā)環(huán)境Apache Tomcat5</p><p>  2.4 系統數據庫MySQL6</p><p>  3 系統分析與設計7</p><p>  3.1 需求分析7</p><p>  3.2 總體設計7</p><p>  3.3 功能設計8&

10、lt;/p><p>  3.3.1 圖書信息管理8</p><p>  3.3.2 購物車管理8</p><p>  3.3.3 會員注冊8</p><p>  3.3.4 訂單處理8</p><p>  3.4 數據庫設計與實現8</p><p>  3.5 網上書店UML圖

11、9</p><p>  3.6 網上書店各頁面功能9</p><p>  3.6.1 網上書店首頁bookMain.jsp詳細功能及描述9</p><p>  3.6.2 顯示圖書詳細信息bookShow.jsp頁面詳細功能及描述10</p><p>  3.6.3 顯示購物車信息bookShopCart.jsp頁面詳細功能及

12、描述10</p><p>  3.6.4 網上書店客戶登錄userLogin.jsp頁面詳細功能及描述11</p><p>  3.6.5 網上書店客戶注冊userRegister.jsp頁面詳細功能及描述11</p><p>  3.6.6 選擇送貨方式及付款方式orderAddress.jsp頁面詳細功能及描述11</p><p

13、>  3.6.7 確認訂單信息orderConfirm.jsp頁面詳細功能及描述11</p><p>  3.6.8 顯示客戶所有訂單信息orderHistory.jsp頁面詳細功能及描述12</p><p>  3.7 業(yè)務邏輯層各bean功能12</p><p>  3.8 控制處理層13</p><p>  4

14、主要源代碼介紹15</p><p>  4.1 創(chuàng)建數據表的腳本15</p><p>  4.2 購物車模塊15</p><p>  4.3 管理員模塊20</p><p>  4.4 數據庫連接模塊23</p><p>  5 進一步的探討25</p><p>  5.1

15、 系統的設計情況25</p><p>  5.2 本網站的特色25</p><p>  5.3 本網站的優(yōu)點26</p><p>  5.4 本網站需要改進的地方26</p><p>  5.5 系統今后發(fā)展的方向27</p><p><b>  6 結束語28</b>&l

16、t;/p><p>  7 參考文獻29</p><p><b>  1 引言</b></p><p>  1.1 開發(fā)網上書店的目的</p><p>  目前,網絡正以一種前所未有的沖擊力在影響著人類的活動,包括人類的生產和日常生活。網絡的誕生和發(fā)展,顛覆了傳統的信息傳播方式,沖破了存在于傳統交流方式中時間和空間的種

17、種壁壘,極大地改變了人類從物質到精神、從形式到內容、從生產到生活的各種活動,并且給人類帶來了新的機遇和挑戰(zhàn)。通過互聯網傳遞的大量信息使得現有的社會資源獲得高效配置,社會勞動生產率大幅度提高,并推動經濟結構革新和產業(yè)結構的升級。電子商務是互聯網發(fā)展日臻成熟的直接后果,是網絡技術應用新的發(fā)展方向?;ヂ摼W自身所具有的開放性、全球性、低成本、高效率的特點,已成為電子商務的內在特征,并使得電子商務大大超越了作為一種新的貿易形式所具有的價值。近幾年

18、來,計算機技術飛速發(fā)展,人類社會正從工業(yè)化社會跨進信息化社會,越來越多的信息資源被人們利用信息資源的有效管理和利用是一個國家一個部門信息建設的重要內容。</p><p>  21世紀可以說是電子商務的世紀。電子商務通過大幅度地降低交易成本、增加貿易機會、簡化交易流程、提高服務質量、改善物流電子商務網站等,極大地推動了全球經濟的發(fā)展,并在很大程序上影響著我們的生活方式和工作方式。眾所周知,電子商務的存在與發(fā)展都離不

19、開商務網絡的支持,各種商務網站不僅已經成為現代企業(yè)的門戶,同時也是企業(yè)從電子商務活動必不可少的基礎平臺[1]。</p><p>  企業(yè)開展電子商務,有四大優(yōu)勢。一、提高了企業(yè)的經營管理水平;二、促進了企業(yè)經營管理觀念和制度的變革;三、培養(yǎng)和鍛煉了一大批人才;四、改善了企業(yè)形象。這對于提高企業(yè)的市場認知程度有很大幫助。一般地,互聯網應用水平較高的企業(yè),其市場開拓能力、成本控制能力、業(yè)務流程的重組及企業(yè)管理的觀念與

20、制度,均得到了不同程度的提高和優(yōu)化。中石化集團通過網上采購,對采購全過程進行實時監(jiān)控,使采購過程公開化、規(guī)范化,實現了“陽光作業(yè)”,在很大程度上杜絕了暗箱操作,大大降低了采購成本。</p><p>  通過網上圖書銷售系統的設計來理解如何把一個實體企業(yè)網絡化,搭建B2C模式的網上交易平臺,縱觀現在的兩大主流開發(fā)體系:Microsoft的.NET體系和SUN公司的以J2EE(Java2 Enterprise Edi

21、tion)為核心的SUN-ONE(SUN Open Network Environment)戰(zhàn)略,無論在哪套體系中,基于WEB的技術都在被逐步漸加強,.NET推出了以ASP.NET為代表的WEB開發(fā)技術,而在SUN的Java體系中,則有JSP/Servlet/JavaBean與之相抗衡。本次畢業(yè)設計主要采用JSP(Java server pages)技術,并綜合相關的Java技術,數據庫技術和軟件工程的理論。在整個開發(fā)的過程中,需要充分

22、的發(fā)揮自己的能力,包括學習能力、成員間的協作能力和個人獨立解決問題的能力。</p><p>  1.2 開發(fā)網絡書店的意義</p><p>  網上書店擠壓盜版空間。</p><p>  如今發(fā)展最快的,最時髦的,恐怕就是網絡了。網絡給人們帶來了實惠、虛擬、幻化,也給文學和圖書帶來了廣闊的生存空間。盜版者利用科學技術,瞄準正版書與盜版書的差價牟取暴利。網絡書店的興

23、起無疑給盜版商以有力的打擊,因為發(fā)達的網絡可以直接疏通圖書的發(fā)行渠道,縮短了網上購書者與出版社的距離,給圖書消費者以清新、便宜的享受。</p><p>  網上書店濃縮了圖書的庫存空間</p><p>  傳統圖書店內的圖書擺放面積是有限的,每增加一本書其成本都在以一定比例增加,而網絡書店解決了存儲空間問題,每增加一本書成本增長幾乎為零。</p><p>  數量、

24、種類多,出版時間跨度大</p><p>  綜合性的網上書店涉及各種各類內容的圖書,提供訂購的書目信息達上萬、幾十萬條,而圖書出版的時間有最新出版的,也有幾十年前的,這是傳統書店難以做到的。</p><p><b>  不受時間、地域限制</b></p><p>  網上書店是24小時向全球各地的用戶提供網上服務的,用戶借助網絡可以漫游于世界各

25、地的圖書海洋中,隨時選書、下訂單,進行異地購書。</p><p><b>  信息豐富</b></p><p>  網上書店的欄目豐富:特價書、書業(yè)視窗、銷售排行、新品上架、最新推薦等,動態(tài)地向用戶提供各種信息,讓用戶了解書市的最新情況。另外,每種被檢索出來的圖書也有詳盡的介紹,如基本書目信息、封面、目次、內容提要、書評等,這些信息都有助于用戶選書。</p>

26、;<p><b>  多途徑綜合檢索</b></p><p>  網上書店主要提供分類和自定義搜索的方式對圖書或其它商品(音像制品、電腦軟件等)進行查找。分類一般是結合《中圖法》按用戶的閱讀習慣或興趣分類,同一類的圖書相對集中在一起,方便用戶在同類圖書中挑選出高質量的圖書。自定義搜索是用戶根據自己所需的圖書以主題、書名、著者、出版社等信息作為檢索點對圖書或其它商品進行一般搜索,

27、如果希望檢索結果更準確就使用高級檢索---同時使用幾個檢索點查找。這種方法相對于其它購書方式來說找書更快捷。</p><p><b>  價格低廉</b></p><p>  一般來講,網上書店買書,要比普通書店便宜。由于拋棄了傳統書店運作的所需的服務設施和多重環(huán)節(jié),絕對的成本低廉。由于網上書店運營方式是有訂購需要時直接到出版社取效性強,除了一部分有收藏價值的外,絕大

28、多數圖書都會“掉價”[2]。</p><p>  2 開發(fā)環(huán)境與開發(fā)工具介紹</p><p>  2.1 系統開發(fā)語言JSP</p><p>  JSP(Java Server Pages)是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態(tài)網頁技術標準。JSP技術有點類似ASP技術,它是在傳統的網頁HTML文件(*.htm,*.html)

29、中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件(*.jsp)。 用JSP開發(fā)的Web應用是跨平臺的,既能在Linux下運行,也能在其他操作系統上運行。</p><p>  JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產生動態(tài)網頁的處理邏輯。網頁還能通過tags和scriptlets訪問存在于服務端的資源的應用邏輯。JSP將網頁邏輯與網頁設

30、計和顯示分離,支持可重用的基于組件的設計,使基于Web的應用程序的開發(fā)變得迅速和容易。   </p><p>  Web服務器在遇到訪問JSP網頁的請求時,首先執(zhí)行其中的程序段,然后將執(zhí)行結果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數據庫、重新定向網頁等,以實現建立動態(tài)網頁所需要的功能。</p><p>  JSP與Java Servlet一樣,是在服務器

31、端執(zhí)行的,通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。     </p><p>  JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務器在頁面被客戶端請求以后對這些Java代碼進行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。Java Servlet 是JSP的技術基礎,而且大型的Web應用程序的開發(fā)需要Java Servlet和JSP配合才能完成。JSP具備了Jav

32、a技術的簡單易用,完全的面向對象,具有平臺無關性且安全可靠,主要面向因特網的所有特點。   </p><p>  自JSP推出后,眾多大公司都支持JSP技術的服務器,如IBM、Oracle、Bea公司等,所以JSP迅速成為商業(yè)應用的服務器端語言。   </p><p>  JSP可用一種簡單易懂的等式表示為:HTML+Java=JSP。</p><p>  2.1.

33、1 JSP的MVC模式 </p><p>  為了把表現層presentation從請求處理request processing 和數據存儲data storage中分離開來,SUN公司推薦在JSP文件中使用一種“模型-視圖-控制器”Model-view-controller 模式。規(guī)范的SERVLET或者分離的JSP文件用于處理請求。當請求處理完后,控制權交給一個只作為創(chuàng)建輸出作用的JSP頁。有幾種平臺都基于

34、服務于網絡層的模-視圖-控件 模式(比如Struts 和Spring framework)。</p><p>  2.1.2 JSP技術的強勢</p><p>  (1)一次編寫,到處運行。除了系統之外,代碼不用做任何更改。 </p><p> ?。?)系統的多平臺支持?;旧峡梢栽谒衅脚_上的任意環(huán)境中開發(fā),在任意環(huán)境中進行系統部署,在任意環(huán)境中擴展。相比ASP

35、/.net的局限性是顯而易見的。 </p><p> ?。?)強大的可伸縮性。從只有一個小的Jar文件就可以運行Servlet/JSP,到由多臺服務器進行集群和負載均衡,到多臺Application進行事務處理,消息處理,一臺服務器到無數臺服務器,Java顯示了一個巨大的生命力。 </p><p> ?。?)多樣化和功能強大的開發(fā)工具支持。這一點與ASP很像,Java已經有了許多非常優(yōu)秀的

36、開發(fā)工具,而且許多可以免費得到,并且其中許多已經可以順利的運行于多種平臺之下。 </p><p>  (5)支持服務器端組件。web應用需要強大的服務器端組件來支持,開發(fā)人員需要利用其他工具設計實現復雜功能的組件供web頁面調用,以增強系統性能。JSP可以使用成熟的JAVA BEANS 組件來實現復雜商務功能。</p><p>  2.1.3 JSP技術的弱勢</p>&l

37、t;p> ?。?) 與ASP一樣,Java的一些優(yōu)勢正是它致命的問題所在。正是由于為了跨平臺的功能,為了極度的伸縮能力,所以極大的增加了產品的復雜性。 </p><p>  (2) Java的運行速度是用class常駐內存來完成的,所以它在一些情況下所使用的內存比起用戶數量來說確實是“最低性能價格比”了。從另一方面,它還需要硬盤空間來儲存一系列的.java文件和.class文件,以及對應的版本文件。<

38、/p><p>  2.2 系統開發(fā)工具MyEclipse</p><p>  MyEclipse,是一個十分優(yōu)秀的用于開發(fā)Java, J2EE的Eclipse插件集合,MyEclipse的功能非常強大,支持也十分廣泛,尤其是對各種開元產品的支持十分不錯。</p><p>  MyEclipse企業(yè)級工作平臺(MyEclipse Enterprise Workbench

39、 ,簡稱MyEclipse)是對Eclipse IDE的擴展,利用它我們可以在數據庫和JavaEE的開發(fā)、發(fā)布,以及應用程序服務器的整合方面極大的提高工作效率。它是功能豐富的JavaEE集成開發(fā)環(huán)境,包括了完備的編碼、調試、測試和發(fā)布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。</p><p>  2.3 系統開發(fā)環(huán)境Apache Tomc

40、at</p><p>  Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發(fā)而成。由于有了Sun 的參與和支持,最新的Servlet 和JSP 規(guī)范總是能在Tomcat 中得到體現,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 規(guī)范。因為Tomcat 技術

41、先進、性能穩(wěn)定,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟件開發(fā)商的認可,成為目前比較流行的Web 應用服務器。目前最新版本是6.0。</p><p>  Tomcat 很受廣大程序員的喜歡,因為它運行時占用的系統資源小,擴展性好,支持負載平衡與郵件服務等開發(fā)應用系統常用的功能;而且它還在不斷地改進和完善中,任何一個感興趣的程序員都可以更改它或在其中加入新的功能。 </p><p&

42、gt;  Tomcat 是一個輕量級應用服務器,在中小型系統和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調試JSP 程序的首選。對于一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 服務器,可利用它響應對HTML 頁面的訪問請求。實際上Tomcat 部分是Apache 服務器的擴展,但它是獨立運行的,所以當你運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。</p><p

43、>  2.4 系統數據庫MySQL</p><p>  MySQL是一個小型關系型數據庫管理系統,開發(fā)者為瑞典MySQL AB公司。在2008年1月16號被Sun公司收購。而2009年,SUN又被Oracle收購.對于MySQL的前途,沒有任何人抱樂觀的態(tài)度.目前MySQL被廣泛地應用在Internet上的中小型網站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網

44、站總體擁有成本而選擇了MySQL作為網站數據庫。</p><p>  MySQL自身特性:</p><p>  1.使用C和C++編寫,并使用了多種編譯器進行測試,保證源代碼的可移植性。 </p><p>  2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Win

45、dows等多種操作系統。 </p><p>  3.為多種編程語言提供了API。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。 </p><p>  4.支持多線程,充分利用CPU資源。 </p><p>  5.優(yōu)化的SQL查詢算法,有效地提高查詢速度 。</p><p>  6.既

46、能夠作為一個單獨的應用程序應用在客戶端服務器網絡環(huán)境中,也能夠作為一個庫而嵌入到其他的軟件中提供多語言支持,常見的編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作數據表名和數據列名。 </p><p>  3 系統分析與設計</p><p><b>  3.1 需求分析</b></p><p>  網上書店系統主要

47、是實現網上選書、購書、產生訂單等功能的系統。一個典型的網上商城一般都需要實現商品信息的動態(tài)提示、購物車管理、客戶信息注冊登錄管理、訂單處理等模塊[3]。</p><p>  根據網上書店的基本需求,本系統需要完成的具體任務如下:</p><p>  書圖查詢: 當客戶進入網上書店時,應該在主頁面中分類顯示最新的書目信息,以供客戶選擇所需圖書,同時也應該提供按照圖書名稱,或者作者信息快速查詢

48、所需書目信息的功能。</p><p>  購物車管理:當客戶選擇購買某圖書產品時,應該能夠將對應圖書信息,如:價格、數量記錄到對應的購物車中,并允許客戶返回書目查詢頁面,選擇其他商品,并添加到購物車中,當對應的購物訂單生成后,應該能夠自動清除以生成訂單的購物車中的信息。</p><p>  訂單處理:對應客戶購買圖書商品信息的需求,在確定了所購圖書商品的價格、數量等信息后,提示用戶選擇對應

49、的送貨方式及付款方式,最終生成對應的訂單記錄,以便于網站配貨人員依據訂單信息進行后續(xù)的出貨、送貨的處理。</p><p>  會員注冊:為了能夠實現圖書商品的購買,需要管理客戶相關的聯系方式、送貨地點等相關的信息。</p><p>  圖1網上書店Use Case圖</p><p><b>  3.2 總體設計</b></p>

50、<p>  下表中給出了構成網上書店系統的各個組件,通過下表,可以從宏觀上了解各個組件的功能。</p><p>  表3-1 組件功能表:</p><p><b>  3.3 功能設計</b></p><p>  3.3.1 圖書信息管理</p><p>  該模塊實現圖書書目信息的分類顯示,也是提供圖書信

51、息依據書名及作者信息快速搜索的功能。此外,在用戶選擇了對應書目信息后,還可以顯示出有關該圖書的詳細信息,以便于客戶了解所購商品[4]。</p><p>  3.3.2 購物車管理</p><p>  用于維護每一個進入網上書店的客戶對應的購物車。即將客戶所選購的圖書商品信息記錄到對應的購物車中,以便于到收銀臺進行結賬處理。</p><p>  3.3.3 會員注

52、冊</p><p>  實現網上書店客戶信息的注冊、及身份驗證。由于目前網上商城普遍采用的方式為送貨上門或者郵寄,因此需要收集與客戶相關的聯系方式、通信地址等信息。</p><p>  3.3.4 訂單處理</p><p>  根據客戶購物車中的信息,以及客戶所選擇的送貨方式和付款方式,連同客戶對應的個人信息生成訂單,以便于后續(xù)進行送貨處理。</p>

53、<p>  3.4 數據庫設計與實現</p><p>  依據網上書店的處理需求,對就數據表的設計及功能如下。</p><p>  圖書基本信息表:存放網上書店所銷售圖書的基本信息。</p><p>  圖書分類基本信息表:存放網上書店所提供圖書分類的信息。</p><p>  客戶基本信息表:存放書店客戶的基本信息。</

54、p><p>  訂單信息表:存放與客戶相關的訂單的基本信息。</p><p>  訂單條目詳細信息表:存放訂單中詳細條目的基本信息。</p><p>  3.5 網上書店UML圖</p><p><b>  UML活動關系圖。</b></p><p>  下面是進入網上書店系統時可以進行的操作。具體

55、的UML活動如圖2所示。</p><p>  圖2 UML活動關系圖</p><p>  3.6 網上書店各頁面功能</p><p>  3.6.1 網上書店首頁詳細功能及描述</p><p>  獲取圖書分類信息以及圖書基本信息集合</p><p>  循環(huán)顯示圖書分類信息</p><p>

56、;  提交顯示指定分類圖書信息的請求,同時傳遞對應圖書分類編號</p><p>  提交書目搜索請求及搜索條件的表單</p><p>  提交搜索關鍵字的表單元素</p><p>  選擇搜索條件的表單元素</p><p>  顯示圖書記錄總數、當前頁面編號以及總頁數</p><p>  循環(huán)顯示對應圖書書目信息<

57、;/p><p>  顯示圖書名稱、價格、銷售價格、作者信息</p><p>  提交顯示圖書詳細信息請求的超鏈接</p><p>  提交分頁顯示請求的超鏈接,同時提交指定頁面編號</p><p>  單擊分類時將提交請求,以便于獲取對應圖書分類的相關信息。當選擇了查詢依據,并且輸入了對應關鍵字,單擊“搜索”按鈕時,將提交請求,同時提交查詢條件,

58、進行后續(xù)書目信息搜索的處理。當在書目列表中單擊查看詳細信息請求時,將發(fā)出請求,同時傳遞對應圖書記錄的編號,以獲取指定圖書更加詳細的信息。此外,在單擊“首頁”、“上頁”、“下頁”超鏈接后,實現頁面的跳轉。</p><p>  3.6.2 顯示圖書詳細信息頁面詳細功能及描述</p><p>  依據圖書記錄編號獲取待顯示詳細信息的圖書類型的對象</p><p>  分

59、別顯示該圖書對象的詳細信息</p><p>  顯示圖書封面圖片、名稱、詳細介紹、價格、銷售價格</p><p>  單擊“購買”按鈕后,將提交放入購物車的請求</p><p><b>  顯示圖書目錄</b></p><p>  本頁面是在控制器響應了網上書店主頁提交的查看圖書詳細信息請求,即“bookDeatial.

60、do”請求后,跳轉到的頁面。在該頁面中將獲取到的指定圖書詳細信息顯示出來,同時如果用戶單擊“購買”按鈕,將提交“bookBuy.do?bookId=<%=book.getId()%>”請求,進行后續(xù)放入購物車的處理。</p><p>  3.6.3 顯示購物車信息頁面詳細功能及描述</p><p>  獲取該用戶購物車中信息的集合</p><p>  

61、提交更新購物車請求的表單</p><p>  循環(huán)顯示購物車中的每一條購物記錄信息</p><p>  設置購買數量的文本框</p><p><b>  顯示圖書銷售價格</b></p><p><b>  顯示圖書總價</b></p><p>  從購物車中移除購買記錄信息

62、</p><p><b>  更新訂單按鈕</b></p><p>  提交繼續(xù)購書請求的超鏈接</p><p>  提交清空購物車請求的超鏈接</p><p>  提交結算付款請求的超鏈接</p><p>  本頁面是在用戶選擇購買某種圖書商品后,進入的頁面。在該頁面中將顯示該用戶購物車中現有的

63、所有購買需求記錄。同時提供更新購物車的操作界面,例如,可以輸入購買數量或者選擇刪除購買記錄。單擊“更新訂單”按鈕后,將提交“updateShopCart.do”請求,進行更新購物車信息的處理。此外,也可以單擊“繼續(xù)購書”按鈕,提交“bookSearch.do”請求返回網上書店主頁面繼續(xù)購書,或者單擊“清空購物車”按鈕提交“clearShopCart.do”請求。同時,如果用戶確認去收銀臺,則可以單擊“結算付款”按鈕跳轉到“userLog

64、in.jsp”頁面進行用戶登錄。</p><p>  3.6.4 網上書店客戶登錄頁面詳細功能及描述</p><p>  提交用戶登錄請求,同時提交登錄用戶信息的表單</p><p>  提交登錄用戶用戶名及密碼的表單元素</p><p><b>  登錄按鈕</b></p><p>  提交新

65、用戶注冊請求的超鏈接</p><p>  本頁面是客戶在購物車頁面單擊“結算付款”按鈕后跳轉過來的頁面,在該頁面中,用戶在表單中輸入用戶名及密碼,單擊“用戶登錄”按鈕后,將提交“l(fā)ogin.do”請求,以便于進行后續(xù)獲取用戶相關信息的處理,對于沒有用戶身份的新客戶,可以在本頁面中單擊“新用戶注冊”按鈕,跳轉到“userRegister.jsp”頁面進行用戶注冊。</p><p>  3.6

66、.5 網上書店客戶注冊頁面詳細功能及描述</p><p>  提交新用戶注冊請求,同時提交新用戶注冊信息的表單</p><p>  提交注冊用戶姓名、地址、電子郵件地址、電話、用戶名、密碼以及確認密碼的表單元素</p><p><b>  注冊按鈕</b></p><p>  在本頁面中注冊用戶可以在表單中輸入對應的注

67、冊信息,在單擊“注冊”按鈕后,將提交“regist.do”請求,同時提交新用戶的相關注冊信息,以便于進行后續(xù)新用戶注冊的處理。</p><p>  3.6.6 選擇送貨方式及付款方式頁面詳細功能及描述</p><p><b>  獲取客戶信息</b></p><p>  提交選擇送貨方式及付款方式的表單</p><p>

68、;  顯示客戶信息、姓名、地址、電話、送貨方式、付款方式</p><p>  本頁面是在用戶登錄通過后,跳轉到的頁面,在該頁面中首先獲取對應用戶的客戶資料,同時提供送貨方式以及付款方式的選擇,在用戶單擊“確認”按鈕后,將提交請求,生成完整的訂單信息。</p><p>  3.6.7 確認訂單信息頁面詳細功能及描述</p><p><b>  獲取購物車信

69、息集合</b></p><p>  獲取訂單信息、客戶信息</p><p>  顯示客戶姓名、地址、電話</p><p><b>  顯示購物車中的信息</b></p><p>  顯示所購圖書書名、數量、總價</p><p><b>  顯示整張訂單總價</b>

70、</p><p>  顯示訂單信息中的送貨方式信息</p><p><b>  顯示付款方式信息</b></p><p><b>  顯示訂單編號</b></p><p><b>  提交繼續(xù)購書的請求</b></p><p>  提交查看該用戶所有訂單

71、的請求</p><p>  本頁面中將全面顯示該客戶本次購物生成的詳細訂單信息,同時如果單擊“繼續(xù)購書”按鈕將提交“bookSearch.do”請求返回網上書店主頁面,如果單擊“查看訂單”按鈕將提交“orderHistory.do”,跳轉到“orderHistory.jsp”頁面。</p><p>  3.6.8 顯示客戶所有訂單信息頁面詳細功能及描述</p><p&

72、gt;  獲取該用戶所有歷史訂單信息</p><p>  顯示訂單信息信息列表</p><p>  顯示訂單編號、時間、總價</p><p>  提交取消訂單請求的超鏈接</p><p>  提交返回購書請求的超鏈接</p><p>  本頁面將顯示與當前用戶相關的所有訂單信息。同時用戶可以單擊“取消此單”超鏈接提交“

73、delOrder.do?orderId=<%=order.getId()%>”請求刪除該訂單信息,此外也可以單擊“返回購書”按鈕提交“bookSearch.do”請求跳轉到網上書店主頁面。</p><p>  3.7 業(yè)務邏輯層各bean功能</p><p>  在本系統的業(yè)務邏輯層中分別完成了對圖書信息、圖書分類信息、購物車信息、訂單信息以及客戶信息等類型對象的保存和處理。

74、</p><p>  封裝了數據庫相關操作的bean(DB.java)</p><p>  采用了Struts架構下提供的數據庫連接池建立與數據庫的連接,在該bean中通過構造方法建立與數據庫的連接,并提供了相應的方法完成數據庫中的查詢、更新等操作,同時也提供了關閉數據庫連接的方法,以便于及時釋放資源。</p><p>  封裝了圖書住處處理的bean(Book.j

75、ava)</p><p>  除聲明了與圖書基本數據相關的基本屬性和方法之外,還提供了圖書信息的查詢顯示處理相關的幾個方法。其中在調用查詢滿足條件的圖書信息方法時,需要提供查詢的依據,例如,分類、按作者還是按書名,對應關鍵字等。</p><p>  封裝了圖書分類信息處理的bean(BookCat.java)</p><p>  除了聲明了與圖書分類數據相關的基本屬

76、性和方法之外,還提供了與圖書分類信息查詢及顯示處理相關的幾個方法。</p><p>  封裝了圖書查詢及顯示條件的bean(SearchStatus.java)</p><p>  主要封裝了設置圖書搜索查詢條件相關的屬性和方法,該程序中的方法將在搜索圖書信息的程序中被調用。</p><p>  封裝了購物車信息處理的bean(ShopCart.java)</

77、p><p>  為了能夠簡化類的定義,考慮到購物車中所需要處理的圖書基本信息與圖書類型對象中封裝的信息相同,只是需要再補充上購買數量即可,因此在定義該類時繼承了圖書信息類。</p><p>  封裝了訂單住處處理的bean(Order. java)</p><p>  除聲明了與訂單中所需要處理的數據相關的基本屬性和方法之外,還提供了與訂單查詢、插入及刪除處理相關的幾個

78、方法。此外,也提供了計算該訂單所涉及總金額的方法。</p><p>  封裝了客記信息處理的bean(User.java)</p><p>  除聲明了與用戶數據相關的基本屬性和方法之外,還提供了與確認用戶身份、獲取用戶相關信息、插入新用戶信息處理相關的幾個方法。</p><p>  3.8 控制處理層</p><p>  下表是網上書店系

79、統中的Action映射表。該映射決定了 Action與其他Web組件之間的關聯關系。作為前后臺之間橋梁,本表中指明了每個Action的入口(即調用Action的組件)及出口(即請求轉發(fā)的目標組件),以及傳遞Action的ActionForm。</p><p>  表3-2 Action映射表:</p><p>  BookSearchAction.java</p>

80、<p>  該程序負責處理查詢顯示滿足條件圖書書目信息時提交的“bookSearch.do”請求。</p><p>  PageCtrlAction.java</p><p>  該程序負責處理分頁顯示圖書書目信息時進行頁面跳轉時提交的“bookPage.do”請求。</p><p>  BookDetailAction.Java</p>

81、<p>  該程序負責處理顯示指定圖書編號的對應圖書詳細信息時提交的“bookDetail.do”請求。</p><p>  BookBuyAction.java</p><p>  該程序負責處理購買圖書時提交的“bookBuy.do”請求。</p><p>  UpdateShopCartAction.java</p><p>

82、;  該程序負責處理修改購物數量,或者刪除購物記錄時提交的“updateShopCart.do”請求。</p><p>  ClearShopCartAction.java</p><p>  該程序負責處理從購物車頁面提交的清空購物車時的“clearShopCart.do”請求。</p><p>  LoginAction.java</p><

83、p>  該程序負責處理從用戶登錄頁面提交的“l(fā)ogin.do”請求。</p><p>  RegistAction.java</p><p>  該程序負責處理從新用戶注冊頁面提交的“regist.do”請求。</p><p>  AddrConfirmAction.java</p><p>  該程序負責處理從訂單處理頁面提交的選擇送

84、貨方式及付款方式的“addrConfirm.do”請求。</p><p>  OrderHistoryAction.java</p><p>  該程序負責處理從確認訂單頁面提交查看所有訂單信息的“orderHistory.do”請求。</p><p>  OrderDelAction.java</p><p>  該程序負責處理從訂單信息顯

85、示頁面選擇“取消訂單”時提交“delOrder.do”請求。</p><p>  4 主要源代碼介紹</p><p>  4.1 創(chuàng)建數據表的腳本</p><p>  //圖書分類基本信息表</p><p>  DROP TABLE bookcat CASCADE CONSTRAINTS;</p><p>  CR

86、EATE TABLE bookcat(</p><p>  idNUMBER PRIMARY KEY,</p><p>  catnameVARCHAR2 (40) NOT NULL</p><p><b>  );</b></p><p><b>  //圖書基本信息表</b&g

87、t;</p><p>  DROP TABLE book CASCADE CONSTRAINTS;</p><p>  CREATE TABLE book(</p><p>  idNUMBER PRIMARY KEY,</p><p>  catidNUMBER NOT NULL</p>&l

88、t;p>  REFERENCES bookcat(id) ON DELETE CASCADE,</p><p>  nameVARCHAR2 (50) NOT NULL,</p><p>  priceNUMBER NOT NULL,</p><p>  salepriceNUMBER NOT NULL,</p&

89、gt;<p>  descriptVARCHAR2 (500) NOT NULL,</p><p>  authorVARCHAR2 (50) NOT NULL,</p><p>  contentsVARCHAR2 (2000) NULL,</p><p>  imageVARCHAR2 (50) NULL</p>

90、<p><b>  );</b></p><p><b>  //客戶基本信息表</b></p><p>  DROP TABLE storeuser CASCADE CONSTRAINTS;</p><p>  CREATE TABLE storeuser(</p><p>  us

91、ernameVARCHAR2 (20) PRIMARY KEY,</p><p>  passwordVARCHAR2 (20) NOT NULL,</p><p>  nameVARCHAR2 (20) NOT NULL,</p><p>  telVARCHAR2 (20) NOT NULL,</p><p>  a

92、ddressVARCHAR2 (100) NOT NULL,</p><p>  emailVARCHAR2 (50) NULL</p><p><b>  );</b></p><p><b>  //訂單信息表</b></p><p>  DROP TABLE orders CAS

93、CADE CONSTRAINTS;</p><p>  CREATE TABLE orders(</p><p>  idNUMBER PRIMARY KEY,</p><p>  usernameVARCHAR2 (20) NOT NULL</p><p>  REFERENCES storeuser(usernam

94、e) ON DELETE CASCADE,</p><p>  timeDATE NOT NULL,</p><p>  deliveryVARCHAR2 (20) NOT NULL,</p><p>  paymentVARCHAR2 (20) NOT NULL </p><p><b>  );&l

95、t;/b></p><p>  4.2 購物車模塊</p><p><b>  //購物車主要代碼</b></p><p>  public class Cart</p><p><b>  {</b></p><p>  private String name;/

96、/用戶的標識</p><p>  private HashMap items;//購物車中的物品</p><p>  private int orderID;</p><p>  private float totalPrice;</p><p>  private Connection con;</p><p

97、>  int ordersId=0;</p><p>  static CallableStatement cs=null;</p><p>  static Statement st=null;</p><p>  static ResultSet rs=null;</p><p>  public int getOrderID()&

98、lt;/p><p><b>  {</b></p><p>  return orderID;</p><p><b>  }</b></p><p>  public float getTotalPrice()</p><p><b>  {</b>&l

99、t;/p><p>  return totalPrice;</p><p><b>  }</b></p><p>  public Cart()</p><p><b>  {</b></p><p><b>  try</b></p>&l

100、t;p><b>  {</b></p><p>  con = DBConnection.getConnection();</p><p><b>  }</b></p><p>  catch (Exception e)</p><p><b>  {</b></

101、p><p>  e.printStackTrace();</p><p><b>  }</b></p><p>  items = new HashMap();</p><p><b>  }</b></p><p>  public void addItem(String i

102、temId,int quantity)</p><p><b>  {</b></p><p>  items.put(itemId,new Integer(quantity));</p><p><b>  }</b></p><p>  public void removeItem(String

103、 itemId)</p><p><b>  {</b></p><p>  items.remove(itemId);</p><p><b>  }</b></p><p>  public void updateItem(String itemId,int quantity)</p>

104、;<p><b>  {</b></p><p>  if(items.containsKey(itemId))items.remove(itemId);</p><p>  items.put(itemId,new Integer(quantity));</p><p><b>  }</b></p&

105、gt;<p>  public HashMap getItems()</p><p><b>  {</b></p><p>  return this.items;</p><p><b>  }</b></p><p>  public void setName(String na

106、me)</p><p><b>  {</b></p><p>  this.name=name;</p><p><b>  }</b></p><p>  public String getName()</p><p><b>  {</b><

107、/p><p>  return this.name;</p><p><b>  }</b></p><p>  public void clear()</p><p><b>  {</b></p><p>  items.clear();</p><p&g

108、t;<b>  }</b></p><p>  /*public void saveData()</p><p><b>  {</b></p><p>  totalPrice=calPrice();</p><p>  orderID=genOrder(s1,s2,s3,s4);</p&g

109、t;<p>  saveItems();</p><p><b>  }*/</b></p><p>  public int genOrder(String s1,String s2)//生成訂單并返回訂單號</p><p><b>  {</b></p><p>  String

110、s3=new java.util.Date().toLocaleString();</p><p><b>  try</b></p><p><b>  {</b></p><p>  cs=con.prepareCall("{call Pro_orders(?,?,?,?)}");</p>

111、;<p>  cs.setString(1,s1);</p><p>  cs.setString(2,s2);</p><p>  cs.setString(3,s3);</p><p>  cs.registerOutParameter(4,java.sql.Types.INTEGER);</p><p>  cs.exec

112、ute();</p><p>  ordersId=cs.getInt(4);</p><p><b>  }</b></p><p>  catch(Exception e)</p><p><b>  {</b></p><p>  e.printStackTrace()

113、;</p><p><b>  }</b></p><p>  return ordersId;</p><p><b>  }</b></p><p>  /*public float calPrice()//計算當前購物車內物品的總價格</p><p><b>

114、  {</b></p><p>  總價格在Cart.jsp中計算</p><p><b>  }*/</b></p><p>  public float calPrice(float totalPrice)//計算當前購物車內物品的總價格</p><p><b>  {</b><

115、;/p><p>  return this.totalPrice=totalPrice;</p><p><b>  }</b></p><p>  public void addOrder(String orderName,String totalPrice)</p><p><b>  {</b>&

116、lt;/p><p><b>  try</b></p><p><b>  {</b></p><p>  String dateTime=new java.util.Date().toLocaleString();</p><p>  PreparedStatement pst = con.prepa

117、reStatement("insert into orders values(?,?,?)");</p><p>  pst.setString(1,orderName);</p><p>  pst.setString(2,totalPrice);</p><p>  pst.setString(3,dateTime);</p>

118、<p>  int i= pst.executeUpdate();</p><p>  pst.close();</p><p><b>  }</b></p><p>  catch(Exception e)</p><p><b>  {</b></p><p>

119、;  e.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b></p><p>  public void saveItems(int i1,String s3,String s4,int i2)//存儲當前訂單物品明細</p><p>

120、;<b>  {</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  /*System.out.println("*****"+i1+" "+i2+" "+s3+"

121、 "+s4);</p><p>  String sql="insert into orderDetails values("+i1+",'"+s3+"','"+s4+"',"+i2+")";</p><p>  System.out.println

溫馨提示

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

評論

0/150

提交評論