網(wǎng)上書(shū)店畢業(yè)論文

上傳人:1777****777 文檔編號(hào):36992608 上傳時(shí)間:2021-11-01 格式:DOC 頁(yè)數(shù):39 大?。?.58MB
收藏 版權(quán)申訴 舉報(bào) 下載
網(wǎng)上書(shū)店畢業(yè)論文_第1頁(yè)
第1頁(yè) / 共39頁(yè)
網(wǎng)上書(shū)店畢業(yè)論文_第2頁(yè)
第2頁(yè) / 共39頁(yè)
網(wǎng)上書(shū)店畢業(yè)論文_第3頁(yè)
第3頁(yè) / 共39頁(yè)

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《網(wǎng)上書(shū)店畢業(yè)論文》由會(huì)員分享,可在線閱讀,更多相關(guān)《網(wǎng)上書(shū)店畢業(yè)論文(39頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 網(wǎng)上書(shū)店Online BookStore System姓 名: 學(xué) 號(hào): 指導(dǎo)教師: 專業(yè)名稱: 計(jì)算及應(yīng)用技術(shù) 所在系部: 信息工程系 二一二年六月畢業(yè)論文(設(shè)計(jì))開(kāi)題報(bào)告畢業(yè)論文(設(shè)計(jì))開(kāi)題報(bào)告姓名 班級(jí) 指導(dǎo)教師 學(xué)號(hào)20103042畢業(yè)論文(設(shè)計(jì))題目網(wǎng)上書(shū)店1.選題目的和意義:一、選題目的:隨著 Internet 技術(shù)的發(fā)展,人們的日常生活已經(jīng)離不開(kāi)網(wǎng)絡(luò)。未來(lái)社會(huì)人們的生活和工作將越來(lái)越依賴于數(shù)字技術(shù)的發(fā)展,越來(lái)越數(shù)字化、網(wǎng)絡(luò)化、電子化、虛擬化。電子商務(wù)也隨著網(wǎng)絡(luò)的發(fā)展日益和人們的生活貼近。網(wǎng)上購(gòu)物也成為了電子商務(wù)的一個(gè)時(shí)尚,而網(wǎng)上書(shū)店是最普遍,也最流行的一個(gè)動(dòng)態(tài)的電子商務(wù)網(wǎng)站,它

2、使每一位顧客不用出門(mén)在家里就能夠通過(guò)上網(wǎng)來(lái)輕松購(gòu)買(mǎi)自己喜愛(ài)的書(shū)籍。為此本人選擇網(wǎng)上書(shū)店系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)此題目。二、選題意義:網(wǎng)上書(shū)店為人們提供了更廣闊的環(huán)境:人們不受時(shí)間的限制,不受空間的限制,不受傳統(tǒng)購(gòu)物的諸多限制,可以隨時(shí)隨地在網(wǎng)上交易。更廣闊的市場(chǎng):在網(wǎng)上這個(gè)世界將會(huì)變得很小,一個(gè)商家可以面對(duì)全球的消費(fèi)者,而一個(gè)消費(fèi)者可以在全球的任何一家商家購(gòu)物。更快速的流通和低廉的價(jià)格:電子商務(wù)減少了商品流通的中間環(huán)節(jié),節(jié)省了大量的開(kāi)支,從而也大大降低了商品流通和交易的成本。更符合時(shí)代的要求:如今人們?cè)絹?lái)越追求時(shí)尚、講究個(gè)性,注重購(gòu)物的環(huán)境,網(wǎng)上購(gòu)物,更能體現(xiàn)個(gè)性化的購(gòu)物過(guò)程。具體安排進(jìn)度:2011

3、年 3 月 1 日30 日,選好課題,查找資料,編寫(xiě)提綱;2011 年 4 月 1 日20 日,了解論文的格式,咨詢指導(dǎo)老師從哪方面入手,進(jìn)行寫(xiě)的狀態(tài)形成初稿,形成初稿;2011 年 4 月 21 日5 月 10 日,提交初稿,在指導(dǎo)老師的指導(dǎo)下,形成二稿;2011 年 5 月 11 日5 月 31 日,提交二稿,在老師的指導(dǎo)下修改定稿并準(zhǔn)備答辯。 2 摘要摘要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)的 Str

4、uts 框架,并完成一個(gè)基于這種技術(shù)的網(wǎng)上書(shū)店系統(tǒng)。【關(guān)鍵字】JAVA, Struts, Servlet, JSP, 網(wǎng)絡(luò)編程, 電子商務(wù), 網(wǎng)上書(shū)店AbstractAt 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 betwee

5、n 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, web program, internet, bookshop 3 前 言 隨著 Internet 國(guó)際互聯(lián)網(wǎng)的發(fā)展,越來(lái)越多的企業(yè)開(kāi)始建造自己的網(wǎng)站?;贗nte

6、rnet 的信息服務(wù),商務(wù)服務(wù)已經(jīng)成為現(xiàn)代企業(yè)一項(xiàng)不可缺少的內(nèi)容。很多企業(yè)都已不滿足于建立一個(gè)簡(jiǎn)單的僅僅能夠發(fā)布信息的靜態(tài)網(wǎng)站?,F(xiàn)代企業(yè)需要的是一個(gè)功能強(qiáng)大的,能提供完善的電子商務(wù)服務(wù)的動(dòng)態(tài)商務(wù)網(wǎng)站。JSP 是 Sun 公司推出的一種網(wǎng)站開(kāi)發(fā)技術(shù),Sun 公司借助自己在 Java 上的不凡造詣,又把人們引進(jìn) JSP 時(shí)代,JSP 即 Java Server Page,它可以在 Servlet 和JavaBean 的支持下,完成功能強(qiáng)大的 Web 應(yīng)用程序。所以,在我的畢業(yè)設(shè)計(jì)中,我采用了 JSP 作為開(kāi)發(fā)工具,構(gòu)建了一個(gè)能實(shí)現(xiàn)簡(jiǎn)單的小型動(dòng)態(tài)商務(wù)網(wǎng)站網(wǎng)上書(shū)店。該系統(tǒng)能實(shí)現(xiàn)用戶的注冊(cè)、登錄功能;能

7、夠?qū)崿F(xiàn)商品的查詢,訂購(gòu)等功能。該系統(tǒng)基本上具備一個(gè)網(wǎng)上商品銷(xiāo)售系統(tǒng)應(yīng)該具備的功能,該設(shè)計(jì)項(xiàng)目基本上體現(xiàn)了構(gòu)建一個(gè)動(dòng)態(tài)商務(wù)網(wǎng)站所需要的技術(shù)。通過(guò)這次的畢業(yè)設(shè)計(jì),我了解了目前流行的動(dòng)態(tài)商務(wù)網(wǎng)站的構(gòu)成和運(yùn)作原理,掌握了用 JSP 構(gòu)建動(dòng)態(tài)網(wǎng)站的相關(guān)知識(shí)和技術(shù)原理,鍛煉了自己的動(dòng)手實(shí)踐能力。更重要的是,通過(guò)這次的畢業(yè)設(shè)計(jì),我培養(yǎng)出了刻苦鉆研的學(xué)習(xí)精神和嚴(yán)肅認(rèn)真的學(xué)習(xí)態(tài)度,這對(duì)我以后的學(xué)習(xí)和工作有很大的益處。在這次畢業(yè)設(shè)計(jì)過(guò)程中,我得到了指導(dǎo)老師李家兵老師和其他同組同學(xué)的悉心指導(dǎo)。在此,我對(duì)他們表示衷心的感謝! 4 第一章第一章 概述概述1.11.1 開(kāi)發(fā)背景開(kāi)發(fā)背景隨著時(shí)代的發(fā)展,信息技術(shù)、Inter

8、net/Intranet 技術(shù)、數(shù)據(jù)庫(kù)技術(shù)的不斷發(fā)展完善,網(wǎng)絡(luò)進(jìn)程的加快,傳統(tǒng)的購(gòu)物方式也越來(lái)越不能滿足人們快節(jié)奏的生活需求,使得企業(yè)的 IT 部門(mén)已經(jīng)認(rèn)識(shí)到 Internet 的優(yōu)勢(shì),電子商務(wù)就是在這樣一個(gè)背景下產(chǎn)生發(fā)展起來(lái)的。伴隨著電子商務(wù)技術(shù)的不斷成熟,電子商務(wù)的功能也越來(lái)越強(qiáng)大,注冊(cè)用戶可以在網(wǎng)上搜索購(gòu)買(mǎi)到自己想要的各種商品,初步讓人們體會(huì)到了足不出戶,便可隨意購(gòu)物的快感。我的畢業(yè)設(shè)計(jì)也就正是一個(gè)電子商務(wù)系統(tǒng)的開(kāi)發(fā)-網(wǎng)上商品銷(xiāo)售系統(tǒng)。1.21.2 JSPJSP 簡(jiǎn)介簡(jiǎn)介JSP(Java Server Pages)是由 Sun Microsystems 公司倡導(dǎo)、許多公司參與一起建立的一

9、種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn),JSP 技術(shù)在 Servlet 技術(shù)基礎(chǔ)上發(fā)展起來(lái)的,它正在飛速發(fā)展中,現(xiàn)已成為 Java 服務(wù)器編程的重要組成部分。它雖然還未成型,但是它必將和 J2EE(Java 2 Enterprise Edition)一起發(fā)展。JSP 是結(jié)合 markup(HTML 和 XML)和 Java 代碼來(lái)處理一種動(dòng)態(tài)頁(yè)面。每一頁(yè)第一次被調(diào)用時(shí),通過(guò) JSP 引擎自動(dòng)被編譯成 Servlet,然后被執(zhí)行,以后每次調(diào)用時(shí),執(zhí)行編譯過(guò)的 Servlet。JSP 提供了多種方式訪問(wèn) Java class、Servlet、Applets 和 Web Server,因此,Web 應(yīng)用的功能可以分成多

10、個(gè)明確定義公用接口的組件,通過(guò) JSP 將它 5 們結(jié)合在一起。1.2.11.2.1 JSPJSP 的運(yùn)行原理的運(yùn)行原理在 JSP 第一次獲得來(lái)自于客戶端瀏覽器的請(qǐng)求時(shí),JSP 文件將被 JSP 引擎(JSP engine)轉(zhuǎn)換成一個(gè) Servlet,即將”.jsp”文件編譯成 Java Class 文件。當(dāng)Servlet 引擎接收到請(qǐng)求后,如果設(shè)置了使用最新的 JSP,它就會(huì)去找 JSP 文件,檢查該文件在上次編譯后是否改動(dòng)過(guò)。如果改動(dòng)過(guò),就會(huì)重新編譯生成新的 Servlet,最終將請(qǐng)求轉(zhuǎn)交給編譯好的 Servlet 引擎執(zhí)行。如圖 1-1:圖 1-1 JSP 運(yùn)行原理Client客戶端客戶

11、端請(qǐng)求請(qǐng)求(Request)Web Server響應(yīng)響應(yīng)(Response)Serverextension服務(wù)器擴(kuò)展服務(wù)器擴(kuò)展ServletengineJSPengineServlet 引引擎擎JSP 引擎引擎ClassloaderJavacomplierJSPparser類(lèi)載入器類(lèi)載入器Java 編譯器編譯器JSP 語(yǔ)法分析語(yǔ)法分析器器 6 在編譯時(shí)如果發(fā)現(xiàn) JSP 文件有任何語(yǔ)法錯(cuò)誤,轉(zhuǎn)換過(guò)程將中斷,并向客戶端發(fā)出出錯(cuò)信息;如果編譯成功,則所轉(zhuǎn)換產(chǎn)生的 Servlet 代碼被編譯,然后該 Servlet 被JSP 引擎加載到內(nèi)存中。此時(shí) JSP 引擎還請(qǐng)求了 jspInit()方法的執(zhí)行,

12、并對(duì)此Servlet 初始化。JspInit()方法在 Servlet 的生命周期中只被請(qǐng)求一次,然后將被調(diào)用來(lái)處理客戶端的請(qǐng)求和回復(fù)操作。對(duì)于所有隨后對(duì)該 JSP 文件的請(qǐng)求,服務(wù)器將檢查該 JSP 文件自最后一次被存取后是否經(jīng)過(guò)修改。如果沒(méi)有修改,則將請(qǐng)求交還給還在內(nèi)存中的 Servlet 的 jspService()方法,執(zhí)行回復(fù)操作。由于 Servlet 始終駐于內(nèi)存,所以響應(yīng)是非常快的。Jsp 頁(yè)面在第一次訪問(wèn)時(shí)由于要轉(zhuǎn)化和編譯,運(yùn)行速度較慢,但是當(dāng)?shù)诙卧L問(wèn)該頁(yè)時(shí),由于文件已經(jīng)被編譯成字節(jié)碼文件了,所以速度非常得快。1.2.21.2.2 JSPJSP 頁(yè)面的組成頁(yè)面的組成JSP 頁(yè)

13、面看上去像標(biāo)準(zhǔn)的 HTML 和 XML 頁(yè)面,并附帶有 JSP 引擎能夠處理和解析執(zhí)行的代碼與組件。通常,JSP 代碼和組件用于創(chuàng)建在最終頁(yè)面上顯示的文本。通常來(lái)說(shuō),JSP 頁(yè)面包括編譯指令,動(dòng)作指令,聲明,表達(dá)式和程序段等內(nèi)容。1.21.2.3.3 JavaBeanJavaBean 技術(shù)介紹技術(shù)介紹JavaBean 技術(shù)是一種基于 Java 的組件技術(shù),JavaBean 組件可以用來(lái)執(zhí)行復(fù)雜的計(jì)算任務(wù),或負(fù)責(zé)與數(shù)據(jù)庫(kù)的交互以及數(shù)據(jù)的提取等,是解決代碼重用問(wèn)題的一種策 7 略。以前的組件無(wú)法實(shí)現(xiàn)真正的代碼重用,其主要原因就是它們對(duì)于處理平臺(tái)的依賴和對(duì)開(kāi)發(fā)語(yǔ)言的依賴過(guò)重。由于 Java 語(yǔ)言在這

14、些方面所具有的特點(diǎn)和優(yōu)勢(shì),使得基于它的軟件 JavaBean 組件技術(shù)倍受人們的關(guān)注。它的任務(wù)就是:一次編寫(xiě),可以在任何地方執(zhí)行,可以在任何地方重用。JavaBean 組件可以在任何地方?jīng)_用包括了可以在應(yīng)用程序、其他組件、文檔、Web 站點(diǎn)和應(yīng)用程序構(gòu)造器工具等多種方案中再利用。為了創(chuàng)建和使用 Java 軟件組件,JavaBean 被實(shí)現(xiàn)為一種獨(dú)立于平臺(tái)和結(jié)構(gòu)的應(yīng)用程序接口,它的實(shí)現(xiàn)可以忽略內(nèi)部的結(jié)構(gòu)及細(xì)節(jié)問(wèn)題,只需要定義其外部的特征及對(duì)外功能就行。其中,屬性、方法和事件三種接口可以獨(dú)立對(duì)外進(jìn)行開(kāi)發(fā)。JavaBean 的實(shí)質(zhì)就是一個(gè).class 文件,也可以成為類(lèi)文件。JavaBean 以 b

15、inary格式保存,可以保護(hù) Java 源代碼不容易被他人抄襲。1.2.41.2.4 JSPJSP 的運(yùn)行環(huán)境的運(yùn)行環(huán)境要運(yùn)行 Jsp,需要有支持 Jsp 的服務(wù)器。這里分 2 種情況:一種是自身就支持 Jsp的服務(wù)器,如 Jrun,Weblogic,JSWDK 等;而另一種則是在不支持 Jsp 的服務(wù)器上安裝Jsp 引擎的插件,如在 IIS,Apache 等服務(wù)器上安裝 WebSphere,tomcat,Resin 等插件。其中主流服務(wù)器是 Weblogic 和 tomcat.Weblogic 是一款功能強(qiáng)大的服務(wù)器軟件,配置比較簡(jiǎn)單,而且 Jsp 的擴(kuò)展功能較多,附帶了數(shù)據(jù)庫(kù)的 JDBC

16、驅(qū)動(dòng)程序。 ,支持 JHTML(一種與 Jsp 十分相似的技術(shù)),是目前市場(chǎng)占有率最高的服務(wù)器。 8 Tomcat 服務(wù)器是 Apache Group Jakarta 小組開(kāi)發(fā)的一個(gè)免費(fèi)服務(wù)器軟件,適合于嵌入 Apache 中使用,而且,它的源代碼可以免費(fèi)獲得,你可以自由地對(duì)它進(jìn)行擴(kuò)充。訪問(wèn)的地址 http:/jakarta. apache.org/tomacat/index.html, Tomcat 服務(wù)器的兼容性很好,如 WebLogic 服務(wù)器采用其為 Web 服務(wù)器引擎,Jbuilder 將其作為標(biāo)準(zhǔn)的測(cè)試服務(wù)器,Sun 公司也將其作為 JSP 技術(shù)應(yīng)用的示例服務(wù)器第二章第二章 需求需

17、求分析分析2.12.1 系統(tǒng)說(shuō)明系統(tǒng)說(shuō)明本系統(tǒng)是一個(gè)中小型的電子商務(wù)系統(tǒng)-網(wǎng)上書(shū)店,可以為各類(lèi)用戶提供方便的在線買(mǎi)書(shū)環(huán)境,符合目前國(guó)內(nèi)流行的電子商務(wù)模式。用戶可以在系統(tǒng)中實(shí)現(xiàn)注冊(cè)、瀏覽商品、搜索查詢商品、下定單、處理定單等功能;管理員可以通過(guò)用戶管理、定單管理、商品管理、評(píng)論管理等管理功能來(lái)對(duì)系統(tǒng)進(jìn)行維護(hù)更新。2.22.2 系統(tǒng)功能簡(jiǎn)介系統(tǒng)功能簡(jiǎn)介2.2.12.2.1 基本功能基本功能 游客可以瀏覽網(wǎng)站 用戶登陸 用戶能夠?yàn)g覽網(wǎng)站 提供搜索引擎,使用戶能夠按特定的條件對(duì)所需商品進(jìn)行搜索 9 用戶下定單購(gòu)買(mǎi)商品2.2.22.2.2 用戶界面設(shè)計(jì)用戶界面設(shè)計(jì)第三章第三章 系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)3.13.

18、1 系統(tǒng)設(shè)計(jì)思想系統(tǒng)設(shè)計(jì)思想本系統(tǒng)采用三層架構(gòu)設(shè)計(jì),它的工作原理如圖 3-1 所示。圖 3-1 10 采用三層構(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ù)層之間的接口即可。3.23.2 系統(tǒng)功能模塊化系統(tǒng)功能模塊化如圖 3-2 為本系統(tǒng)的功能模塊圖。用戶登錄在線購(gòu)書(shū)查看購(gòu)物車(chē)在線購(gòu)書(shū)察看訂單信息察看圖書(shū)詳細(xì)購(gòu)買(mǎi)圖書(shū)查詢察看圖書(shū)詳細(xì)資料購(gòu)買(mǎi)查看訂單詳細(xì)繼續(xù)購(gòu)書(shū)清空購(gòu)物車(chē)提交購(gòu)物車(chē)刪除已經(jīng)選購(gòu)的圖書(shū)修改購(gòu)買(mǎi)數(shù)量購(gòu)買(mǎi) 11 圖 3

19、-23.33.3 數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)在一個(gè)信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的好壞將直接對(duì)應(yīng)用系統(tǒng)的效率,以及實(shí)現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)可以提高數(shù)據(jù)存儲(chǔ)的效率,保證數(shù)據(jù)的完整和一致。3.3.13.3.1 數(shù)據(jù)庫(kù)需求分析數(shù)據(jù)庫(kù)需求分析針對(duì)一般在線書(shū)店的需求,得出如下需求信息。用戶分為游客和已注冊(cè)用戶。訂單分為單張?jiān)敿?xì)訂單和總訂單。一個(gè)用戶可以購(gòu)買(mǎi)多本圖書(shū)。一個(gè)用戶對(duì)應(yīng)一張訂單。一個(gè)列表對(duì)應(yīng)多張訂單。針對(duì)本系統(tǒng)功能分析,總結(jié)出如下的需求信息。用戶,包括數(shù)據(jù)項(xiàng):用戶 ID、用戶名、密碼。圖書(shū),包括數(shù)據(jù)項(xiàng):圖書(shū)編號(hào)、圖書(shū)名、價(jià)格、圖書(shū)介紹。訂單列表,包括數(shù)據(jù)項(xiàng):訂單

20、編號(hào)、圖書(shū)編號(hào)、購(gòu)書(shū)數(shù)量。訂單,包括數(shù)據(jù)項(xiàng):訂單編號(hào)、用戶編號(hào)、下單時(shí)間。 12 3.3.23.3.2 數(shù)據(jù)庫(kù)概念結(jié)構(gòu)數(shù)據(jù)庫(kù)概念結(jié)構(gòu)從本系統(tǒng)中規(guī)劃出的實(shí)體有:用戶實(shí)體、圖書(shū)實(shí)體、訂單實(shí)體、訂單列表實(shí)體。用戶信息實(shí)體的 E-R 圖如圖 3-4 所示。圖書(shū)實(shí)體的 E-R 圖如圖 3-5 所示。訂單實(shí)體的 E-R 圖如圖 3-6 所示。訂單列表實(shí)體的 E-R 圖如圖 3-7 所示。3.3.33.3.3 數(shù)據(jù)庫(kù)邏輯機(jī)構(gòu)設(shè)計(jì)數(shù)據(jù)庫(kù)邏輯機(jī)構(gòu)設(shè)計(jì)在線書(shū)店數(shù)據(jù)庫(kù)中各個(gè)表的設(shè)計(jì)結(jié)果如下面的標(biāo)和所示。表 3-8 為圖書(shū)信息列表。 13 表 3-8表 3-9 為用戶信息列表。表 3-9表 3-10 為訂單總表,記錄

21、某個(gè)用戶的訂單信息。表 3-10表 3-11 為訂單表,記錄但張訂單的具體信息。表 3-11 14 第四章第四章 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)4.14.1 系統(tǒng)概述系統(tǒng)概述我設(shè)計(jì)的這個(gè)系統(tǒng)是一個(gè)由 JSP 實(shí)現(xiàn)的網(wǎng)上購(gòu)書(shū)系統(tǒng)。它實(shí)現(xiàn)了基本的登錄驗(yàn)證、查詢商品、分頁(yè)處理、購(gòu)物車(chē)處理以及訂單處理功能,其主要界面見(jiàn)圖 4-1:圖 4-14.24.2 系統(tǒng)主要文件系統(tǒng)主要文件 這個(gè)購(gòu)書(shū)系統(tǒng)主要有 2 類(lèi)文件,一類(lèi)是 Bean 文件,我把它們統(tǒng)一放在了 cart文件夾里,保存在 jakarta-tomcat-5.0.27commonclassescart 下, (這是 tomcat要求的默認(rèn)存放 Bean 的路徑)

22、 ;另一類(lèi)是 jsp 文件,保存在 jakarta-tomcat-5.0.27webappsROOT。 (這是 tomcat 的默認(rèn)工作環(huán)境) 15 Bean 文件:CartManager.java,OrderEntity.java,OrderItemEntity.javaProductEntity.java,UserEntity.javaJsp 文 件:cart.jsp4.34.3 詳細(xì)代碼及說(shuō)明詳細(xì)代碼及說(shuō)明4.3.14.3.1 實(shí)現(xiàn)用戶實(shí)體的實(shí)現(xiàn)用戶實(shí)體的 BeanBean1)用戶作為實(shí)體,我把他的 id, 姓名,密碼作為其屬性在 Bean 里面做了定義,它們都是和數(shù)據(jù)庫(kù)里的 user

23、表相對(duì)應(yīng)的,在這個(gè) Bean 里封裝的方法也主要是對(duì)這個(gè)表進(jìn)行操作.這個(gè)幾個(gè)屬性都被定義為類(lèi)的私有成員,外界不可訪問(wèn)private String id;private String userName;private String userPassword;2)構(gòu)造函數(shù)里做了 2 件事情,第一:尋找數(shù)據(jù)庫(kù)連接驅(qū)動(dòng);第二:對(duì)上面的 3 個(gè)私有成員初始化:public static String sDBDriver = sun.jdbc.odbc.JdbcOdbcDriver;public static String sConnStr = jdbc:odbc:cart;public static C

24、onnection conn = null;public UserEntity(String id,String userName,String userPassword)try 16 Class.forName(sDBDriver); catch(java.lang.ClassNotFoundException e) System.err.println(UserEntity: + e.getMessage();this.id=id;this.userName=userName;this.userPassword=userPassword;3)這個(gè)類(lèi)我封裝了 2 類(lèi)方法:一是查找特定用戶名的

25、所有記錄,代碼如下:public static UserEntity queryUser(String userName) throws SQLExceptiontry Class.forName(sDBDriver); catch(java.lang.ClassNotFoundException e) System.err.println(UserEntity: + e.getMessage();String sql=select id,user_name,user_password from user where user_name= ? ; 17 ResultSet rs = null;

26、try conn = DriverManager.getConnection(sConnStr); PreparedStatement prepStmt = conn.prepareStatement(sql);prepStmt.setString(1,userName);rs = prepStmt.executeQuery(); catch(SQLException ex) System.err.println(OrderItemEntity executeQuery: + ex.getMessage();UserEntity user=null;if(rs.next()user=new U

27、serEntity(rs.getString(1),rs.getString(2),rs.getString(3);return user;該類(lèi)封裝的另一種方法是:用戶名和密碼的獲得。這個(gè)主要是為了方便后面驗(yàn)證用戶合法性使用public String getUserName() 18 return userName;public String getUserPassword()return userPassword;4.3.24.3.2 實(shí)現(xiàn)商品實(shí)體的實(shí)現(xiàn)商品實(shí)體的 BeanBean雖然我做的是一個(gè)購(gòu)書(shū)系統(tǒng),但考慮到系統(tǒng)的可擴(kuò)展性,我把書(shū)當(dāng)作一種商品來(lái)進(jìn)行定義。同樣,參照數(shù)據(jù)庫(kù)里的 produ

28、ct 表,我給商品這個(gè)類(lèi)定義了如下 4 個(gè)屬性,商品 id,商品名稱,商品價(jià)格,商品 note,其類(lèi)型同樣是該類(lèi)的私有屬性:private String id;private String productName;private String productPrice;private String productNote;1) 其構(gòu)造函數(shù)和用戶實(shí)體類(lèi)基本上一致,所以代碼及其說(shuō)明我在這里就省略了。2) 對(duì)商品的操作也主要是 2 類(lèi),一類(lèi)是對(duì)特定商品的查詢,其原理和查詢用戶是一樣的,但是有一點(diǎn)小小的區(qū)別,即查詢商品可以使查詢所有的商品,或者是查詢特定 id 的商品,我通過(guò)以下代碼把這 2 種查詢合

29、在了queryProduct 這個(gè)函數(shù)里:String sql=select id,product_name,product_price,product_note from product ; 19 if(productIpareTo()!=0)sql=sql+ where id = ? ;Vector v=new Vector();ResultSet rs = null;其關(guān)于連接數(shù)據(jù)庫(kù),查詢記錄的代碼和上面的大致雷同,所以在這里就省略了。顯示商品是分頁(yè)顯示的,其代碼如下:while(rs.next()+i;if(ipageCount*pageSize)if(i=(pageCount+1)*

30、pageSize)v.add(new ProductEntity(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4);elsebreak;這一段代碼的主要功能是:每一頁(yè)最多顯示 pageSize 個(gè)商品,如果超過(guò) pageSize個(gè),就分頁(yè)顯示。PageSize 在后面將會(huì)定義,其值我設(shè)置為 10。 20 3) 第二類(lèi)方法是查詢商品的 id,全稱,價(jià)格和 note. 例如查找商品的 ID:public String getProductId()return id; 4.3.34.3.3 實(shí)現(xiàn)訂購(gòu)單實(shí)體的實(shí)現(xiàn)訂購(gòu)單實(shí)體的

31、 BeanBean 客戶每次購(gòu)買(mǎi)一種商品都會(huì)產(chǎn)生一次訂購(gòu)單,它包括訂單號(hào),所購(gòu)買(mǎi)的書(shū)號(hào),所購(gòu)買(mǎi)這種書(shū)的數(shù)量,這些構(gòu)成了這個(gè)類(lèi)的私有屬性:private String id;private String orderId;private String productId;private String productNum; 21 1) 客戶每次選中一種商品后,點(diǎn)擊放入購(gòu)物車(chē),就會(huì)產(chǎn)生一個(gè)訂單,其實(shí)現(xiàn)代碼如下:String sql=insert into order_item(order_id,product_id,product_num) values(?,?,?) ;ResultSet rs =

32、 null;try conn = DriverManager.getConnection(sConnStr); PreparedStatement prepStmt = conn.prepareStatement(sql);prepStmt.setString(1,orderId);prepStmt.setString(2,productId);prepStmt.setString(3,productNum);prepStmt.executeUpdate();訂購(gòu)單,書(shū)號(hào),購(gòu)買(mǎi)數(shù)量都是作為參數(shù)傳過(guò)來(lái)的。很明顯,新建一張訂購(gòu)單其實(shí)就是在 order_item 表里插入一條新紀(jì)錄就可以了。其原理已

33、經(jīng)在上面說(shuō)過(guò)來(lái)了,就不在此重復(fù)了。2)在后面的購(gòu)物車(chē)?yán)?,一名顧客的最終消費(fèi)總額就是根據(jù)這里一張張的訂購(gòu)單得到的,所以查找特定訂單號(hào)的訂購(gòu)單是這個(gè)類(lèi)里面不可缺少的方法,它的算法實(shí)質(zhì)上就是條件查詢,和前面的無(wú)條件查詢相比,我只把 sql 語(yǔ)句作了改動(dòng):String sql=select id,order_id,product_id,product_num from order_item where order_id= ? ; 22 3)第 3 個(gè)被封裝的方法是設(shè)置,獲得訂購(gòu)單號(hào),書(shū)號(hào),定購(gòu)數(shù)量,并且還可以獲得 session price.4.3.44.3.4 實(shí)現(xiàn)購(gòu)物車(chē)實(shí)體的實(shí)現(xiàn)購(gòu)物車(chē)實(shí)體的 Be

34、anBean在現(xiàn)實(shí)生活中,人們?nèi)コ匈I(mǎi)東西,都是把商品放在一個(gè)購(gòu)物籃里,等到把所有要買(mǎi)的東西選購(gòu)?fù)戤吅?,一起拿到收銀臺(tái)前付錢(qián)。我在程序里定義的購(gòu)物車(chē)實(shí)體就是模擬這個(gè)功能.作為購(gòu)物車(chē),購(gòu)物人,購(gòu)物時(shí)間,所購(gòu)書(shū)的總價(jià)格都是必不可少的:private String id;private String userName;private String orderDate;private String orderPrice;我覺(jué)得在這個(gè)Bean里面主要要解決的一個(gè)問(wèn)題,如何解決一個(gè)新的購(gòu)物車(chē)。當(dāng)一個(gè)顧客買(mǎi)完書(shū)提交購(gòu)物車(chē)后,我們必須插入一個(gè)新的購(gòu)物車(chē)紀(jì)錄,這是由insertOrder()方法來(lái)實(shí)現(xiàn)的:其插入

35、代碼如下:conn = DriverManager.getConnection(sConnStr); PreparedStatement prepStmt = conn.prepareStatement(sql);String curDate=(java.util.Calendar.getInstance().getTime().toString();prepStmt.setString(1,userName);prepStmt.setString(2,curDate); 23 prepStmt.setString(3,orderPrice);prepStmt.executeUpdate();

36、這里,插入的原理和前面是相同的,但是有一個(gè)地方需要解釋:即購(gòu)物時(shí)間字段,是采用的java.util.Calendar.getInstance().getTime(),這是一個(gè)庫(kù)函數(shù),被封裝在java.util,在這個(gè)類(lèi)定義的開(kāi)頭,我把這個(gè)庫(kù)文件包含進(jìn)來(lái):import java.util.*;這個(gè)方法返回的結(jié)果必須把轉(zhuǎn)化成 String,否則后面插入數(shù)據(jù)庫(kù)時(shí)會(huì)出現(xiàn)類(lèi)型不匹配的錯(cuò)誤。toString()就是用來(lái)實(shí)現(xiàn)類(lèi)型轉(zhuǎn)換的。為了方便后面對(duì)這個(gè)購(gòu)物車(chē)進(jìn)行操作,我在這個(gè)方法里還獲得了該購(gòu)物車(chē)的 id: String selectStatement =select id +from orderlist

37、 where user_name=? order by id desc ; PreparedStatement prepStmt = conn.prepareStatement(selectStatement); prepStmt.setString(1,userName); ResultSet rs = prepStmt.executeQuery(); rs.next(); String result=rs.getString(1);return result;在sql里,查詢特定用戶購(gòu)物車(chē)的id號(hào),并且按照降序排列。是因?yàn)?,針?duì)一個(gè)網(wǎng)上購(gòu)書(shū)系統(tǒng),顧客可以多次在這里購(gòu)書(shū),那么在購(gòu)物車(chē)表單里,

38、針對(duì)一個(gè)顧客會(huì)有很多條他的購(gòu)物紀(jì)錄,而在數(shù)據(jù)庫(kù)里,各條記錄的id是安裝時(shí)間先后順序逐漸遞增的, 24 如果安裝降序排列,那么得到的第一條記錄則是最新插入的紀(jì)錄。result=rs.getString(1)表示只把該條記錄的第一個(gè)字段傳給result,即把購(gòu)物車(chē)的id號(hào)傳給result。 4.3.54.3.5 實(shí)現(xiàn)購(gòu)物實(shí)體的實(shí)現(xiàn)購(gòu)物實(shí)體的 BeanBean1)買(mǎi)書(shū)的第一步便是用戶登錄,現(xiàn)在購(gòu)書(shū)網(wǎng)站都要求已經(jīng)注冊(cè)過(guò)的用戶才能購(gòu)買(mǎi)書(shū)籍,這樣便于網(wǎng)站管理。checkUser(String userName,String userPassword)就是用來(lái)檢驗(yàn)用戶的合法性的:public int che

39、ckUser(String userName,String userPassword) int result=0;UserEntity user=null; try user=UserEntity.queryUser(userName); catch(SQLException ex) System.err.println(ex.getMessage();if(user=null)return 0;String pass=user.getUserPassword(); 25 if(pareTo(userPassword)=0) result=1;this.userName=userName;re

40、turn result;這個(gè)函數(shù)傳過(guò)來(lái)的 2 個(gè)參數(shù)分別是用戶登錄時(shí)候填寫(xiě)的用戶名和密碼,前面已經(jīng)介紹過(guò),在 UserEntity 里面有一個(gè)查詢特定用戶名的記錄的方法,我根據(jù)用戶登錄上填寫(xiě)的用戶名查詢記錄:queryUser(userName),并把結(jié)果賦給一個(gè)對(duì)象 user。把傳過(guò)來(lái)的密碼和和這個(gè)對(duì)象的密碼比較,pareTo(userPassword)=0,如果相同,則用戶是合法的,可以購(gòu)買(mǎi)本網(wǎng)站的書(shū)籍,result=1;如果不相同,則說(shuō)明他是非法登錄的,只能瀏覽網(wǎng)站,不能買(mǎi)書(shū),result=0。Result 就是這個(gè)函數(shù)的返回值,是一個(gè)整型變量。2)證明是合法用戶后,就必須給這個(gè)用戶一個(gè)

41、購(gòu)物車(chē),用戶每次選中一本書(shū), 26 點(diǎn)擊“放入購(gòu)物車(chē)”,就必須添加一個(gè)訂購(gòu)單。這就相當(dāng)于把用戶要買(mǎi)的書(shū)放入購(gòu)物車(chē)?yán)?,insertOrder()就是用來(lái)實(shí)現(xiàn)這些的,其主要代碼如下:public void insertOrder()/insert intoDataBasetryif(orderPrice=0)return;OrderEntity oe=new OrderEntity(null,userName,null,Integer.toString(orderPrice);orderId=oe.insertOrder();for(int i=0;iorderItem.size();i+)Ord

42、erItemEntity oi=(OrderItemEntity)orderItem.elementAt(i);oi.setOrderId(orderId);oi.insertOrderItem(); catch(SQLException ex) System.err.println(InsertOrder executeQuery: + ex.getMessage(); orderItem.removeAllElements();orderPrice=0; 27 當(dāng) orderPrice=0,說(shuō)明用戶還沒(méi)有開(kāi)始買(mǎi)書(shū),在這個(gè)時(shí)候創(chuàng)建購(gòu)物車(chē),并且獲得它的 id 號(hào),保存在 orderId 這個(gè)變

43、量里。一個(gè)客戶可以有很多張訂購(gòu)單,但是購(gòu)物車(chē)id 號(hào)是一樣的,所以在插入訂購(gòu)單的時(shí)候,必須把其購(gòu)物車(chē)的 id 號(hào)設(shè)置為 orderId。3)addOrderItem(String productId,String productPrice)實(shí)現(xiàn)的是購(gòu)買(mǎi)一種商品多次:public void addOrderItem(String productId,String productPrice) for(int i=0;iorderItem.size();i+) OrderItemEntity oi=(OrderItemEntity)orderItem.elementAt(i);String pId=

44、oi.getProductId();if(pIpareTo(productId)=0)int num=Integer.parseInt(oi.getProductNum();+num;oi.setProductNum(Integer.toString(num);this.orderPrice+=Integer.parseInt(productPrice);return; OrderItemEntity oiNew=new OrderItemEntity(null,null,productId,1,Integer.parseInt(productPrice);orderItem.add(oiNe

45、w);this.orderPrice+=Integer.parseInt(productPrice); 28 因?yàn)槊奎c(diǎn)擊一次“放入購(gòu)物車(chē)” ,只能購(gòu)買(mǎi)相應(yīng)的商品一次,并且數(shù)量之能為 1。但是購(gòu)買(mǎi)的是同一個(gè)商品,其 productId 是一致的,要重新寫(xiě)入一張訂購(gòu)單,就必須把原來(lái) productId 的訂購(gòu)單修改一下就可以了。比較用戶確實(shí)是買(mǎi)的一樣 id 的書(shū):pIpareTo(productId),如果是,則修改訂購(gòu)單的數(shù)量,num+,把總價(jià)格加上本書(shū)的價(jià)格:this.orderPrice+=Integer.parseInt(productPrice); 通過(guò)以上的操作,把修改后的結(jié)果作為新的

46、屬性重新插入成新的訂購(gòu)單。4)在 CartManager 類(lèi)里,還封裝了一個(gè)書(shū)查詢的方法,主要是調(diào)用了ProductEntity 類(lèi)里的 queryProduct 方法。需要說(shuō)明的地方是,先是查詢結(jié)果的時(shí)候分頁(yè)顯示的,每頁(yè)顯示的書(shū)籍的資料最多不超過(guò) 10 本。這是由 pageSize 這個(gè)變 29 量來(lái)實(shí)現(xiàn)的。關(guān)于這個(gè)變量,我把它定義成 CartManage 的私有成員:private int pageSize=10;public void setPageSize(int pageSize)this.pageSize=pageSize;4.3.64.3.6 前臺(tái)運(yùn)行程序前臺(tái)運(yùn)行程序 cart.

47、jspcart.jsp通過(guò)這個(gè) jsp 程序,我實(shí)現(xiàn)了 3 個(gè)功能:1:顯示主頁(yè)面;2:把主頁(yè)面里瀏覽者的資料和請(qǐng)求傳給后臺(tái)的 Bean 來(lái)處理;3:調(diào)用 Bean,來(lái)實(shí)現(xiàn)系統(tǒng)的登錄,查詢,分頁(yè)處理,購(gòu)書(shū)等功能在程序的開(kāi)頭有這樣 2 條語(yǔ)句:上面已經(jīng)說(shuō)明,我把所有的 Bean 文件都放在了 cart 里面,要使得能在 jsp 文件中使用它們,就必須用 import 把 cart 包含進(jìn)來(lái)。下面我想介紹一下 useBean 這個(gè)動(dòng)作,通過(guò) useBean 動(dòng)作我建立了一個(gè)類(lèi)型為cartManager 的 Bean 對(duì)象 cartManager,我實(shí)現(xiàn)的所有功能都是通過(guò)調(diào)用這個(gè)對(duì)象的 30 方法來(lái)

48、實(shí)現(xiàn)的。1)我把主頁(yè)面分為 3 個(gè)部分,每個(gè)部分作為一個(gè)表格來(lái)處理:實(shí)現(xiàn)登錄框的表格:實(shí)現(xiàn)登錄框的表格: 登錄用戶名:密  碼:實(shí)現(xiàn)書(shū)籍清單的表格:實(shí)現(xiàn)書(shū)籍清單的表格: 商品ID: 32 商品ID 商品名稱 商品價(jià)格 商品說(shuō)明 當(dāng)前第頁(yè) 實(shí)現(xiàn)購(gòu)物信息的表格實(shí)現(xiàn)購(gòu)物信息的表格: : 33 購(gòu)物車(chē) 商品ID 數(shù)量 上面只列出了部分代碼,從上面的代碼里很容易發(fā)現(xiàn)一個(gè)共同點(diǎn),就是它們都是用了標(biāo)簽.我通過(guò)這個(gè)標(biāo)簽,把前臺(tái)的數(shù)據(jù)傳給后臺(tái)的函數(shù).form 有 2 個(gè)很重要的屬性,一是 action,它用來(lái)指明從客戶端保存的數(shù)據(jù)傳到哪里去,在我的程序里,它通常都只向 cart.jsp,然后

49、在 cart.jsp 里,用 request 對(duì)象來(lái)接收這些數(shù)據(jù),最終作為函數(shù)的參數(shù)使用;二是 method,它是指?jìng)鬟f數(shù)據(jù)的方式,在這里我都是采用的 post 方式。Form 里面很重要的另外一個(gè)東西就是:input,它是與用戶進(jìn)行交互的主要工具。根據(jù)不同的類(lèi)型,可以有不同的作用。我使用了其空白框給用戶填寫(xiě)數(shù)據(jù),其 type=text,按鈕是 form 里必不可少的,type=submit,只有當(dāng)用戶點(diǎn)擊確定按鈕,客戶端才會(huì)最終把這些數(shù)據(jù)傳給 cart,jsp 來(lái)處理。2)我在實(shí)現(xiàn)這個(gè)系統(tǒng)的時(shí)候,主要是根據(jù)用戶對(duì)頁(yè)面的點(diǎn)擊做出回應(yīng)的,所以在cart.jsp 里我設(shè)置了一個(gè) String op

50、=request.getParameter(op);當(dāng) op 取不同的值的時(shí)候,就調(diào)用不同的函數(shù)完成不同的功能,其代碼如下: 34 if(op!=null&pareTo(login)=0)int result=cartManager.checkUser(request.getParameter(userName),request.getParameter(userPassword);if(result=1)loginInfo=登錄成功!歡迎你;elseloginInfo=登錄失敗!;/表示顧客點(diǎn)擊的是登錄,這個(gè)時(shí)候就調(diào)用cartManager類(lèi)里的checkUser()方法,這里用的對(duì)象car

51、tManager就是先前在開(kāi)通通過(guò)uesBean動(dòng)作定義的那個(gè)對(duì)象。UserName是剛剛通過(guò)登錄表格的form標(biāo)簽傳過(guò)來(lái)的用戶名,它作為checkUser的實(shí)參。這個(gè)參數(shù)返回一個(gè)int值,1表示登錄成功,0表示登錄失敗。if(op!=null&pareTo(cart)=0)if(cartManager.getUserName().compareTo()!=0)cartManager.addOrderItem(request.getParameter(productId),request.getParameter(productPrice); 35 elseloginInfo=請(qǐng)先登錄!;/如

52、果客戶點(diǎn)擊放入購(gòu)物車(chē),這時(shí)就會(huì)有2種情況,一種是這位顧客還沒(méi)有登錄,那么他是不能買(mǎi)書(shū)的;另外一種是登錄成功,那必須為這次采購(gòu)插入一張訂購(gòu)單。我是通過(guò)購(gòu)物車(chē)類(lèi)中的usename來(lái)識(shí)別這2種情況的。因?yàn)橹灰卿洺晒?,系統(tǒng)就會(huì)為他創(chuàng)建一個(gè)購(gòu)物車(chē)類(lèi)的對(duì)象,那么他的username一定不為空,就執(zhí)行cartManager 對(duì)象的addOrderItem()方法,這個(gè)函數(shù)在調(diào)用的時(shí)候必須傳過(guò)去的參數(shù)是:書(shū)名號(hào),書(shū)價(jià)格。如果比較的結(jié)果為空,則打印請(qǐng)先登錄的提示信息。if(op!=null&pareTo(cartDeleteItem)=0)cartManager.deleteOrderItem(reques

53、t.getParameter(productId);/如果顧客把書(shū)放入購(gòu)物車(chē)后又不想買(mǎi)了,就會(huì)執(zhí)行cartManager對(duì)象的 deleteOrderItem()方法,為什么這里不需要像上面一樣比較是否登錄呢?是因?yàn)轭櫩图热灰獎(jiǎng)h除訂購(gòu)單,那么肯定是成功買(mǎi)了書(shū),根據(jù)上面可以知道,賣(mài)過(guò)書(shū)的顧客肯定是成功登錄過(guò)的。其中,productId是它的實(shí)參。if(op!=null&pareTo(submitOrder)=0&Integer.parseInt(cartManager.getOrderPrice()!=0) 36 cartManager.insertOrder();orderInfo=您的購(gòu)物單

54、已提交,ID是:+cartManager.getOrderId();/最后是顧客購(gòu)買(mǎi)活動(dòng)全部結(jié)束,提交購(gòu)物車(chē),這時(shí)插入這個(gè)購(gòu)物車(chē),并且核算金額。/set the product listcartManager.setPageSize(10);Vector vProduct=cartManager.queryProduct(pageCount);/ out.print(queryProductId:+cartManager.getQueryProductId()+);/set the orderItem listVector vOrderItem=cartManager.getOrderItem

55、(); 37 第五章第五章 總結(jié)總結(jié)本文論述了一個(gè)基于 WEB 的網(wǎng)上商品銷(xiāo)售系統(tǒng),基本上體現(xiàn)了電子商務(wù)各方面的優(yōu)點(diǎn)。我所設(shè)計(jì)的網(wǎng)上書(shū)店,主要是熟悉和掌握 JSP 的技術(shù)以及對(duì)電子商務(wù)進(jìn)行初步的探討和設(shè)計(jì)。在幾個(gè)月的設(shè)計(jì)過(guò)程中,我初步了解了 JSP 的優(yōu)點(diǎn)和先進(jìn)之處,也看到了 JSP 技術(shù)在電子商務(wù)應(yīng)用上的光明前途。通過(guò)這次設(shè)計(jì),我設(shè)計(jì)的網(wǎng)上書(shū)店基本完成了要求的諸項(xiàng)基本功能,實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的不同部分以數(shù)據(jù)為中心的模型,在方案的各部分在實(shí)際運(yùn)作中能夠解決相應(yīng)的問(wèn)題。在設(shè)計(jì)和制作網(wǎng)上書(shū)店這一個(gè)整體項(xiàng)目的過(guò)程中,也培養(yǎng)了自己的綜合能力和從全局考慮的思想。將復(fù)雜的問(wèn)題簡(jiǎn)單化,作為電子商務(wù)應(yīng)用的一個(gè)縮影,我所涉及的模塊項(xiàng)目完成了其后臺(tái)具有的基本功能,使自己對(duì)于電子商務(wù)的了解更加深入和明了。當(dāng)然,其中也遺留下了一些待解決的問(wèn)題,但出于自己水平有限,作為一個(gè)網(wǎng)上書(shū)店系統(tǒng),該項(xiàng)目上有一些不完善和函待改進(jìn)之處,特別是在網(wǎng)站信息的安全性上需要進(jìn)一步加強(qiáng)。 38 參考文獻(xiàn)參考文獻(xiàn)1 汪孝宜、劉中兵、徐佳晶等編著,JSP 數(shù)據(jù)庫(kù)開(kāi)發(fā)實(shí)例精粹,電子工業(yè)出版社,20052 姚曉春、鄭文清等編著,Java 編程技術(shù)教程,清華大學(xué)出版社,19993 吳逸賢、吳目誠(chéng)編著,Java2 程序設(shè)計(jì),科學(xué)出版社,20034 Http:/5 Http:/ (Jsp 中文網(wǎng))

展開(kāi)閱讀全文
溫馨提示:
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. 裝配圖網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!