JAVA網(wǎng)上書店管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).doc_第1頁
JAVA網(wǎng)上書店管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).doc_第2頁
JAVA網(wǎng)上書店管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).doc_第3頁
JAVA網(wǎng)上書店管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).doc_第4頁
JAVA網(wǎng)上書店管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).doc_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2007 屆屆畢業(yè)畢業(yè)生生 畢業(yè)論畢業(yè)論文文 題題 目目: : javajava網(wǎng)上書店管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)網(wǎng)上書店管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 院系名稱:院系名稱: 國際學(xué)院國際學(xué)院 專業(yè)班級:專業(yè)班級: 計(jì)算機(jī)應(yīng)用技術(shù)計(jì)算機(jī)應(yīng)用技術(shù) 0707 級級 0101 班班 學(xué)生姓名:學(xué)生姓名: 阮超阮超 學(xué)學(xué) 號:號: 2007394010920073940109 指導(dǎo)教師:指導(dǎo)教師: 劉偉杰劉偉杰 教師職稱:教師職稱: 講師講師 2010 年年 6 月月 2 日日 2 i 摘要摘要 隨著計(jì)算機(jī)的發(fā)展,數(shù)據(jù)庫技術(shù)在 internet 中的應(yīng)用越來越廣泛,為廣 大網(wǎng)絡(luò)用戶提供了更加周到和人性化的服務(wù)。個(gè)性化已逐漸成為當(dāng)今 web 應(yīng)用 的潮流。本文研究了一種網(wǎng)上書店系統(tǒng),此方案與現(xiàn)今網(wǎng)上已采用的一些方案 相比,具有用戶使用更簡單、界面更直觀等優(yōu)點(diǎn)。 本文的出發(fā)點(diǎn)也正是如此,本文通過對當(dāng)今社會上最流行的編程技術(shù) java 及發(fā)展越來越快的設(shè)計(jì)模式 mvc 的解析,全面的說明了制作一個(gè)網(wǎng)上書店所運(yùn)用 的技術(shù),第三章對制作一個(gè)網(wǎng)上書店的詳細(xì)說明,這個(gè)網(wǎng)上書店充分運(yùn)用了 java 及 mvc 模式,實(shí)現(xiàn)了用戶管理、商品查詢、商品購買、訂單管理等四個(gè)模塊。 該網(wǎng)上書店運(yùn)用的是受大部分編程好愛者認(rèn)可的 tomcat 服務(wù)器,并可運(yùn)行在 windows 和 linux 平臺,具有良好的移植性,并具有很強(qiáng)的親和力。 關(guān)鍵詞關(guān)鍵詞:java struts servlet jsp 網(wǎng)上書店 ii title online bookstores design and realize abstract with the development of computer science, database technology of the internet more extensively for the majority of internet users with a more thoughtful and humane services. customization has become the trend of todays web applications. in this paper, which is based on data association rules online bookstore, and now this programs has used the internet compared to the number of programs, with a simple user interface more intuitive, and other advantages. online bookstores in china have just started the development soon. as chinas internet became more widely accessible and online bookstores become more mature, there will be more and more consumer groups, market potential will be fully realized. the online bookstore outdated demanding, not only will not help to resolve the problem, but would delay opportunities to make their own in a passive position. a fish-yuan mu, not retreat networking. 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 the struts technology, and work out an online bookstore system base on this kind of technology. keywords: java struts servlet jsp bookshop iii 目目 次次 1 緒論 1 1.1 網(wǎng)上書店的研究背景1 1.2 國內(nèi)外的發(fā)展?fàn)顩r1 2 技術(shù)背景2 2.1 java 的網(wǎng)絡(luò)功能與編程.2 2.2 struts概述 .3 3 網(wǎng)上書店詳細(xì)設(shè)計(jì)8 3.1 需求分析8 3.2 總體設(shè)計(jì)9 3.3 功能設(shè)計(jì)9 3.4 數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)10 3.5 網(wǎng)上書店基本流程15 3.6 網(wǎng)上書店各頁面功能15 3.7 封裝了數(shù)據(jù)庫相關(guān)操作的bean.18 3.8 業(yè)務(wù)邏輯層各bean功能.18 3.9 控制處理層19 4 網(wǎng)上書店的實(shí)現(xiàn).21 4.1 用戶管理模塊21 4.2 商品查詢模塊26 4.3 商品購買模塊28 4.4 訂單管理模塊30 結(jié) 論.32 致 謝.33 參考文獻(xiàn).34 1 1 1 緒論緒論 1.11.1 網(wǎng)上書店的研究背景網(wǎng)上書店的研究背景 電子商務(wù)現(xiàn)在越來越受人們歡迎,是基于以下原因: (1)更廣闊的環(huán)境:人們不受時(shí)間的限制,不受空間的限制,不受傳統(tǒng)購 物的諸多限制,可以隨時(shí)隨地在網(wǎng)上交易。 (2)更廣闊的市場:在網(wǎng)上這個(gè)世界將會變得很小,一個(gè)商家可以面對全 球的消費(fèi)者,而一個(gè)消費(fèi)者可以在全球的任何一家商家購物。 (3)更快速的流通和低廉的價(jià)格:電子商務(wù)減少了商品流通的中間環(huán)節(jié), 節(jié)省了大量的開支,從而也大大降低了商品流通和交易的成本。 (4)更符合時(shí)代的要求:如今人們越來越追求時(shí)尚、講究個(gè)性,注重購物 的環(huán)境,網(wǎng)上購物,更能體現(xiàn)個(gè)性化的購物過程。 1.21.2 國內(nèi)外的發(fā)展?fàn)顩r國內(nèi)外的發(fā)展?fàn)顩r 在各行各業(yè)中離不開網(wǎng)絡(luò),這正是計(jì)算機(jī)被廣泛應(yīng)用于網(wǎng)上銷售系統(tǒng)的環(huán) 境,計(jì)算機(jī)的最大的好處在于利用它能夠進(jìn)行信息管理。使用計(jì)算機(jī)進(jìn)行信息 控制,不僅提高了工作效率,而且大大的提高了其安全性。 實(shí)際上,整個(gè)交易的過程可以分為三個(gè)階段: 第一個(gè)階段是信息交流階段:對于商家來說,此階段為發(fā)布信息階段。主 要是選擇自己的優(yōu)秀商品,精心組織自己的商品信息,建立自己的網(wǎng)頁,然后 加入名氣較大、影響力較強(qiáng)、點(diǎn)擊率較高的著名網(wǎng)站中,讓盡可能多的人們了 解你認(rèn)識你。對于買方來說,此階段是去網(wǎng)上尋找商品以及商品信息的階段。 主要是根據(jù)自己的需要,上網(wǎng)查找自己所需的信息和商品,并選擇信譽(yù)好服務(wù) 好價(jià)格低廉的商家。 第二階段是簽定商品合同階段:作為 b2b(商家對商家)來說,這一階段 是簽定合同、完成必需的商貿(mào)票據(jù)的交換過程。要注意的是:數(shù)據(jù)的準(zhǔn)確性、 可靠性、不可更改性等復(fù)雜的問題。作為 b2c(商家對個(gè)人客戶)來說,這一 2 階段是完成購物過程的定單簽定過程,顧客要將你選好的商品、自己的聯(lián)系信 息、送貨的方式、付款的方法等在網(wǎng)上簽好后提交給商家,商家在收到定單后 應(yīng)發(fā)來郵件或電話核實(shí)上述內(nèi)容。 第三階段是按照合同進(jìn)行商品交接、資金結(jié)算階段:這一階段是整個(gè)商品 交易很關(guān)鍵的階段,不僅要涉及到資金在網(wǎng)上的正確、安全到位,同時(shí)也要涉 及到商品配送的準(zhǔn)確、按時(shí)到位。在這個(gè)階段有銀行業(yè)、配送系統(tǒng)的介入,在 技術(shù)上、法律上、標(biāo)準(zhǔn)上等等方面有更高的要求。網(wǎng)上交易的成功與否就在這 個(gè)階段。 2 2 技術(shù)背景技術(shù)背景 2.12.1 javajava 的網(wǎng)絡(luò)功能與編程的網(wǎng)絡(luò)功能與編程 java 是一種簡單易用、完全面向?qū)ο?、具有平臺無關(guān)性且安全可靠的主要 面向 internet 的開發(fā)工具。自從 1995 年正式問世以來,java 的快速發(fā)展已經(jīng) 讓整個(gè) web 世界發(fā)生了翻天覆地的變化。在早期,java 比較多的用在瀏覽器上, 插入到網(wǎng)頁中(即是 java applet 程序),成為最靈活、最強(qiáng)大的網(wǎng)頁多媒體的 載體,但由于 java 虛擬機(jī)相對于個(gè)人電腦而言,有占用資源大,安全性相對較 差等缺點(diǎn),applet 逐漸的被后起之秀 flash 所替代,但隨著 java servlet 的 推出,java 在電子商務(wù)方面開始嶄露頭角,最新的 jsp(java server page)技 術(shù)的推出,更是讓 java 成為基于 web 的應(yīng)用程序的首選開發(fā)工具,目前的 java 技術(shù)已成為所有大型電子商務(wù)項(xiàng)目的必然選擇。 java 程序可以獲取網(wǎng)絡(luò)上結(jié)點(diǎn)的圖象、聲音、html 文檔及文本等資源, 并可以對獲得的資源進(jìn)行處理。例如 java 程序可以每隔一定時(shí)間讀取某結(jié)點(diǎn)提 供的最新數(shù)據(jù),并以圖表的形式顯示出來。在編程處理上,一般先生成一個(gè) url 類型的對象,然后用 java 中相應(yīng)的方法(method)獲取該對象所代表的資 源。 java servlet 是 jsp 技術(shù)的基礎(chǔ),jsp 本身就是預(yù)先被編譯成 servlet,然后 3 再運(yùn)行的,而且大型的 web 應(yīng)用程序的開發(fā)需要 java servlet 和 jsp 配合才能 完成,servlet 這個(gè)名稱大概源于 applet,現(xiàn)在國內(nèi)的翻譯方式很多,本文為了 避免誤會,本文直接采用 servlet 這個(gè)名稱而不做任何翻譯,讀者如果愿意,可 以稱之為“小服務(wù)程序”。servlet 其實(shí)和傳統(tǒng)的 cgi 程序和 isapi、nsapi 等 web 程序開發(fā)工具的作用是相同的,在使用 java servlet 以后,用戶不必再使用 效率低下的 cgi 方式,也不必使用只能在某個(gè)固定 web 服務(wù)器平臺運(yùn)行的 api 方式來動態(tài)生成 web 頁面。許多 web 服務(wù)器都支持 servlet,即使不直接支持 servlet 的 web 服務(wù)器也可以通過附加的應(yīng)用服務(wù)器和模塊來支持 servlet。得益 于 java 的跨平臺的特性,servlet 也是平臺無關(guān)的,實(shí)際上,只要符合 java servlet 規(guī)范,servlet 是完全平臺無關(guān)且是 web 服務(wù)器無關(guān)的。由于 java servlet 內(nèi)部是以線程方式提供服務(wù),不必對于每個(gè)請求都啟動一個(gè)進(jìn)程,并且 利用多線程機(jī)制可以同時(shí)為多個(gè)請求服務(wù),因此 java servlet 效率非常高。但 java servlet 也不是沒有缺點(diǎn),和傳統(tǒng)的 cgi、isapi、nsapi 方式相同,java servlet 是利用輸出 html 語句來實(shí)現(xiàn)動態(tài)網(wǎng)頁的,如果用 java servlet 來開發(fā) 整個(gè)網(wǎng)站,動態(tài)部分和靜態(tài)頁面的整合過程簡直就是一場噩夢。這就是為什么 sun 還要推出 java server pages 的原因。 2.22.2 strutsstruts 概述概述 struts 框架工具是 apache 基金會 jakarta 項(xiàng)目中推出的一個(gè)子項(xiàng)目。 struts 在英文中是支架、支撐的意思,這也體現(xiàn)出 struts 在開發(fā) web 應(yīng)用程 序過程所起到的重要作用, struts 為 web 應(yīng)用提供了通用的框架,讓開發(fā)人 員可以把主要精力集中在如何解決實(shí)際業(yè)務(wù)問題上,與此同時(shí) struts 框架也允 許開發(fā)人員根據(jù)實(shí)際需要進(jìn)行擴(kuò)展和定制,從而可以更好的適應(yīng)用戶的需求。 采用 struts 可以簡化遵循 mvc 設(shè)計(jì)模式的 web 應(yīng)用的開發(fā)工作,很好地實(shí) 現(xiàn)代碼重用,使開發(fā)人員從一些繁瑣的工作中解脫出來,快速開發(fā)能夠充分發(fā) 揮 jsp/servlet 優(yōu)點(diǎn)、并具有強(qiáng)可擴(kuò)展性的 web 應(yīng)用??傊?, struts 的出現(xiàn) 使得 web 應(yīng)用的開發(fā)過程大大簡化,從而能夠縮短開發(fā)周期、提高開發(fā)效率。 struts 架構(gòu)一經(jīng)推出,即受到 java 開發(fā)群體的廣泛重視,從 2004 年 4 開始逐漸升溫,并日漸成為 java 創(chuàng)建 web 應(yīng)用開發(fā)的最流行的框架工具, 在目前 java web 程序員的招聘要求中,幾乎都提出了對 struts 的要求,精通 struts 架構(gòu)已經(jīng)成為 java web 程序員必備的技能。 模型-視圖-控制器(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)用程序中用戶界面相關(guān)的部分,是用戶看到并與之交互的界面。 3、控制器(controller) 控制器工作就是根據(jù)用戶的輸入,控制用戶界面數(shù)據(jù)顯示和更新 model 對象狀態(tài) 圖 1.1 mvc 組件類型的關(guān)系和功能 mvc 式的出現(xiàn)不僅實(shí)現(xiàn)了功能模塊和顯示模塊的分離,同時(shí)它還提高了應(yīng) 用系統(tǒng)的可維護(hù)性、可擴(kuò)展性、可移植性和組件的可復(fù)用性。 早期的程序中,如果不注意對數(shù)功能和顯示的解耦合,常常會導(dǎo)致程序的 復(fù)雜及難以維護(hù)。很多 vb,delphi 等 rad 程序都有這種問題。甚至現(xiàn)在的 c#,java 有時(shí)候也會出現(xiàn)把業(yè)務(wù)邏輯寫在顯示模塊中的現(xiàn)象。 盡管 mvc 設(shè)計(jì)模式很早就提出,但在 web 項(xiàng)目的開發(fā)中引入 mvc 卻是步履 5 維艱。主要原因:一是在早期的 web 項(xiàng)目的開發(fā)中,程序語言和 html 的分離一 直難以實(shí)現(xiàn)。cgi 程序以字符串輸出的形式動態(tài)地生成 html 內(nèi)容。后來隨著腳 本語言的出現(xiàn),前面的方式又被倒了過來,改成將腳本語言書寫的程序嵌入在 html 內(nèi)容中。這兩種方式有一個(gè)相同的不足之處即它們總是無法將程序語言和 html 分離。二是腳本語言的功能相對較弱,缺乏支持 mvc 設(shè)計(jì)模式的一些必要 的技術(shù)基礎(chǔ)。直到基于 j2ee 的 jsp model 2 問世時(shí)才得以改觀。它用 jsp 技術(shù) 實(shí)現(xiàn)視圖的功能,用 servlet 技術(shù)實(shí)現(xiàn)控制器的功能,用 javabean 技術(shù)實(shí)現(xiàn)模 型的功能 。 sun 在 jsp 出現(xiàn)早期制定了兩種規(guī)范,稱為 model1 和 model2。雖然 model2 在 一定程度上實(shí)現(xiàn)了 mvc,但是它的應(yīng)用用并不盡如人意。 圖 1.2 jsp model 1 圖 1.3 jsp model 2 model2 容易使系統(tǒng)出現(xiàn)多個(gè) controller,并且對頁面導(dǎo)航的處理比較復(fù) 雜 有些人覺得 model2 仍不夠好,于是 craig r. mcclanahan 2000 年 5 月 提 交了一個(gè) web framework 給 java community.這就是后來的 struts。 6 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。采用 action 來處理邏輯。 struts 跟 tomcat、turbine 等諸多 apache 項(xiàng)目一樣,是開源軟件,這是 它 的一大優(yōu)點(diǎn)。使開發(fā)者能更深入的了解其內(nèi)部實(shí)現(xiàn)機(jī)制。 除此之外,struts 的優(yōu)點(diǎn)主要集中體現(xiàn)在兩個(gè)方面:taglib 和頁面導(dǎo)航 taglib 是 struts 的標(biāo)記庫,靈活動用,能大大提高開發(fā)效率。另外,就目前 國內(nèi)的 jsp 開發(fā)者而言,除了使用 jsp 自帶的常用標(biāo)記外,很少開發(fā)自己的標(biāo) 記,或許 struts 是一個(gè)很好的起點(diǎn)。 關(guān)于頁面導(dǎo)航,我認(rèn)為那將是今后的一個(gè)發(fā)展方向,事實(shí)上,這樣做,使 系統(tǒng)的脈絡(luò)更加清晰。通過一個(gè)配置文件,即可把握整個(gè)系統(tǒng)各部分之間的聯(lián) 系, 這對于后期的維護(hù)有著莫大的好處。尤其是當(dāng)另一批開發(fā)者接手這個(gè)項(xiàng)目時(shí), 這 種優(yōu)勢體現(xiàn)得更加明顯。 taglib 是 struts 的一大優(yōu)勢,但對于初學(xué)者而言,卻需要一個(gè)持續(xù)學(xué)習(xí)的 過程,甚至還會打亂你網(wǎng)頁編寫的習(xí)慣,但是,當(dāng)你習(xí)慣了它時(shí),你會覺得它 真的很棒。 struts 將 mvc 的 controller 一分為三,在獲得結(jié)構(gòu)更加清晰的同時(shí),也增 加了系統(tǒng)的復(fù)雜度。 struts 從產(chǎn)生到現(xiàn)在才不過六七年,但已廣泛運(yùn)用于商業(yè)軟件。雖然它現(xiàn)在 還有不少缺點(diǎn),但它是一種非常優(yōu)秀的 j2ee mvc 實(shí)現(xiàn)方式。 下圖是 struts 的工作流程,所有的請求都提交給 actionservlet 來處理。 7 圖圖 1.4 action 控制流程圖控制流程圖 actionservlet 是一個(gè) frontcontroller,它是一個(gè)標(biāo)準(zhǔn)的 servlet,它將 request 轉(zhuǎn)發(fā)給 requestprocessor 來處理,actionmapping 是 actionconfig 的 子類,實(shí)質(zhì)上是對 struts-config.xml 的一個(gè)映射,從中可以取得所有的配置 信息 requestprocessor 根據(jù)提交過來的 url,如*.do,從 action mapping 中 得到相應(yīng)的 actionform 和 action。然后將 request 的參數(shù)對應(yīng)到 action form 中,進(jìn)行 form 驗(yàn)證。如果驗(yàn)證通過則調(diào)用 action 的 execute()方法來執(zhí)行 action,最終返回 actionforward。 actionforward 是對 mapping 中一個(gè) forward 的包裝,對應(yīng)于一個(gè) url actionform 使用了 viewhelper 模式,是對 html 中 form 的一個(gè)封裝。其中包 含有 validate 方法,用于驗(yàn)證 form 數(shù)據(jù)的有效性。action form 是一個(gè)符合 java bean 規(guī)范的類,所有的屬性都應(yīng)滿足 get 和 set 對應(yīng)。對于一些復(fù)雜的 系統(tǒng),還可以采用 dynaactionform 來構(gòu)造動態(tài)的 form,即通過預(yù)制參數(shù)來生 成 form。這樣可以更靈活的擴(kuò)展程序。 actionerrors 是對錯誤信息的包裝,一旦在執(zhí)行 action 或者 form.validate 中出現(xiàn)異常,即可產(chǎn)生一個(gè) actionerror 并最終加入到 actionerrors。在 form 驗(yàn)證的過程中,如果有 error 發(fā)生,則會將頁面重新導(dǎo) 8 向至輸入頁,并提示錯誤。 action 是用于執(zhí)行業(yè)務(wù)邏輯的 requsesthandler。每個(gè) action 都只建立一 個(gè) instance。action 不是線程安全的,所以不應(yīng)該在 action 中訪問特定資源。 一般來說,應(yīng)改使用 business delegate 模式來對 business tier 進(jìn)行訪問以 解除耦合。 struts 提供了多種 action 供選擇使用。普通的 action 只能通過調(diào)用 execute 執(zhí)行一項(xiàng)任務(wù),而 dispatchaction 可以根據(jù)配置參數(shù)執(zhí)行,而不是僅 進(jìn)入 execute()函數(shù),這樣可以執(zhí)行多種任務(wù)。如 insert,update 等。 lookupdispatchaction 可以根據(jù)提交表單按鈕的名稱來執(zhí)行函數(shù)。 3 3 網(wǎng)上書店詳細(xì)設(shè)計(jì)網(wǎng)上書店詳細(xì)設(shè)計(jì) 3.13.1 需求分析需求分析 網(wǎng)上書店系統(tǒng)主要是實(shí)現(xiàn)網(wǎng)上選書、購書、產(chǎn)生訂單等功能的系統(tǒng)。一 個(gè)典型的網(wǎng)上商城一般都需要實(shí)現(xiàn)商品信息的動態(tài)提示、購物車管理、客戶信 息注冊登錄管理、訂單處理等模塊。 (1)查詢:當(dāng)客戶進(jìn)入網(wǎng)上書店時(shí),應(yīng)該在主頁面中分類顯示最新的書目 信息,以供客戶選擇所需圖書,同時(shí)也應(yīng)該提供按照圖書名稱,或者作 者 信息快速查詢所需書目信息的功能。 (2)購物車管理:當(dāng)客戶選擇購買某圖書產(chǎn)品時(shí),應(yīng)該能夠?qū)?yīng)圖書信息, 如:價(jià)格、數(shù)量記錄到對應(yīng)的購物車中,并允許客戶返回書目查詢頁面, 選擇其他商品,并添加到購物車中,當(dāng)對應(yīng)的購物訂單生成后,應(yīng)該能 夠自動清除以生成訂單的購物車中的信息。 (3)訂單處理:對應(yīng)客戶購買圖書商品信息的需求,在確定了所購圖書商品 的價(jià)格、數(shù)量等信息后,提示用戶選擇對應(yīng)的送貨方式及付款方式,最 終生成對應(yīng)的訂單記錄,以便于網(wǎng)站配貨人員依據(jù)訂單信息進(jìn)行后續(xù)的 出貨、送貨的處理。 9 (4)會員注冊:為了能夠?qū)崿F(xiàn)圖書商品的購買,需要管理客戶相關(guān)的聯(lián)系方 式、送貨地點(diǎn)等相關(guān)的信息。 3.23.2 總體設(shè)計(jì)總體設(shè)計(jì) 下表中給出了構(gòu)成網(wǎng)上書店系統(tǒng)的各個(gè)組件,通過下表,可以從宏觀上了解各 個(gè)組件的功能。 表 3.1 網(wǎng)上書店組件表 控制處理層(控制器)控制處理層(控制器)業(yè)務(wù)邏輯層(模型)業(yè)務(wù)邏輯層(模型) index.jspactionformactioncart bookmain.jsplogintformadditemtocartactionbookcat bookshow.jspuserformcartactionbook 用戶表示層(視圖)用戶表示層(視圖)控制處理層(控制器)控制處理層(控制器)業(yè)務(wù)邏輯層(模型)業(yè)務(wù)邏輯層(模型) userregister.jspbookdetailactionuser generateordersuccess.jsploginactionorderdetail jumptocart.jspbooksearchactionorder loginfail.jspgenerateorderaction loginsuccess.jsporderaddaction orderaddfail.jsppagectrlaction orderaddress.jspregistaction orderaddsuccess,jsp regfail.jsp regsuccess.jsp searchfail.jsp searchsuccess.jsp showsuccess.jsp order.jsp 3.33.3 功能設(shè)計(jì)功能設(shè)計(jì) (1)圖書信息管理 10 該模塊實(shí)現(xiàn)圖書書目信息的分類顯示,也是提供圖書信息依據(jù)書名 及作者信息快速搜索的功能。此外,在用戶選擇了對應(yīng)書目信息后,還 可以顯示出有關(guān)該圖書的詳細(xì)信息,以便于客戶了解所購商品。 (2)購物車管理 用于維護(hù)每一個(gè)進(jìn)入網(wǎng)上書店的客戶對應(yīng)的購物車。即將客戶所選 購的圖書商品信息記錄到對應(yīng)的購物車中,以便于到收銀臺進(jìn)行結(jié)賬處 理。 (3)會員注冊 實(shí)現(xiàn)網(wǎng)上書店客戶信息的注冊、及身份驗(yàn)證。由于目前網(wǎng)上商城普 遍采用的方式為送貨上門或者郵寄,因此需要收集與客戶相關(guān)的聯(lián)系方 式、通信地址等信息。 (4)訂單處理 根據(jù)客戶購物車中的信息,以及客戶所選擇的送貨方式和付款方式, 連同客戶對應(yīng)的個(gè)人信息生成訂單,以便于后續(xù)進(jìn)行送貨處理。 3.43.4 數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn) .1 數(shù)據(jù)庫的需求分析數(shù)據(jù)庫的需求分析 依據(jù)網(wǎng)上書店的處理需求,對就數(shù)據(jù)表的設(shè)計(jì)及功能如下: (1)圖書基本信息表:存放網(wǎng)上書店所銷售圖書的基本信息。 (2)客戶基本信息表:存放書店客戶的基本信息。 (3)訂單信息表:存放與客戶相關(guān)的訂單的基本信息。 (4)訂單條目詳細(xì)信息表:存放訂單中詳細(xì)條目的基本信息。 (5)圖書分類基本信息表:存放網(wǎng)上書店所提供圖書分類的信息。 .2 數(shù)據(jù)庫的分?jǐn)?shù)據(jù)庫的分 e-re-r 圖圖 (1) 書目類別(類別號,類別名): 11 bookcat catname id 圖 3.1 書目類別 e-r 圖 (2) 書(書號,書名,價(jià)格,銷售價(jià)格,書本描述,圖片,內(nèi)容,作者): book name price saleprice descript image contents author id 圖 3.2 書本 e-r 圖 (3) 書店客戶(客戶號,用戶名,密碼,真實(shí)姓名,聯(lián)系電話,地址,電子郵 箱): storeuser username password name telphone address email id 圖 3.3 書店客戶 e-r 圖 (4) 訂單(訂單號,生成時(shí)間,運(yùn)輸方式,付款方式,總價(jià)): 12 orders payment cost id time delivery 圖 3.4 訂單 e-r 圖 (5) 訂單條目(訂單條目號,總價(jià),單價(jià)): orderdetail coun t price 圖圖 3.53.5 訂單條目訂單條目 e-re-r 圖圖 .3 數(shù)據(jù)庫的總數(shù)據(jù)庫的總 e-re-r 圖圖 storeuse r order bookdetail book 擁有擁有 包含包含 包含包含 包含包含 n 1 n 1 n n 1 bookcat 1 圖圖 3.63.6 總總 e-re-r 圖圖 id 13 .4 數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計(jì) 以下的表是分析完 e-r 圖后所設(shè)計(jì)出來,每張表存放一類信息: (1)書目類別(書目類別號,類別名) (2)書(書號,書目類別號,書名,價(jià)格,銷售價(jià)格,描述,圖片,內(nèi)容,作者) (3)書店客戶(客戶號,用戶名,密碼,真實(shí)姓名,聯(lián)系電話,地址,電子郵箱) (4)訂單(訂單號,客戶號,生產(chǎn)訂單時(shí)間,運(yùn)輸方式,付款方式,總價(jià)) (5)訂單條目(訂單條目號,訂單號,書號,總價(jià),單價(jià)) .5 創(chuàng)建數(shù)據(jù)表的腳本創(chuàng)建數(shù)據(jù)表的腳本 代碼如下: /圖書分類基本信息表 create table bookcat( idnumber primary key, catnamevarchar2(40) not null ); /圖書基本信息表 drop table book cascade constraints; create table book( idnumber primary key, catidnumber not null references bookcat(id) on delete cascade, namevarchar2(50) not null, pricenumber not null, saleprice number not null, 14 descriptvarchar2(500) not null, authorvarchar2(50) not null, contentsvarchar2(2000) null, imagevarchar2(50) null); /客戶基本信息表 drop table storeuser cascade constraints; create table storeuser( idnumberprimary key, usernamevarchar2(20) not null, passwordvarchar2(20) not null, namevarchar2(20) not null, telvarchar2(20) not null, emailvarchar2(50) null address, varchar2(100) not null ); /訂單信息表 drop table orders cascade constraints; create table orders( idnumber primary key, user_idnumber not null references storeuser(id) on delete cascade, timedate not null, deliveryvarchar2(20) not null, paymentvarchar2(20) not null, costnumber ); 15 /訂單條目詳細(xì)信息表 drop table orderdetail cascade constraints; create table orderdetail( idnumber primary key, orderidnumber not null references orders(id) on delete cascade, bookidnumber not null references book(id) on delete cascade, countnumber not null, pricenumber not null ); 3.53.5 網(wǎng)上書店基本流程網(wǎng)上書店基本流程 網(wǎng)上書店在運(yùn)行過程中頁面的基本流程如圖 3.7: 3.63.6 網(wǎng)上書店各頁面功能網(wǎng)上書店各頁面功能 詳細(xì)功能及描述: (1)獲取圖書分類信息以及圖書基本信息集合 (2)提交顯示指定分類圖書信息的請求,同時(shí)傳遞對應(yīng)圖書分類編號 , (3)提交書目搜索請求及搜索條件的表單 (4)提交搜索關(guān)鍵字的表單元素 bookmain.jsp 圖書查詢 bookshow.jsp 圖書詳情顯示 bookshopcart.jsp 購物車管理 userlogin.jsp 會員登錄 orderaddress.jsp 會員地址確認(rèn) generateordersucce ss.jsp 訂單生成 userregister.jsp 新會員注冊 order.jsp 訂單確認(rèn) 16 圖圖 3.73.7 網(wǎng)上書店基本流程圖網(wǎng)上書店基本流程圖 (5)選擇搜索條件的表單元素 (6)顯示圖書記錄總數(shù)、當(dāng)前頁面編號以及總頁數(shù) (7)顯示圖書名稱、價(jià)格、銷售價(jià)格、作者信息 (8)提交顯示圖書詳細(xì)信息請求的超鏈接 (9)提交分頁顯示請求的超鏈接 .2 顯示圖書詳細(xì)信息顯示圖書詳細(xì)信息 bookshow.jspbookshow.jsp 頁面頁面 詳細(xì)功能及描述: (1)依據(jù)圖書記錄編號獲取待顯示詳細(xì)信息的圖書類型的對象 (2)分別顯示該圖書對象的詳細(xì)信息 (3)顯示圖書封面圖片、名稱、詳細(xì)介紹、價(jià)格、銷售價(jià)格 (4)單擊“購買”按鈕后,將提交放入購物車的請求 (5)顯示圖書目錄 本頁面是在控制器響應(yīng)了網(wǎng)上書店主頁提交的查看圖書詳細(xì)信息請求,即 “bookdeatial.do”請求后,跳轉(zhuǎn)到的頁面。在該頁面中將獲取到的指定圖書 詳細(xì)信息顯示出來,同時(shí)如果用戶單擊“購買”按鈕,將提交 “bookbuy.do?bookid=”請求,進(jìn)行后續(xù)放入購物車的處理。 17 .3 顯示購物車信息顯示購物車信息 bookshopcart.jspbookshopcart.jsp 頁面頁面 詳細(xì)功能及描述: (1)獲取該用戶購物車中信息的集合 (2)提交更新購物車請求的表單 (3)循環(huán)顯示購物車中的每一條購物記錄信息 (4)設(shè)置購買數(shù)量的文本框 (5)顯示圖書銷售價(jià)格 (6)顯示圖書總價(jià) (7)從購物車中移除購買記錄信息 (8)更新訂單按鈕 (9)提交繼續(xù)購書請求的超鏈接 (10)提交清空購物車請求的超鏈接 (11)提交結(jié)算付款請求的超鏈接 本頁面是在用戶選擇購買某種圖書商品后,進(jìn)入的頁面。在該頁面中將顯 示該用戶購物車中現(xiàn)有的所有購買需求記錄。同時(shí)提供更新購物車的操作界面, 例如,可以輸入購買數(shù)量或者選擇刪除購買記錄。單擊“更新訂單”按鈕后, 將提交“updateshopcart.do”請求,進(jìn)行更新購物車信息的處理。此外,也可 以單擊“繼續(xù)購書”按鈕,提交“booksearch.do”請求返回網(wǎng)上書店主頁面繼 續(xù)購書,或者單擊“清空購物車”按鈕提交“clearshopcart.do”請求。同時(shí), 如果用戶確認(rèn)去收銀臺,則可以單擊“結(jié)算付款”按鈕跳轉(zhuǎn)到 “userlogin.jsp”頁面進(jìn)行用戶登錄。 .4 網(wǎng)上書店客戶登錄網(wǎng)上書店客戶登錄 userlogin.jspuserlogin.jsp 頁面頁面 詳細(xì)功能及描述: (1)提交用戶登錄請求,同時(shí)提交登錄用戶信息的表單 (2)提交登錄用戶用戶名及密碼的表單元素 (3)登錄按鈕 (4)提交新用戶注冊請求的超鏈接 本頁面是客戶在購物車頁面單擊“結(jié)算付款”按鈕后跳轉(zhuǎn)過來的頁面,在 該頁面中,用戶在表單中輸入用戶名及密碼,單擊“用戶登錄”按鈕后,將提 18 交“l(fā)ogin.do”請求,以便于進(jìn)行后續(xù)獲取用戶相關(guān)信息的處理,對于沒有用 戶身份的新客戶,可以在本頁面中單擊“新用戶注冊”按鈕,跳轉(zhuǎn)到 “userregister.jsp”頁面進(jìn)行用戶注冊。 .5 網(wǎng)上書店客戶注冊網(wǎng)上書店客戶注冊 userregister.jspuserregister.jsp 頁面頁面 詳細(xì)功能及描述: (1)提交新用戶注冊請求,同時(shí)提交新用戶注冊信息的表單 (2)提交注冊用戶姓名、地址、電子郵件地址、電話、用戶名、密碼以 及確認(rèn)密碼的表單元素 (3)注冊按鈕 在本頁面中注冊用戶可以在表單中輸入對應(yīng)的注冊信息,在單擊“注冊” 按鈕后,將提交“regist.do”請求,同時(shí)提交新用戶的相關(guān)注冊信息,以便于 進(jìn)行后續(xù)新用戶注冊的處理。 .6 送貨、付款方式及訂單信息送貨、付款方式及訂單信息 orderaddress.jsporderaddress.jsp 頁面頁面 詳細(xì)功能及描述: (1)獲取客戶信息 (2)提交選擇送貨方式及付款方式的表單 (3)顯示客戶信息、姓名、地址、電話、送貨方式、付款方式 (4)獲取購物車信息集合 (5)獲取訂單信息、客戶信息 (6)顯示客戶姓名、地址、電話 (7)顯示購物車中的信息 (8)顯示所購圖書書名、數(shù)量、總價(jià) (9)顯示整張訂單總價(jià) 本頁面是在用戶登錄通過后,跳轉(zhuǎn)到的頁面,在該頁面中首先獲取對應(yīng)用 戶的客戶資料,同時(shí)提供送貨方式,付款方式及訂單信息的選擇,在用戶單擊 “確認(rèn)”按鈕后,將提交“addrconfirm.do”請求,生成生續(xù)完整的訂單信息。 .7 顯示訂單生成成功信息顯示訂單生成成功信息 generateordersuccess.jspgenerateordersuccess.jsp 頁面頁面 詳細(xì)功能及描述: 19 (1)顯示訂單生成成功信息 (2)生成訂單號 本頁面將顯示訂單成功生成的信息。 3.73.7 封裝了數(shù)據(jù)庫相關(guān)操作的封裝了數(shù)據(jù)庫相關(guān)操作的 bean 采用了 struts 架構(gòu)下提供的數(shù)據(jù)庫連接池建立與數(shù)據(jù)庫的連接,在該 bean 中通過構(gòu)造方法建立與數(shù)據(jù)庫的連接,并提供了相應(yīng)的方法完成數(shù)據(jù)庫中的查 詢、更新等操作,同時(shí)也提供了關(guān)閉數(shù)據(jù)庫連接的方法,以便于及時(shí)釋放資源。 3.83.8 業(yè)務(wù)邏輯層各業(yè)務(wù)邏輯層各 beanbean 功能功能 在本系統(tǒng)的業(yè)務(wù)邏輯層中分別完成了對圖書信息、圖書分類信息、購物車 信息、訂單信息以及客戶信息等類型對象的保存和處理。所有文件包含在 web- infclasses 目錄中。 .1 封裝了圖書處理的封裝了圖書處理的 beanbean(book.javabook.java) 除聲明了與圖書基本數(shù)據(jù)相關(guān)的基本屬性和方法之外,還提供了圖書信息 的查詢顯示處理相關(guān)的幾個(gè)方法。其中在調(diào)用查詢滿足條件的圖書信息方法時(shí), 需要提供查詢的依據(jù),例如,分類、按作者還是按書名,對應(yīng)關(guān)鍵字等。 .2 封裝了購物車信息處理的封裝了購物車信息處理的 beanbean(cart.javacart.java) 為了能夠簡化類的定義,考慮到購物車中所需要處理的圖書基本信息與圖 書類型對象中封裝的信息相同,只是需要再補(bǔ)充上購買數(shù)量即可,因此在定義 該類時(shí)繼承了圖書信息類。 .3 封裝了訂單住處處理的封裝了訂單住處處理的 beanbean(order.sorder.s javajava) 除聲明了與訂單中所需要處理的數(shù)據(jù)相關(guān)的基本屬性和方法之外,還提供 了與訂單查詢、插入及刪除處理相關(guān)的幾個(gè)方法。此外,也提供了計(jì)算該訂單 所涉及總金額的方法。 20 .4 封裝了客記信息處理的封裝了客記信息處理的 beanbean(user.javauser.java) 除聲明了與用戶數(shù)據(jù)相關(guān)的基本屬性和方法之外,還提供了與確認(rèn)用戶身 份、獲取用戶相關(guān)信息、插入新用戶信息處理相關(guān)的幾個(gè)方法。 .5 封裝了圖書分類信息處理的封裝了圖書分類信息處理的 beanbean(bookcat.javabookcat.java) 除了聲明了與圖書分類數(shù)據(jù)相關(guān)的基本屬性和方法之外,還提供了與圖書 分類信息查詢及顯示處理相關(guān)的幾個(gè)方法。 3.93.9 控制處理層控制處理層 下表是網(wǎng)上書店系統(tǒng)中的 action 映射表。該映射決定了 action 與其他 web 組件之間的關(guān)聯(lián)關(guān)系。作為前后臺之間橋梁,本表中指明了每個(gè) action 的 入口(即調(diào)用 action 的組件)及出口(即請求轉(zhuǎn)發(fā)的目標(biāo)組件) ,以及傳遞 action 的 actionform。 表表 3.13.1 actionaction 控制表控制表 action 入口 actionform 出口 additemtocartactionbookmain.jspbookmain.jsp bookdetailactionbookmain.jspbookmain.jsp booksearchactionindex.jspbookmain.jsp cartactioncart.jsplogin.jsp generateorderactionlogin.jspuserformorder.jsp loginactionorder.jsploginformsuccess.jsp orderaddactionlist.jsplogin.jsp pagectrlactionbookmain.jspbookmain.jsp registactionuserregister.jspuserlogin.jsp (1)additemtocartaction.java 該程序負(fù)責(zé)處理增加購買的圖書時(shí)的“additemtocart.do”請求 (2)cartaction.java 該程序是個(gè)多匹配的 action,負(fù)責(zé)處理四個(gè)功能,分別是:清除購物車時(shí) 21 提交的“clearcart.do”請求;結(jié)帳時(shí)提交的“operatecart.do”請求;修改 購物車?yán)镏付ㄉ唐返臄?shù)量時(shí)提交的“modifycart.do”請求;刪除購物車?yán)镏付?條目的“deletecart.do”請求。 (3)bookdetailaction 該程序負(fù)責(zé)處理顯示指定圖書編號的對應(yīng)圖書詳細(xì)信息時(shí)提交的 “bookdetail.do”請求。 (4)booksearchaction 該程序負(fù)責(zé)處理從圖書主頁面提交的booksearch.do請求,根據(jù)搜索的 條件進(jìn)行搜索。 (5)generateorderaction 該程序負(fù)責(zé)處理從訂單信息頁面提交的generateorder.do請求,把訂 單信息存入數(shù)據(jù)庫。 (6)loginaction 該程序負(fù)責(zé)處理從用戶登錄頁面提交的“l(fā)ogin.do”請求。 (7)orderaddaction 該程序負(fù)責(zé)處理從購物車頁面提交的orderadd.do請求,根據(jù)用戶是否 登陸來判斷所要轉(zhuǎn)向的頁面。 (8)pagectrlaction 該程序負(fù)責(zé)處理從主頁面提交的”pagectrl.do”的分頁信息根據(jù)所點(diǎn)擊 的按紐進(jìn)行回首頁、上一頁、下一頁的處理。 (9)registeraction 該程序負(fù)責(zé)處理從新用戶注冊頁面提交的“regist.do”請求。 4 4 網(wǎng)上書店的實(shí)現(xiàn)網(wǎng)上書店的實(shí)現(xiàn) 本網(wǎng)上書店系統(tǒng)共分為四個(gè)功能模塊,分別為:用戶管理,商品查詢,訂 單管理,商品購買。各模塊的實(shí)現(xiàn)如下: 22 4.14.1 用戶管理模塊用戶管理模塊 本模塊提供了用戶登錄功能,用戶注冊功能。新用戶通過點(diǎn)擊”注冊”按 鈕進(jìn)入主頁面,老用戶則直接輸入用戶名和密碼進(jìn)入主頁面,若用戶名不存在 或密碼錯誤則轉(zhuǎn)向登錄錯誤提示頁面。在注冊頁面中會有必填的項(xiàng)目,當(dāng)所有 必填信息填完且合法后,則轉(zhuǎn)向注冊成功頁面,反之出現(xiàn)提示錯誤頁面。 圖圖 4.14.1 用戶登錄頁面用戶登錄頁面 本頁面是客戶在購物車頁面單擊“結(jié)算付款”按鈕后跳轉(zhuǎn)過來的頁面,在 該頁面中,用戶在表單中輸入用戶名及密碼,單擊“用戶登錄”按鈕后,將提 交“l(fā)ogin.do”請求,以便于進(jìn)行后續(xù)獲取用戶相關(guān)信息的處理,對于沒有用 戶身份的新客戶,可以在本頁面中單擊“新用戶注冊”按鈕,跳轉(zhuǎn)到 “userregister.jsp”頁面進(jìn)行用戶注冊。網(wǎng)上書店客戶登錄 userlogin.jsp 頁 面的功能為提交用戶登錄請求,同時(shí)提交登錄用戶信息的表單,提交登錄用戶用 戶名及密碼的表單元素,登錄按鈕,提交新用戶注冊請求的超鏈接。其程序主要 代碼如下: public class userlogin extends httpservlet public void doget(httpservletrequest request, httpservletresponse response) throws ioexception,servletexception httpsession session = request.getsession(); string tojsp=“haslogin.jsp“; 23 if(session.getattribute(“userid“)=null) string id = request.getparameter(“id“); string pwd = request.getparameter(“password“); string query = “select * from customer where id=“+ “ +id+ “+“ and password=“+“+pwd+“; dbclass db = new dbclass(); db.connect(); resultset resultset = db.excutequery(query); try if(resultset.next() session.setattribute(“userid“, id); tojsp=“/loginsuccess.jsp“; else tojsp=“/userlogin.jsp“; request.setattribute(“errinf“, “密碼和帳號不匹配“); catch(sqlexception sqle) system.err.println(

溫馨提示

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

評論

0/150

提交評論