2017畢業(yè)論文-基于JAVA的網(wǎng)上書(shū)店系統(tǒng)設(shè)計(jì).doc
《2017畢業(yè)論文-基于JAVA的網(wǎng)上書(shū)店系統(tǒng)設(shè)計(jì).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《2017畢業(yè)論文-基于JAVA的網(wǎng)上書(shū)店系統(tǒng)設(shè)計(jì).doc(19頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 畢業(yè)論文SHANGHAITUNIVERSITYGRADUATION PROJECT (THESIS)網(wǎng)上書(shū)店系統(tǒng)Online BookStore System源代碼聯(lián)系QQ153893706學(xué) 院 高等技術(shù)學(xué)院 專(zhuān) 業(yè) 計(jì)算機(jī)技術(shù)與應(yīng)用學(xué) 號(hào) 姓 名 導(dǎo) 師 完成日期 目錄中英文摘要第一章 JAVA的網(wǎng)絡(luò)功能與編程1-1 JAVA語(yǔ)言簡(jiǎn)介1-2 JAVA語(yǔ)言在網(wǎng)絡(luò)上的應(yīng)用1-3 JSP的基礎(chǔ)Servlet 技術(shù)第二章 Struts概述2-1 Struts的由來(lái)和發(fā)展2-1-1 MVC簡(jiǎn)介2-2 Struts優(yōu)缺點(diǎn)3-3 Struts的工作流程第三章 網(wǎng)上書(shū)店詳細(xì)設(shè)計(jì)3-1 需求分析3-2 總
2、體設(shè)計(jì)3-3 功能設(shè)計(jì)3-4 數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)3-4-1 數(shù)據(jù)庫(kù)的需求分析3-4-2 創(chuàng)建數(shù)據(jù)表的腳本3-5 網(wǎng)上書(shū)店基本流程3-6 網(wǎng)上書(shū)店各頁(yè)面功能3-7 業(yè)務(wù)邏輯層各bean功能3-8 控制處理層總結(jié)參考文獻(xiàn)摘要JAVA語(yǔ)言是目前Internet上大型的WEB應(yīng)用程序開(kāi)發(fā)時(shí)使用得最熱門(mén)的編程語(yǔ)言,本文描述了JAVA和JSP技術(shù)的特點(diǎn)以及在互聯(lián)網(wǎng)上的使用情況,介紹這兩種技術(shù)的重要編程方法和兩者之關(guān)的聯(lián)系,同時(shí)也會(huì)應(yīng)用相關(guān)的Struts框架,并完成一個(gè)基于這種技術(shù)的網(wǎng)上書(shū)店系統(tǒng)?!娟P(guān)鍵字】JAVA, Struts, Servlet, JSP, 網(wǎng)絡(luò)編程, 電子商務(wù), 網(wǎng)上書(shū)店Abstract
3、At present JAVA is the hottest programming language for WEB development, This text described the characteristics of JAVA and JSP technology and the state of operating on Internet, It introduced the relationship between them and the important programming method of the double technology, And also show
4、 the Struts technology, And work out an online bookstore system base on this kind of technology. Keywords: JAVA, Struts, Servlet, JSP, web program, internet, bookshop 第一章 JAVA的網(wǎng)絡(luò)功能與編程1-1JAVA語(yǔ)言簡(jiǎn)介 Java是一種簡(jiǎn)單易用、完全面向?qū)ο?、具有平臺(tái)無(wú)關(guān)性且安全可靠的主要面向Internet的開(kāi)發(fā)工具。自從1995年正式問(wèn)世以來(lái),Java的快速發(fā)展已經(jīng)讓整個(gè)Web世界發(fā)生了翻天覆地的變化。在早期,Java比較多
5、的用在瀏覽器上,插入到網(wǎng)頁(yè)中(即是Java Applet程序),成為最靈活、最強(qiáng)大的網(wǎng)頁(yè)多媒體的載體,但由于Java虛擬機(jī)相對(duì)于個(gè)人電腦而言,有占用資源大,安全性相對(duì)較差等缺點(diǎn),Applet逐漸的被后起之秀Flash所替代,但隨著Java Servlet的推出,Java在電子商務(wù)方面開(kāi)始嶄露頭角,最新的JSP(Java Server Page)技術(shù)的推出,更是讓Java成為基于Web的應(yīng)用程序的首選開(kāi)發(fā)工具,目前的Java技術(shù)已成為所有大型電子商務(wù)項(xiàng)目的必然選擇。1-2 JAVA語(yǔ)言在網(wǎng)絡(luò)上的應(yīng)用 Java程序可以獲取網(wǎng)絡(luò)上結(jié)點(diǎn)的圖象、聲音、HTML文檔及文本等資源,并可以對(duì)獲得的資源進(jìn)行處理
6、。例如Java程序可以每隔一定時(shí)間讀取某結(jié)點(diǎn)提供的最新數(shù)據(jù),并以圖表的形式顯示出來(lái)。在編程處理上,一般先生成一個(gè)URL類(lèi)型的對(duì)象,然后用 Java中相應(yīng)的方法(method)獲取該對(duì)象所代表的資源。1-3 JSP的基礎(chǔ)Servlet 技術(shù) Java Servlet是JSP技術(shù)的基礎(chǔ),JSP本身就是預(yù)先被編譯成Servlet,然后再運(yùn)行的,而且大型的Web應(yīng)用程序的開(kāi)發(fā)需要Java Servlet和JSP配合才能完成,Servlet這個(gè)名稱(chēng)大概源于Applet,現(xiàn)在國(guó)內(nèi)的翻譯方式很多,本文為了避免誤會(huì),本文直接采用Servlet這個(gè)名稱(chēng)而不做任何翻譯,讀者如果愿意,可以稱(chēng)之為“小服務(wù)程序”。Se
7、rvlet其實(shí)和傳統(tǒng)的CGI程序和ISAPI、NSAPI等Web程序開(kāi)發(fā)工具的作用是相同的,在使用Java Servlet以后,用戶(hù)不必再使用效率低下的CGI方式,也不必使用只能在某個(gè)固定Web服務(wù)器平臺(tái)運(yùn)行的API方式來(lái)動(dòng)態(tài)生成Web頁(yè)面。許多Web服務(wù)器都支持Servlet,即使不直接支持Servlet的Web服務(wù)器也可以通過(guò)附加的應(yīng)用服務(wù)器和模塊來(lái)支持Servlet。得益于Java的跨平臺(tái)的特性,Servlet也是平臺(tái)無(wú)關(guān)的,實(shí)際上,只要符合Java Servlet規(guī)范,Servlet是完全平臺(tái)無(wú)關(guān)且是Web服務(wù)器無(wú)關(guān)的。由于Java Servlet內(nèi)部是以線程方式提供服務(wù),不必對(duì)于每個(gè)
8、請(qǐng)求都啟動(dòng)一個(gè)進(jìn)程,并且利用多線程機(jī)制可以同時(shí)為多個(gè)請(qǐng)求服務(wù),因此Java Servlet效率非常高。但Java Servlet也不是沒(méi)有缺點(diǎn),和傳統(tǒng)的CGI、ISAPI、NSAPI方式相同,Java Servlet是利用輸出HTML語(yǔ)句來(lái)實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)的,如果用Java Servlet來(lái)開(kāi)發(fā)整個(gè)網(wǎng)站,動(dòng)態(tài)部分和靜態(tài)頁(yè)面的整合過(guò)程簡(jiǎn)直就是一場(chǎng)噩夢(mèng)。這就是為什么SUN還要推出Java Server Pages的原因。第二章 Struts概述2-1 Struts的由來(lái)和發(fā)展Struts 框架工具是 Apache 基金會(huì) Jakarta 項(xiàng)目中推出的一個(gè)子項(xiàng)目。 Struts 在英文中是支架、支撐的意
9、思,這也體現(xiàn)出 Struts 在開(kāi)發(fā) Web 應(yīng)用程序過(guò)程所起到的重要作用, Struts 為 Web 應(yīng)用提供了通用的框架,讓開(kāi)發(fā)人員可以把主要精力集中在如何解決實(shí)際業(yè)務(wù)問(wèn)題上,與此同時(shí) Struts 框架也允許開(kāi)發(fā)人員根據(jù)實(shí)際需要進(jìn)行擴(kuò)展和定制,從而可以更好的適應(yīng)用戶(hù)的需求。采用 Struts 可以簡(jiǎn)化遵循 MVC 設(shè)計(jì)模式的 Web 應(yīng)用的開(kāi)發(fā)工作,很好地實(shí)現(xiàn)代碼重用,使開(kāi)發(fā)人員從一些繁瑣的工作中解脫出來(lái),快速開(kāi)發(fā)能夠充分發(fā)揮 JSP/Servlet 優(yōu)點(diǎn)、并具有強(qiáng)可擴(kuò)展性的 Web 應(yīng)用??傊?, Struts 的出現(xiàn)使得 Web 應(yīng)用的開(kāi)發(fā)過(guò)程大大簡(jiǎn)化,從而能夠縮短開(kāi)發(fā)周期、提高開(kāi)發(fā)效
10、率。 Struts 架構(gòu)一經(jīng)推出,即受到 Java 開(kāi)發(fā)群體的廣泛重視,從 2004 年開(kāi)始逐漸升溫,并日漸成為 Java 創(chuàng)建 Web 應(yīng)用開(kāi)發(fā)的最流行的框架工具,在目前 Java Web 程序員的招聘要求中,幾乎都提出了對(duì) Struts 的要求,精通 Struts 架構(gòu)已經(jīng)成為 Java Web 程序員必備的技能。 2-1-1 MVC簡(jiǎn)介模型-視圖-控制器(MVC)是80年代Smalltalk-80出現(xiàn)的一種軟件設(shè)計(jì)模式,現(xiàn)在已經(jīng)被廣泛的使用。 1、模型(Model)模型是應(yīng)用程序的主體部分。模型表示業(yè)務(wù)數(shù)據(jù),或者業(yè)務(wù)邏輯.2、視圖(View)視圖是應(yīng)用程序中用戶(hù)界面相關(guān)的部分,是用戶(hù)看到
11、并與之交互的界面。 3、控制器(controller) 控制器工作就是根據(jù)用戶(hù)的輸入,控制用戶(hù)界面數(shù)據(jù)顯示和更新model對(duì)象狀態(tài)。MVC 式的出現(xiàn)不僅實(shí)現(xiàn)了功能模塊和顯示模塊的分離,同時(shí)它還提高了應(yīng)用系統(tǒng)的可維護(hù)性、可擴(kuò)展性、可移植性和組件的可復(fù)用性 早期的程序中,如果不注意對(duì)數(shù)功能和顯示的解耦合,常常會(huì)導(dǎo)致程序的復(fù)雜及難以維護(hù)。很多VB,Delphi等RAD程序都有這種問(wèn)題。甚至現(xiàn)在的C#,Java有時(shí)候也會(huì)出現(xiàn)把業(yè)務(wù)邏輯寫(xiě)在顯示模塊中的現(xiàn)象 管MVC設(shè)計(jì)模式很早就提出,但在Web項(xiàng)目的開(kāi)發(fā)中引入MVC卻是步履維艱。主要原因:一是在早期的Web項(xiàng)目的開(kāi)發(fā)中,程序語(yǔ)言和HTML的分離一直難以
12、實(shí)現(xiàn)。CGI程序以字符串輸出的形式動(dòng)態(tài)地生成HTML內(nèi)容。后來(lái)隨著腳本語(yǔ)言的出現(xiàn),前面的方式又被倒了過(guò)來(lái),改成將腳本語(yǔ)言書(shū)寫(xiě)的程序嵌入在HTML內(nèi)容中。這兩種方式有一個(gè)相同的不足之處即它們總是無(wú)法將程序語(yǔ)言和HTML分離。二是腳本語(yǔ)言的功能相對(duì)較弱,缺乏支持MVC設(shè)計(jì)模式的一些必要的技術(shù)基礎(chǔ)。直到基于J2EE的JSP Model 2問(wèn)世時(shí)才得以改觀。它用JSP技術(shù)實(shí)現(xiàn)視圖的功能,用Servlet技術(shù)實(shí)現(xiàn)控制器的功能,用JavaBean技術(shù)實(shí)現(xiàn)模型的功能 JSP Model 1 與 JSP Model 2SUN在JSP出現(xiàn)早期制定了兩種規(guī)范,稱(chēng)為Model1和Model2。雖然Model2在一定
13、程度上實(shí)現(xiàn)了MVC,但是它的應(yīng)用用并不盡如人意 JSP Model 1 JSP Model 2 model2 容易使系統(tǒng)出現(xiàn)多個(gè)Controller,并且對(duì)頁(yè)面導(dǎo)航的處理比較復(fù)雜 有些人覺(jué)得model2仍不夠好,于是Craig R. McClanahan 2000年5月 提交了一個(gè)WEB framework給Java Community.這就是后來(lái)的Struts.2001年7月,Struts1.0,正式發(fā)布。該項(xiàng)目也成為了Apache Jakarta的子項(xiàng)目之一 Struts 質(zhì)上就是在Model2的基礎(chǔ)上實(shí)現(xiàn)的一個(gè)MVC架構(gòu)。它只有一個(gè)中心控制器,他采用XML定制轉(zhuǎn)向的URL。采用Actio
14、n來(lái)處理邏輯2-2 Struts優(yōu)缺點(diǎn)優(yōu)點(diǎn): Struts跟Tomcat、Turbine等諸多Apache項(xiàng)目一樣,是開(kāi)源軟件,這是它的一大優(yōu)點(diǎn)。使開(kāi)發(fā)者能更深入的了解其內(nèi)部實(shí)現(xiàn)機(jī)制。除此之外,Struts的優(yōu)點(diǎn)主要集中體現(xiàn)在兩個(gè)方面:Taglib和頁(yè)面導(dǎo)航。Taglib是Struts的標(biāo)記庫(kù),靈活動(dòng)用,能大大提高開(kāi)發(fā)效率。另外,就目前國(guó)內(nèi)的JSP開(kāi)發(fā)者而言,除了使用JSP自帶的常用標(biāo)記外,很少開(kāi)發(fā)自己的標(biāo)記,或許Struts是一個(gè)很好的起點(diǎn)。關(guān)于頁(yè)面導(dǎo)航,我認(rèn)為那將是今后的一個(gè)發(fā)展方向,事實(shí)上,這樣做,使系統(tǒng)的脈絡(luò)更加清晰。通過(guò)一個(gè)配置文件,即可把握整個(gè)系統(tǒng)各部分之間的聯(lián)系,這對(duì)于后期的維護(hù)
15、有著莫大的好處。尤其是當(dāng)另一批開(kāi)發(fā)者接手這個(gè)項(xiàng)目時(shí),這種優(yōu)勢(shì)體現(xiàn)得更加明顯。缺點(diǎn): Taglib是Struts的一大優(yōu)勢(shì),但對(duì)于初學(xué)者而言,卻需要一個(gè)持續(xù)學(xué)習(xí)的過(guò)程,甚至還會(huì)打亂你網(wǎng)頁(yè)編寫(xiě)的習(xí)慣,但是,當(dāng)你習(xí)慣了它時(shí),你會(huì)覺(jué)得它真的很棒。Struts將MVC的Controller一分為三,在獲得結(jié)構(gòu)更加清晰的同時(shí),也增加了系統(tǒng)的復(fù)雜度。Struts從產(chǎn)生到現(xiàn)在還不到半年,但已逐步越來(lái)越多運(yùn)用于商業(yè)軟件。雖然它現(xiàn)在還有不少缺點(diǎn),但它是一種非常優(yōu)秀的J2EEMVC實(shí)現(xiàn)方式。3-3 Struts的工作流程下圖是Struts的工作流程,所有的請(qǐng)求都提交給ActionServlet來(lái)處理。ActionS
16、ervlet是一個(gè)FrontController,它是一個(gè)標(biāo)準(zhǔn)的Servlet,它將request轉(zhuǎn)發(fā)給RequestProcessor來(lái)處理, ActionMapping是ActionConfig的子類(lèi),實(shí)質(zhì)上是對(duì)struts-config.xml的一個(gè)映射,從中可以取得所有的配置信息 RequestProcessor根據(jù)提交過(guò)來(lái)的url,如*.do,從ActionMapping 中得到相應(yīng)的ActionForn和Action。然后將request的參數(shù)對(duì)應(yīng)到ActionForm中,進(jìn)行form驗(yàn)證。如果驗(yàn)證通過(guò)則調(diào)用Action的execute()方法來(lái)執(zhí)行Action,最終返回Actio
17、nFoward。 ActionFoward是對(duì)mapping中一個(gè)foward的包裝,對(duì)應(yīng)于一個(gè)url ActionForm使用了ViewHelper模式,是對(duì)HTML中form的一個(gè)封裝。其中包含有validate方法,用于驗(yàn)證form數(shù)據(jù)的有效性。ActionForm是一個(gè)符合JavaBean規(guī)范的類(lèi),所有的屬性都應(yīng)滿(mǎn)足get和set對(duì)應(yīng)。對(duì)于一些復(fù)雜的系統(tǒng),還可以采用DynaActionForm來(lái)構(gòu)造動(dòng)態(tài)的Form,即通過(guò)預(yù)制參數(shù)來(lái)生成Form。這樣可以更靈活的擴(kuò)展程序。 ActionErrors是對(duì)錯(cuò)誤信息的包裝,一旦在執(zhí)行action或者form.validate中出現(xiàn)異常,即可產(chǎn)生
18、一個(gè)ActionError并最終加入到ActionErrors。在Form驗(yàn)證的過(guò)程中,如果有Error發(fā)生,則會(huì)將頁(yè)面重新導(dǎo)向至輸入頁(yè),并提示錯(cuò)誤。 Action是用于執(zhí)行業(yè)務(wù)邏輯的RequsestHandler。每個(gè)Action都只建立一個(gè)instance。Action不是線程安全的,所以不應(yīng)該在Action中訪問(wèn)特定資源。一般來(lái)說(shuō),應(yīng)改使用 Business Delegate 模式來(lái)對(duì)Business tier進(jìn)行訪問(wèn)以解除耦合。 Struts提供了多種Action供選擇使用。普通的Action只能通過(guò)調(diào)用execute執(zhí)行一項(xiàng)任務(wù),而DispatchAction可以根據(jù)配置參數(shù)執(zhí)行,而
19、不是僅進(jìn)入execute()函數(shù),這樣可以執(zhí)行多種任務(wù)。如insert,update等。LookupDispatchAction可以根據(jù)提交表單按鈕的名稱(chēng)來(lái)執(zhí)行函數(shù)。第三章 網(wǎng)上書(shū)店詳細(xì)設(shè)計(jì)3-1 需求分析 網(wǎng)上書(shū)店系統(tǒng)主要是實(shí)現(xiàn)網(wǎng)上選書(shū)、購(gòu)書(shū)、產(chǎn)生訂單等功能的系統(tǒng)。一個(gè)典型的網(wǎng)上商城一般都需要實(shí)現(xiàn)商品信息的動(dòng)態(tài)提示、購(gòu)物車(chē)管理、客戶(hù)信息注冊(cè)登錄管理、訂單處理等模塊。根據(jù)網(wǎng)上書(shū)店的基本需求,本系統(tǒng)需要完成的具體任務(wù)如下:A. 書(shū)圖查詢(xún): 當(dāng)客戶(hù)進(jìn)入網(wǎng)上書(shū)店時(shí),應(yīng)該在主頁(yè)面中分類(lèi)顯示最新的書(shū)目信息,以供客戶(hù)選擇所需圖書(shū),同時(shí)也應(yīng)該提供按照?qǐng)D書(shū)名稱(chēng),或者作者信息快速查詢(xún)所需書(shū)目信息的功能。B. 購(gòu)
20、物車(chē)管理:當(dāng)客戶(hù)選擇購(gòu)買(mǎi)某圖書(shū)產(chǎn)品時(shí),應(yīng)該能夠?qū)?duì)應(yīng)圖書(shū)信息,如:價(jià)格、數(shù)量記錄到對(duì)應(yīng)的購(gòu)物車(chē)中,并允許客戶(hù)返回書(shū)目查詢(xún)頁(yè)面,選擇其他商品,并添加到購(gòu)物車(chē)中,當(dāng)對(duì)應(yīng)的購(gòu)物訂單生成后,應(yīng)該能夠自動(dòng)清除以生成訂單的購(gòu)物車(chē)中的信息。C. 訂單處理:對(duì)應(yīng)客戶(hù)購(gòu)買(mǎi)圖書(shū)商品信息的需求,在確定了所購(gòu)圖書(shū)商品的價(jià)格、數(shù)量等信息后,提示用戶(hù)選擇對(duì)應(yīng)的送貨方式及付款方式,最終生成對(duì)應(yīng)的訂單記錄,以便于網(wǎng)站配貨人員依據(jù)訂單信息進(jìn)行后續(xù)的出貨、送貨的處理。D. 會(huì)員注冊(cè):為了能夠?qū)崿F(xiàn)圖書(shū)商品的購(gòu)買(mǎi),需要管理客戶(hù)相關(guān)的聯(lián)系方式、送貨地點(diǎn)等相關(guān)的信息。3-2 總體設(shè)計(jì)系統(tǒng)組成下表中給出了構(gòu)成網(wǎng)上書(shū)店系統(tǒng)的各個(gè)組件,通過(guò)下
21、表,可以從宏觀上了解各個(gè)組件的功能。用戶(hù)表示層(視圖)控制處理層(控制器)業(yè)務(wù)邏輯層(模型)bookMain.jspActionFormActionDBBookShow.jspLoginFormFirstActionConstantsBookShopCart.jspUserFormBookDetailActionBookOrderAddress.jspBookIdFormBookSearchActionBookCatOrderConfirm.jspBookCatIdFormLoginActionOrderUserLogin.jspPageIdFormBookBuyActionShopCartU
22、serRegister.jspBookShopCartFromAddrConfirmActionUserOrderHistory.jspBookSearchFormClearShopCartActionWrong.jspDeliveryFormOrderDelActionOrderIdFormOrderHistoryActionPageCtrlActionRegistActionUpdateShopCartAction3-3 功能設(shè)計(jì)1圖書(shū)信息管理該模塊實(shí)現(xiàn)圖書(shū)書(shū)目信息的分類(lèi)顯示,也是提供圖書(shū)信息依據(jù)書(shū)名及作者信息快速搜索的功能。此外,在用戶(hù)選擇了對(duì)應(yīng)書(shū)目信息后,還可以顯示出有關(guān)該圖書(shū)的詳細(xì)信
23、息,以便于客戶(hù)了解所購(gòu)商品。2購(gòu)物車(chē)管理用于維護(hù)每一個(gè)進(jìn)入網(wǎng)上書(shū)店的客戶(hù)對(duì)應(yīng)的購(gòu)物車(chē)。即將客戶(hù)所選購(gòu)的圖書(shū)商品信息記錄到對(duì)應(yīng)的購(gòu)物車(chē)中,以便于到收銀臺(tái)進(jìn)行結(jié)賬處理。3會(huì)員注冊(cè)實(shí)現(xiàn)網(wǎng)上書(shū)店客戶(hù)信息的注冊(cè)、及身份驗(yàn)證。由于目前網(wǎng)上商城普遍采用的方式為送貨上門(mén)或者郵寄,因此需要收集與客戶(hù)相關(guān)的聯(lián)系方式、通信地址等信息。4訂單處理根據(jù)客戶(hù)購(gòu)物車(chē)中的信息,以及客戶(hù)所選擇的送貨方式和付款方式,連同客戶(hù)對(duì)應(yīng)的個(gè)人信息生成訂單,以便于后續(xù)進(jìn)行送貨處理。3-4 數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)3-4-1 數(shù)據(jù)庫(kù)的需求分析依據(jù)網(wǎng)上書(shū)店的處理需求,對(duì)就數(shù)據(jù)表的設(shè)計(jì)及功能如下。A 圖書(shū)基本信息表:存放網(wǎng)上書(shū)店所銷(xiāo)售圖書(shū)的基本信息。B
24、 圖書(shū)分類(lèi)基本信息表:存放網(wǎng)上書(shū)店所提供圖書(shū)分類(lèi)的信息。C 客戶(hù)基本信息表:存放書(shū)店客戶(hù)的基本信息。D 訂單信息表:存放與客戶(hù)相關(guān)的訂單的基本信息。E 訂單條目詳細(xì)信息表:存放訂單中詳細(xì)條目的基本信息。3-4-2 創(chuàng)建數(shù)據(jù)表的腳本代碼如下:_/圖書(shū)分類(lèi)基本信息表DROP TABLE bookcat CASCADE CONSTRAINTS;CREATE TABLE bookcat(idNUMBER PRIMARY KEY,catnameVARCHAR2 (40) NOT NULL);/圖書(shū)基本信息表DROP TABLE book CASCADE CONSTRAINTS;CREATE TABLE
25、book(idNUMBER PRIMARY KEY,catidNUMBER NOT NULLREFERENCES bookcat(id) ON DELETE CASCADE,nameVARCHAR2 (50) NOT NULL,priceNUMBER NOT NULL,salepriceNUMBER NOT NULL,descriptVARCHAR2 (500) NOT NULL,authorVARCHAR2 (50) NOT NULL,contentsVARCHAR2 (2000) NULL,imageVARCHAR2 (50) NULL);/客戶(hù)基本信息表DROP TABLE storeu
26、ser CASCADE CONSTRAINTS;CREATE TABLE storeuser(usernameVARCHAR2 (20) PRIMARY KEY,passwordVARCHAR2 (20) NOT NULL,nameVARCHAR2 (20) NOT NULL,telVARCHAR2 (20) NOT NULL,addressVARCHAR2 (100) NOT NULL,emailVARCHAR2 (50) NULL);/訂單信息表DROP TABLE orders CASCADE CONSTRAINTS;CREATE TABLE orders(idNUMBER PRIMAR
27、Y KEY,usernameVARCHAR2 (20) NOT NULLREFERENCES storeuser(username) ON DELETE CASCADE,timeDATE NOT NULL,deliveryVARCHAR2 (20) NOT NULL,paymentVARCHAR2 (20) NOT NULL );/訂單條目詳細(xì)信息表DROP TABLE orderdetail CASCADE CONSTRAINTS;CREATE TABLE orderdetail(orderidNUMBER NOT NULLREFERENCES orders(id) ON DELETE CA
28、SCADE,bookidNUMBER NOT NULLREFERENCES book(id) ON DELETE CASCADE,countNUMBER NOT NULL,priceNUMBER NOT NULL);_3-5 網(wǎng)上書(shū)店基本流程網(wǎng)上書(shū)店在運(yùn)行過(guò)程中頁(yè)面的基本流程如下圖:bookMain.jsp圖書(shū)查詢(xún)bookShow.jsp圖書(shū)詳情顯示bookShopCart.jsp購(gòu)物車(chē)管理userLogin.jsp會(huì)員登錄userRegister.jsp新會(huì)員注冊(cè)orderAddress.jsp會(huì)員地址確認(rèn)orderConfirm.jsp訂單確認(rèn)orderHistory.jsp歷史訂單查詢(xún)3
29、-6 網(wǎng)上書(shū)店各頁(yè)面功能3-6-1 網(wǎng)上書(shū)店首頁(yè)bookMain.jsp詳細(xì)功能及描述l 獲取圖書(shū)分類(lèi)信息以及圖書(shū)基本信息集合l 循環(huán)顯示圖書(shū)分類(lèi)信息l 提交顯示指定分類(lèi)圖書(shū)信息的請(qǐng)求,同時(shí)傳遞對(duì)應(yīng)圖書(shū)分類(lèi)編號(hào)l 提交書(shū)目搜索請(qǐng)求及搜索條件的表單l 提交搜索關(guān)鍵字的表單元素l 選擇搜索條件的表單元素l 顯示圖書(shū)記錄總數(shù)、當(dāng)前頁(yè)面編號(hào)以及總頁(yè)數(shù)l 循環(huán)顯示對(duì)應(yīng)圖書(shū)書(shū)目信息l 顯示圖書(shū)名稱(chēng)、價(jià)格、銷(xiāo)售價(jià)格、作者信息l 提交顯示圖書(shū)詳細(xì)信息請(qǐng)求的超鏈接l 提交分頁(yè)顯示請(qǐng)求的超鏈接,同時(shí)提交指定頁(yè)面編號(hào)在本頁(yè)面中,當(dāng)單擊選擇書(shū)目分類(lèi)時(shí),將提交“bookSearch.do?bookCatId=%=boo
30、kCat.getId()%mode=1”請(qǐng)求,以便于獲取對(duì)應(yīng)圖書(shū)分類(lèi)的相關(guān)信息。當(dāng)選擇了查詢(xún)依據(jù),并且輸入了對(duì)應(yīng)關(guān)鍵字,單擊“搜索”按鈕時(shí),將提交“bookSearch.do”請(qǐng)求,同時(shí)提交查詢(xún)條件,進(jìn)行后續(xù)書(shū)目信息搜索的處理。當(dāng)在書(shū)目列表中單擊查看詳細(xì)信息請(qǐng)求時(shí),將發(fā)出“bookDetail.do”請(qǐng)求,同時(shí)傳遞對(duì)應(yīng)圖書(shū)記錄的編號(hào),以獲取指定圖書(shū)更加詳細(xì)的信息。此外,在單擊“首頁(yè)”、“上頁(yè)”、“下頁(yè)”超鏈接后,將分別提交“bookPage.dopageId=”、“bookPage.dopageId=”、“bookPage.dopageId=”等請(qǐng)求,以實(shí)現(xiàn)頁(yè)面的跳轉(zhuǎn)3-6-2 顯示圖書(shū)詳細(xì)信
31、息bookShow.jsp頁(yè)面詳細(xì)功能及描述l 依據(jù)圖書(shū)記錄編號(hào)獲取待顯示詳細(xì)信息的圖書(shū)類(lèi)型的對(duì)象l 分別顯示該圖書(shū)對(duì)象的詳細(xì)信息l 顯示圖書(shū)封面圖片、名稱(chēng)、詳細(xì)介紹、價(jià)格、銷(xiāo)售價(jià)格l 單擊“購(gòu)買(mǎi)”按鈕后,將提交放入購(gòu)物車(chē)的請(qǐng)求l 顯示圖書(shū)目錄本頁(yè)面是在控制器響應(yīng)了網(wǎng)上書(shū)店主頁(yè)提交的查看圖書(shū)詳細(xì)信息請(qǐng)求,即“bookDeatial.do”請(qǐng)求后,跳轉(zhuǎn)到的頁(yè)面。在該頁(yè)面中將獲取到的指定圖書(shū)詳細(xì)信息顯示出來(lái),同時(shí)如果用戶(hù)單擊“購(gòu)買(mǎi)”按鈕,將提交“bookBuy.do?bookId=”請(qǐng)求,進(jìn)行后續(xù)放入購(gòu)物車(chē)的處理。3-6-3顯示購(gòu)物車(chē)信息bookShopCart.jsp頁(yè)面詳細(xì)功能及描述l 獲取該
32、用戶(hù)購(gòu)物車(chē)中信息的集合l 提交更新購(gòu)物車(chē)請(qǐng)求的表單l 循環(huán)顯示購(gòu)物車(chē)中的每一條購(gòu)物記錄信息l 設(shè)置購(gòu)買(mǎi)數(shù)量的文本框l 顯示圖書(shū)銷(xiāo)售價(jià)格l 顯示圖書(shū)總價(jià)l 從購(gòu)物車(chē)中移除購(gòu)買(mǎi)記錄信息l 更新訂單按鈕l 提交繼續(xù)購(gòu)書(shū)請(qǐng)求的超鏈接l 提交清空購(gòu)物車(chē)請(qǐng)求的超鏈接l 提交結(jié)算付款請(qǐng)求的超鏈接 本頁(yè)面是在用戶(hù)選擇購(gòu)買(mǎi)某種圖書(shū)商品后,進(jìn)入的頁(yè)面。在該頁(yè)面中將顯示該用戶(hù)購(gòu)物車(chē)中現(xiàn)有的所有購(gòu)買(mǎi)需求記錄。同時(shí)提供更新購(gòu)物車(chē)的操作界面,例如,可以輸入購(gòu)買(mǎi)數(shù)量或者選擇刪除購(gòu)買(mǎi)記錄。單擊“更新訂單”按鈕后,將提交“updateShopCart.do”請(qǐng)求,進(jìn)行更新購(gòu)物車(chē)信息的處理。此外,也可以單擊“繼續(xù)購(gòu)書(shū)”按鈕,提交
33、“bookSearch.do”請(qǐng)求返回網(wǎng)上書(shū)店主頁(yè)面繼續(xù)購(gòu)書(shū),或者單擊“清空購(gòu)物車(chē)”按鈕提交“clearShopCart.do”請(qǐng)求。同時(shí),如果用戶(hù)確認(rèn)去收銀臺(tái),則可以單擊“結(jié)算付款”按鈕跳轉(zhuǎn)到“userLogin.jsp”頁(yè)面進(jìn)行用戶(hù)登錄。3-6-4網(wǎng)上書(shū)店客戶(hù)登錄userLogin.jsp頁(yè)面詳細(xì)功能及描述l 提交用戶(hù)登錄請(qǐng)求,同時(shí)提交登錄用戶(hù)信息的表單l 提交登錄用戶(hù)用戶(hù)名及密碼的表單元素l 登錄按鈕l 提交新用戶(hù)注冊(cè)請(qǐng)求的超鏈接本頁(yè)面是客戶(hù)在購(gòu)物車(chē)頁(yè)面單擊“結(jié)算付款”按鈕后跳轉(zhuǎn)過(guò)來(lái)的頁(yè)面,在該頁(yè)面中,用戶(hù)在表單中輸入用戶(hù)名及密碼,單擊“用戶(hù)登錄”按鈕后,將提交“l(fā)ogin.do”請(qǐng)求,
34、以便于進(jìn)行后續(xù)獲取用戶(hù)相關(guān)信息的處理,對(duì)于沒(méi)有用戶(hù)身份的新客戶(hù),可以在本頁(yè)面中單擊“新用戶(hù)注冊(cè)”按鈕,跳轉(zhuǎn)到“userRegister.jsp”頁(yè)面進(jìn)行用戶(hù)注冊(cè)。3-6-5 網(wǎng)上書(shū)店客戶(hù)注冊(cè)u(píng)serRegister.jsp頁(yè)面詳細(xì)功能及描述l 提交新用戶(hù)注冊(cè)請(qǐng)求,同時(shí)提交新用戶(hù)注冊(cè)信息的表單l 提交注冊(cè)用戶(hù)姓名、地址、電子郵件地址、電話、用戶(hù)名、密碼以及確認(rèn)密碼的表單元素l 注冊(cè)按鈕在本頁(yè)面中注冊(cè)用戶(hù)可以在表單中輸入對(duì)應(yīng)的注冊(cè)信息,在單擊“注冊(cè)”按鈕后,將提交“regist.do”請(qǐng)求,同時(shí)提交新用戶(hù)的相關(guān)注冊(cè)信息,以便于進(jìn)行后續(xù)新用戶(hù)注冊(cè)的處理。3-6-6 選擇送貨方式及付款方式orderA
35、ddress.jsp頁(yè)面詳細(xì)功能及描述l 獲取客戶(hù)信息l 提交選擇送貨方式及付款方式的表單l 顯示客戶(hù)信息、姓名、地址、電話、送貨方式、付款方式本頁(yè)面是在用戶(hù)登錄通過(guò)后,跳轉(zhuǎn)到的頁(yè)面,在該頁(yè)面中首先獲取對(duì)應(yīng)用戶(hù)的客戶(hù)資料,同時(shí)提供送貨方式以及付款方式的選擇,在用戶(hù)單擊“確認(rèn)”按鈕后,將提交“addrConfirm.do”請(qǐng)求,生成生續(xù)完整的訂單信息。3-6-7 確認(rèn)訂單信息orderConfirm.jsp頁(yè)面詳細(xì)功能及描述l 獲取購(gòu)物車(chē)信息集合l 獲取訂單信息、客戶(hù)信息l 顯示客戶(hù)姓名、地址、電話l 顯示購(gòu)物車(chē)中的信息l 顯示所購(gòu)圖書(shū)書(shū)名、數(shù)量、總價(jià)l 顯示整張訂單總價(jià)l 顯示訂單信息中的送貨
36、方式信息l 顯示付款方式信息l 顯示訂單編號(hào)l 提交繼續(xù)購(gòu)書(shū)的請(qǐng)求l 提交查看該用戶(hù)所有訂單的請(qǐng)求本頁(yè)面中將全面顯示該客戶(hù)本次購(gòu)物生成的詳細(xì)訂單信息,同時(shí)如果單擊“繼續(xù)購(gòu)書(shū)”按鈕將提交“bookSearch.do”請(qǐng)求返回網(wǎng)上書(shū)店主頁(yè)面,如果單擊“查看訂單”按鈕將提交“orderHistory.do”,跳轉(zhuǎn)到“orderHistory.jsp”頁(yè)面。3-6-8 顯示客戶(hù)所有訂單信息orderHistory.jsp頁(yè)面詳細(xì)功能及描述l 獲取該用戶(hù)所有歷史訂單信息l 顯示訂單信息信息列表l 顯示訂單編號(hào)、時(shí)間、總價(jià)l 提交取消訂單請(qǐng)求的超鏈接l 提交返回購(gòu)書(shū)請(qǐng)求的超鏈接本頁(yè)面將顯示與當(dāng)前用戶(hù)相關(guān)的
37、所有訂單信息。同時(shí)用戶(hù)可以單擊“取消此單”超鏈接提交“delOrder.do?orderId=”請(qǐng)求刪除該訂單信息,此外也可以單擊“返回購(gòu)書(shū)”按鈕提交“bookSearch.do”請(qǐng)求跳轉(zhuǎn)到網(wǎng)上書(shū)店主頁(yè)面。3-7 業(yè)務(wù)邏輯層各bean功能在本系統(tǒng)的業(yè)務(wù)邏輯層中分別完成了對(duì)圖書(shū)信息、圖書(shū)分類(lèi)信息、購(gòu)物車(chē)信息、訂單信息以及客戶(hù)信息等類(lèi)型對(duì)象的保存和處理。所有文件包含在WEB-INFclasses目錄中3-7-1 封裝了數(shù)據(jù)庫(kù)相關(guān)操作的bean(DB.java)采用了Struts架構(gòu)下提供的數(shù)據(jù)庫(kù)連接池建立與數(shù)據(jù)庫(kù)的連接,在該bean中通過(guò)構(gòu)造方法建立與數(shù)據(jù)庫(kù)的連接,并提供了相應(yīng)的方法完成數(shù)據(jù)庫(kù)中的
38、查詢(xún)、更新等操作,同時(shí)也提供了關(guān)閉數(shù)據(jù)庫(kù)連接的方法,以便于及時(shí)釋放資源。3-7-2 封裝了圖書(shū)住處處理的bean(Book.java)除聲明了與圖書(shū)基本數(shù)據(jù)相關(guān)的基本屬性和方法之外,還提供了圖書(shū)信息的查詢(xún)顯示處理相關(guān)的幾個(gè)方法。其中在調(diào)用查詢(xún)滿(mǎn)足條件的圖書(shū)信息方法時(shí),需要提供查詢(xún)的依據(jù),例如,分類(lèi)、按作者還是按書(shū)名,對(duì)應(yīng)關(guān)鍵字等。3-7-3 封裝了圖書(shū)分類(lèi)信息處理的bean(BookCat.java)除了聲明了與圖書(shū)分類(lèi)數(shù)據(jù)相關(guān)的基本屬性和方法之外,還提供了與圖書(shū)分類(lèi)信息查詢(xún)及顯示處理相關(guān)的幾個(gè)方法。3-7-4 封裝了圖書(shū)查詢(xún)及顯示條件的bean(SearchStatus.java)主要封裝了
39、設(shè)置圖書(shū)搜索查詢(xún)條件相關(guān)的屬性和方法,該程序中的方法將在搜索圖書(shū)信息的程序中被調(diào)用。3-7-5 封裝了購(gòu)物車(chē)信息處理的bean(ShopCart.java)為了能夠簡(jiǎn)化類(lèi)的定義,考慮到購(gòu)物車(chē)中所需要處理的圖書(shū)基本信息與圖書(shū)類(lèi)型對(duì)象中封裝的信息相同,只是需要再補(bǔ)充上購(gòu)買(mǎi)數(shù)量即可,因此在定義該類(lèi)時(shí)繼承了圖書(shū)信息類(lèi)。3-7-6 封裝了訂單住處處理的bean(Order. java)除聲明了與訂單中所需要處理的數(shù)據(jù)相關(guān)的基本屬性和方法之外,還提供了與訂單查詢(xún)、插入及刪除處理相關(guān)的幾個(gè)方法。此外,也提供了計(jì)算該訂單所涉及總金額的方法。3-7-7 封裝了客記信息處理的bean(User.java)除聲明了
40、與用戶(hù)數(shù)據(jù)相關(guān)的基本屬性和方法之外,還提供了與確認(rèn)用戶(hù)身份、獲取用戶(hù)相關(guān)信息、插入新用戶(hù)信息處理相關(guān)的幾個(gè)方法。3-7-8 常量文件(Constants.java)3-8 控制處理層下表是網(wǎng)上書(shū)店系統(tǒng)中的Action映射表。該映射決定了Action與其他Web組件之間的關(guān)聯(lián)關(guān)系。作為前后臺(tái)之間橋梁,本表中指明了每個(gè)Action的入口(即調(diào)用Action的組件)及出口(即請(qǐng)求轉(zhuǎn)發(fā)的目標(biāo)組件),以及傳遞Action的ActionForm。Action入口ActionForm出口BookSearchActionIndex.jspBookSearchFormBookMain.jspBookDetail
41、ActionBookMain.jspBookIdFormBookShow.jspPageCtrlActionBookMain.jspPageIdFormBookMain.jspLoginActionUserLogin.jspLoginFormOrderAddress.jspRegistActionUserRegister.jspUserFormUserLogin.jspBookBuyActionBookShow.jspBookIdFormBookShopCart.jspUpdateShopCartActionBookShopCart.jspBookShopCartFormBookShopCar
42、t.jspClearShopCartActionBookShopCart.jspBookShopCart.jspAddrConfirmActionOrderAddress.jspDeliveryFormOrderConfim.jspOrderHistoryActionOrderConfirm.jspOrderHistory.jspOrderDelActionOrderHistory.jspOrderIdFormOrderHistory.jsp1.BookSearchAction.java該程序負(fù)責(zé)處理查詢(xún)顯示滿(mǎn)足條件圖書(shū)書(shū)目信息時(shí)提交的“bookSearch.do”請(qǐng)求2.PageCtrlAc
43、tion.java該程序負(fù)責(zé)處理分頁(yè)顯示圖書(shū)書(shū)目信息時(shí)進(jìn)行頁(yè)面跳轉(zhuǎn)時(shí)提交的“bookPage.do”請(qǐng)求。3.BookDetailAction.Java該程序負(fù)責(zé)處理顯示指定圖書(shū)編號(hào)的對(duì)應(yīng)圖書(shū)詳細(xì)信息時(shí)提交的“bookDetail.do”請(qǐng)求。4.BookBuyAction.java該程序負(fù)責(zé)處理購(gòu)買(mǎi)圖書(shū)時(shí)提交的“bookBuy.do”請(qǐng)求。5.UpdateShopCartAction.java該程序負(fù)責(zé)處理修改購(gòu)物數(shù)量,或者刪除購(gòu)物記錄時(shí)提交的“updateShopCart.do”請(qǐng)求。6.ClearShopCartAction.java該程序負(fù)責(zé)處理從購(gòu)物車(chē)頁(yè)面提交的清空購(gòu)物車(chē)時(shí)的“cle
44、arShopCart.do”請(qǐng)求。7.LoginAction.java該程序負(fù)責(zé)處理從用戶(hù)登錄頁(yè)面提交的“l(fā)ogin.do”請(qǐng)求。8.RegistAction.java該程序負(fù)責(zé)處理從新用戶(hù)注冊(cè)頁(yè)面提交的“regist.do”請(qǐng)求。9.AddrConfirmAction.java該程序負(fù)責(zé)處理從訂單處理頁(yè)面提交的選擇送貨方式及付款方式的“addrConfirm.do”請(qǐng)求。10.OrderHistoryAction.java該程序負(fù)責(zé)處理從確認(rèn)訂單頁(yè)面提交查看所有訂單信息的“orderHistory.do”請(qǐng)求。11.OrderDelAction.java該程序負(fù)責(zé)處理從訂單信息顯示頁(yè)面選擇“
45、取消訂單”時(shí)提交“delOrder.do”請(qǐng)求。總結(jié)本文講述了Java/JSP/Struts在WEB應(yīng)用的一些基本知識(shí),并通過(guò)網(wǎng)上書(shū)店的程序?qū)SP的運(yùn)用進(jìn)行了深化,從本文中可看出JSP與Struts框架結(jié)合的模式,在電子商務(wù)上應(yīng)用十分靈活,不過(guò)要真正掌握好它們卻并不是一件容易的事情,在實(shí)際應(yīng)用的WEB開(kāi)發(fā)中,還有很多關(guān)于安全方面的問(wèn)題需要考慮。在這里要感謝上海浦東軟件園的培訓(xùn)部的江瑋老師,他在我論文及設(shè)計(jì)的定題以及修改上給予了我很多的支持,對(duì)我論文的完成幫助很大。參考資料:(1)JSP編程技巧/清宏計(jì)算機(jī)工作室編著. 北京:機(jī)械工業(yè)出版社,2001.1(2)精通JBuilder 3環(huán)境下的JAVA編程/銳思創(chuàng)作室編著. 北京:人民郵電出版社., 2001.1(3)深入JAVA Servlet 網(wǎng)絡(luò)編程. 清華大學(xué)出版社(4)Struts開(kāi)發(fā)入門(mén)與項(xiàng)目實(shí)踐. 北京:人民郵電出版社, 2005.819
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《晏子使楚》優(yōu)秀課件 (3)
- 科室醫(yī)院年終總結(jié)課件
- 常用邏輯用語(yǔ)章末總結(jié)課件(人教A版選修1-1)免
- 新版PEP四年級(jí)英語(yǔ)上冊(cè)Unit3-My-Friends-B-Let’s-learn完美版-PPT
- 金融科技機(jī)遇
- 抗菌藥物合理使用專(zhuān)家講座
- 阿奇霉素在臨床中的應(yīng)用專(zhuān)家講座
- 納米抗菌蠶絲被介紹
- 男性盆部和會(huì)陰斷層解剖研究
- 部編選擇性必修二經(jīng)濟(jì)與社會(huì)生活-第九課世紀(jì)以來(lái)人類(lèi)的經(jīng)濟(jì)與生活教學(xué)課件
- 春七年級(jí)數(shù)學(xué)下冊(cè) 82 整式乘法單項(xiàng)式與單項(xiàng)式相乘課件4 (新版)滬科版
- 部編人教版語(yǔ)文七年級(jí)下冊(cè)7.土地的誓言課件
- 手足口病
- 正壓通氣裝置課件
- 課件】食品分析與檢驗(yàn)技術(shù)第二章