版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 網(wǎng)上購(gòu)物系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p> Design and implementation of online shopping system</p><p> 專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)(信息處理中日)</p><p> 姓 名: </p><p><b> 指 導(dǎo) 教
2、 師:</b></p><p> 申請(qǐng)學(xué)位級(jí)別:學(xué) 士</p><p> 論文提交日期: 年 月 日</p><p><b> 學(xué)位授予單位: </b></p><p><b> 摘 要</b></p><p> 隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展和
3、網(wǎng)絡(luò)應(yīng)用的普及,網(wǎng)絡(luò)平臺(tái)在人類的生活和工作中起著越來(lái)越重要的作用。它的快速發(fā)展為互聯(lián)網(wǎng)的發(fā)展帶來(lái)了更多的動(dòng)力和機(jī)會(huì),所以選擇開(kāi)發(fā)一個(gè)很好的網(wǎng)上購(gòu)物系統(tǒng)擁有非常重要的意義。 該文闡述了以MVC框架的網(wǎng)上購(gòu)物系統(tǒng)的開(kāi)發(fā)與設(shè)計(jì)。本開(kāi)發(fā)采用的是當(dāng)前比較流行的JSP語(yǔ)言開(kāi)發(fā)技術(shù)和MVC框架,并采用MySQL數(shù)據(jù)庫(kù)進(jìn)行網(wǎng)站后臺(tái)一些數(shù)據(jù)處理等操作。網(wǎng)站實(shí)現(xiàn)的基本作用包括用戶的信息維護(hù)、查看商品信息、購(gòu)物車的維護(hù)、提交訂單信息、訂單信息的維護(hù)以及管
4、理員對(duì)于購(gòu)物系統(tǒng)的維護(hù)與更新。對(duì)于頁(yè)面的格式,使用HTML語(yǔ)言構(gòu)建基本的前臺(tái),然后用Eclipse在框架的鋪墊上進(jìn)行更加細(xì)致的美化設(shè)計(jì)。建立后的網(wǎng)站是一個(gè)動(dòng)態(tài)交互式的網(wǎng)上購(gòu)物系統(tǒng)。</p><p> 該文的內(nèi)容介紹如下: </p><p> 第一章主要講述了課題的開(kāi)發(fā)背景,課題開(kāi)發(fā)的重要性及目標(biāo),網(wǎng)上購(gòu)物網(wǎng)站的國(guó)內(nèi)和國(guó)外的目前的一些情況。 </p><p>
5、 第二章講述了以MVC框架為模式的軟件開(kāi)發(fā)模式,購(gòu)物系統(tǒng)網(wǎng)站運(yùn)用哪種方式實(shí)現(xiàn)MVC模式,并說(shuō)明了開(kāi)發(fā)環(huán)境和和開(kāi)發(fā)使用的工具。 </p><p> 第三章對(duì)購(gòu)物網(wǎng)站進(jìn)行了分析,在需求分析的鋪墊上,設(shè)計(jì)出比較合適的數(shù)據(jù)庫(kù)以及每個(gè)模塊的功能設(shè)計(jì),設(shè)計(jì)出系統(tǒng)每個(gè)模塊的用例圖。 </p><p> 第四章簡(jiǎn)述了各個(gè)模塊的控制層,業(yè)務(wù)邏輯層,視圖層的一些詳細(xì)的實(shí)現(xiàn)過(guò)程。對(duì)已完成了網(wǎng)站進(jìn)行了測(cè)試。&
6、lt;/p><p> 關(guān)鍵詞:JSP; MySQL; MVC框架; 網(wǎng)絡(luò)購(gòu)物系統(tǒng)</p><p><b> ABSTRACT</b></p><p> With the rapid development of computer technology and the popularity of network applications[14]
7、, the electronic-commerce plays an important role in our lives. Its rapid development for the development of the Internet has brought more and more vitality and business opportunities, so design and develop a good online
8、 shopping system has the vital significance[16]. </p><p> This article describes the development of the network shopping system based on MVC and design.This design used the popular web development technolog
9、y of JSP and the MVC development pattern,then combined with MySQL database for the website background operation.The system's basic functions including the maintenance of customer information , browse commodity inform
10、ation, shopping cart, submit orders information maintenance, etc.For the basic format of the page, using the HTML language to build the </p><p> The chapters of this paper are described below: </p>&
11、lt;p> The first chapter described the research background, the meaning and purpose of the research[15]; domestic and international status of e-commerce site. The second chapter describes the MVC software design pat
12、tern, e-commerce sites use what way the MVC pattern, and system development tools and development environment. The third chapter on e-commerce site needs analysis,On the basis of needs analysis,design a database,the fu
13、nctional design of each module Given the various modules of the system</p><p> Key words:JSP; MySQL; Model View Controller; Online Shopping System</p><p><b> 緒論</b></p><
14、p><b> 引言</b></p><p> 隨著Internet的飛快的發(fā)展,互聯(lián)網(wǎng)已漸漸成為人們生活和工作中不可分離的部分。網(wǎng)絡(luò)為人們提供了獲取信息的方便的方法。在此契機(jī)上,網(wǎng)上購(gòu)物開(kāi)始漸漸的發(fā)展起來(lái),逐步打破了人們保守的購(gòu)物的方式和現(xiàn)在的商業(yè)模式。網(wǎng)上購(gòu)物系統(tǒng)相比于的保守的購(gòu)物節(jié)省了成本,也解決了很多商業(yè)店鋪的問(wèn)題,并且也滿足了顧客在線購(gòu)物的需要,是未來(lái)消費(fèi)的必然趨勢(shì)。<
15、;/p><p> 本論文主旨在于通過(guò)對(duì)基礎(chǔ)的電子購(gòu)物系統(tǒng)知識(shí)的了解和學(xué)習(xí),最后形成一個(gè)以MVC框架為基礎(chǔ)的的網(wǎng)上購(gòu)物網(wǎng)站的設(shè)計(jì)與開(kāi)發(fā)。和其他網(wǎng)上購(gòu)物網(wǎng)站相比,本課題開(kāi)發(fā)主要采用JSP語(yǔ)言和MVC框架的設(shè)計(jì)模式。JSP語(yǔ)言作為一種動(dòng)態(tài)網(wǎng)頁(yè)的開(kāi)發(fā)技術(shù)之一,采用JSP框架設(shè)計(jì)Web應(yīng)用時(shí),很大的提高了程序執(zhí)行的效率和速度。并且采用MVC框架設(shè)計(jì)模式,是為了使得應(yīng)用程序的設(shè)計(jì)和開(kāi)發(fā)的系統(tǒng)構(gòu)架變得更加簡(jiǎn)單、更合理。最終目標(biāo)
16、是形成一個(gè)簡(jiǎn)單明了、具有交互性的和能夠滿足現(xiàn)代人們方便的電子購(gòu)物系統(tǒng)。</p><p><b> 系統(tǒng)開(kāi)發(fā)背景</b></p><p> 隨著網(wǎng)絡(luò)的不斷發(fā)展,Internet已經(jīng)遍布全球各個(gè)地方,將世界上所有的網(wǎng)絡(luò)連接成一個(gè)整體?,F(xiàn)今的Internet已是世界上最大的Internet網(wǎng)絡(luò)。近年來(lái),隨著Internet用戶的需求不斷提高,使得計(jì)算機(jī)方面的技術(shù)猛速發(fā)展
17、,特別是在數(shù)據(jù)庫(kù)技術(shù)方面的領(lǐng)域發(fā)展,這也促進(jìn)Web站點(diǎn)向用戶提供越來(lái)越人性化,越來(lái)越豐富的服務(wù)[3]。</p><p> 電子商務(wù)的發(fā)展也有它的必然性?,F(xiàn)今社會(huì)人們的生活和工作的節(jié)奏變的越來(lái)越快,人們已經(jīng)不滿足傳統(tǒng)的逛街購(gòu)物。而隨著電子商務(wù)平臺(tái)服務(wù)、信用服務(wù)的不斷發(fā)展,現(xiàn)代物流、電子支付、支撐體系和電子認(rèn)證等的漸漸完善。電子交易平臺(tái)和商務(wù)信息正在不斷的向集成化和專業(yè)化的方向發(fā)展,以及社會(huì)的信用環(huán)境不斷改善,為電
18、子商務(wù)的交易創(chuàng)造了非常有利的條件。電子商務(wù)系統(tǒng)以其便利、快捷和優(yōu)秀的服務(wù),非常滿足了現(xiàn)在人們的現(xiàn)在的購(gòu)物理念。這也推動(dòng)了電子商務(wù)系統(tǒng)的不斷發(fā)展。 如今,全球的社會(huì)逐漸邁入了信息自動(dòng)化處理的時(shí)代,網(wǎng)上購(gòu)物的發(fā)展成為了現(xiàn)實(shí)。網(wǎng)絡(luò)購(gòu)物成為現(xiàn)代化服務(wù)業(yè)中的重點(diǎn)產(chǎn)業(yè)之一,有著“綠色產(chǎn)業(yè)”、“朝陽(yáng)產(chǎn)業(yè)”的稱號(hào)。具有高技術(shù)含量、附加價(jià)值、高人力資本含量等特點(diǎn)。網(wǎng)絡(luò)購(gòu)物產(chǎn)業(yè)具有交易連續(xù)化、資源集約化、市場(chǎng)全球化等優(yōu)勢(shì)。網(wǎng)上購(gòu)物打破了保守的以人工處理
19、信息為主的傳統(tǒng)商業(yè)模式,網(wǎng)上購(gòu)物以及成為了當(dāng)今最流行的購(gòu)物方式。</p><p><b> 系統(tǒng)開(kāi)發(fā)的意義</b></p><p> 從電子商務(wù)系統(tǒng)的快速發(fā)展可以看出來(lái),一個(gè)優(yōu)秀的網(wǎng)絡(luò)購(gòu)物系統(tǒng)有著傳統(tǒng)購(gòu)物模式無(wú)法相比的優(yōu)勢(shì)。電子商務(wù)系統(tǒng)有以下幾點(diǎn)優(yōu)勢(shì): </p><p> 1、系統(tǒng)可以全天營(yíng)業(yè),不受時(shí)間上的限制。</p>
20、<p> 2、系統(tǒng)是在網(wǎng)絡(luò)的基礎(chǔ)上建立,所以基本上不受地理位置的影響。</p><p> 3、系統(tǒng)所需的投資比較少,且經(jīng)營(yíng)得當(dāng)?shù)脑捇厥湛臁?lt;/p><p> 4、系統(tǒng)不再需要實(shí)體店的支持,不受店面方面的因素限制。 </p><p> 5、系統(tǒng)所需的資源基本為網(wǎng)絡(luò)資源,不用占用大量資金。 </p><p> 電子商
21、務(wù)系統(tǒng)的快速發(fā)展正在逐漸改變了人們的原來(lái)的生活方式,電子商務(wù)漸漸的代替了原來(lái)人與人之間面對(duì)面的商務(wù)方式。沒(méi)有了人為、時(shí)間和空間等條件上的限制,人們的工作和生活變得更加的便利輕松。網(wǎng)絡(luò)的方便給人們的生活帶來(lái)很大的變化,人類將漸漸習(xí)慣與計(jì)算機(jī)網(wǎng)絡(luò)的共存、適應(yīng)。</p><p><b> 論文主要研究?jī)?nèi)容</b></p><p> 本論文研究的是如何構(gòu)建一個(gè)以MVC框架
22、為基礎(chǔ)的電子商務(wù)系統(tǒng),通過(guò)本系統(tǒng)的研究了解國(guó)內(nèi)和國(guó)外電子商務(wù)系統(tǒng)的知識(shí)與技術(shù)。在構(gòu)建網(wǎng)站之前,先要對(duì)本系統(tǒng)進(jìn)行分析,了解本系統(tǒng)的基本功能。再將本系統(tǒng)的個(gè)個(gè)功能模塊進(jìn)行肢解,以方便后期每個(gè)功能的模塊的程序代碼的編寫(xiě)。在完成功能模塊編寫(xiě)后,操作每個(gè)模塊之間的鏈接,最后完成整個(gè)系統(tǒng)的組建。再就本研究的成果進(jìn)行總結(jié),探討網(wǎng)絡(luò)購(gòu)物系統(tǒng)的發(fā)展趨勢(shì)。</p><p><b> 開(kāi)發(fā)環(huán)境概述</b><
23、;/p><p> 開(kāi)發(fā)工具EclipseEclipse 是一個(gè)基于Java的可擴(kuò)展、開(kāi)放源代碼的開(kāi)發(fā)平臺(tái)。它只是一組服務(wù)和一個(gè)框架,用于通過(guò)插件來(lái)構(gòu)建開(kāi)發(fā)環(huán)境。Eclipse 并且附帶了標(biāo)準(zhǔn)的插件集,包括了Java開(kāi)發(fā)工具。</p><p> 服務(wù)器 Tomcat</p><p> Tomcat是一個(gè)免費(fèi)并且開(kāi)源的Serlvet容器,它是Apache基金會(huì)的J
24、akarta項(xiàng)目中的一個(gè)項(xiàng)目,由 Apache、sun等公司及個(gè)人共同開(kāi)發(fā)而成[7]。</p><p><b> 數(shù)據(jù)庫(kù)MySQL</b></p><p> MySQL是由MySQL AB公司開(kāi)發(fā)、支持并發(fā)布的最流行的開(kāi)源SQL數(shù)據(jù)庫(kù)管理系統(tǒng),于2008年被Sun公司收購(gòu)。功能強(qiáng)大、靈活、應(yīng)用豐富,深受廣大軟件用戶喜愛(ài)[8]。</p><p&g
25、t;<b> 主要章節(jié)安排</b></p><p> 首先就課題研究的背景和意義做出說(shuō)明。第一章我們主要介紹本論文的研究背景和研究?jī)?nèi)容。第二章介紹要完成論文研究所需要的編程語(yǔ)言的一些基礎(chǔ)知識(shí)。第三章開(kāi)始研究網(wǎng)絡(luò)購(gòu)物系統(tǒng)的架構(gòu)。第四章介紹網(wǎng)絡(luò)購(gòu)物系統(tǒng)的數(shù)據(jù)庫(kù)的設(shè)計(jì)與建設(shè)。第五章介紹網(wǎng)絡(luò)購(gòu)物系統(tǒng)的各個(gè)功能模塊的代碼編寫(xiě)。最后在進(jìn)行本網(wǎng)絡(luò)購(gòu)物系統(tǒng)設(shè)計(jì)的交流與總結(jié)。</p><
26、;p> 網(wǎng)絡(luò)購(gòu)物系統(tǒng)基礎(chǔ)知識(shí)概述</p><p><b> JSP語(yǔ)言</b></p><p><b> JSP語(yǔ)言簡(jiǎn)介</b></p><p> JSP(Java Server Pages)是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn),也是J2EE技術(shù)體系的非常重
27、要組成部分。JSP技術(shù)用Java語(yǔ)言作為腳本語(yǔ)言,該方式為顯示動(dòng)態(tài)內(nèi)容頁(yè)面提供了一種簡(jiǎn)單而快捷的解決方法。JSP技術(shù)在傳統(tǒng)的網(wǎng)頁(yè)HTML文件中插入Java程序代碼和JSP標(biāo)記,就形成了JSP網(wǎng)頁(yè)。Java程序片段可以重新網(wǎng)頁(yè)定向、發(fā)送電子郵件、和操縱數(shù)據(jù)庫(kù)等,實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)站建立所需的功能[1]。JSP程序操作只在服務(wù)器端上執(zhí)行。在網(wǎng)絡(luò)上它傳送給客戶端用戶的僅是得到的結(jié)果而已,這樣就可以降低對(duì)客戶端瀏覽器的要求,即便客戶瀏覽器端不支持Jav
28、a,同樣可以訪問(wèn)JSP網(wǎng)頁(yè)。</p><p> JSP繼承了Java語(yǔ)言的面向?qū)ο?、安全、跨平臺(tái)、簡(jiǎn)單等特性,JSP應(yīng)用程序只需要編寫(xiě)一次就可以在多個(gè)系統(tǒng)平臺(tái)上運(yùn)行,不用對(duì)應(yīng)用程序代碼做任何改動(dòng)。而且JSP程序只在第一次請(qǐng)求時(shí)進(jìn)行編譯,從而大大提高了運(yùn)行的速度[2]。</p><p><b> JSP的優(yōu)點(diǎn)和缺點(diǎn)</b></p><p>&
29、lt;b> JSP的優(yōu)點(diǎn):</b></p><p> (1)成本低。JSP使用Java語(yǔ)言作為核心開(kāi)發(fā)工具,有眾多的免費(fèi)軟件可供開(kāi)發(fā)者使用。在JSP項(xiàng)目開(kāi)發(fā)過(guò)程中,從IDE到數(shù)據(jù)庫(kù),幾乎都能找到一套優(yōu)秀的開(kāi)發(fā)工具及現(xiàn)成的組件。</p><p> (2)適用平臺(tái)廣泛。不論是網(wǎng)站應(yīng)用開(kāi)發(fā)上的JSP,還是手機(jī)上的J2ME,或是嵌入在IC芯片內(nèi)的JINI,或是企業(yè)端的應(yīng)用程
30、序,其中都包含Java程序。JSP也同時(shí)繼承了Java的跨平臺(tái)性,可以實(shí)現(xiàn)一次編譯,多次執(zhí)行。</p><p> ?。?)組件可重用性。開(kāi)發(fā)人員能夠共享和交換執(zhí)行相似處理操作的組件,或使得這些組件為更多的使用者和客戶團(tuán)體使用。基于組件的方法加速了總體開(kāi)發(fā)過(guò)程,并且使得各種組織在他們現(xiàn)有的技術(shù)和優(yōu)化結(jié)果的開(kāi)發(fā)努力中得到平衡。</p><p> ?。?)應(yīng)用范圍廣。JSP被國(guó)際大公司所采用,作
31、為企業(yè)開(kāi)發(fā)工具,如IBM、Alcatel等數(shù)萬(wàn)家企業(yè)都在使用JSP。</p><p> ?。?)相關(guān)開(kāi)發(fā)工具多且整合性好:同Java一樣,JSP技術(shù)也為眾多的廠商所支持。這為JSP的開(kāi)發(fā)提供了很多優(yōu)秀的工具。另外,程序員可以使用大量現(xiàn)成的甚至開(kāi)源的中間組件,大大節(jié)省了開(kāi)發(fā)的時(shí)間和費(fèi)用。</p><p><b> JSP的缺點(diǎn):</b></p><
32、p> ?。?) 與ASP也一樣,Java的一些優(yōu)勢(shì)正是它致命的問(wèn)題所在。正是由于為了跨平臺(tái)的功能,為了極度的伸縮能力,所以極大的增加了產(chǎn)品的復(fù)雜性。</p><p> ?。?) Java的運(yùn)行速度是用class常駐內(nèi)存來(lái)完成的,所以它在一些情況下所使用的內(nèi)存比起用戶數(shù)量來(lái)說(shuō)確實(shí)是“最低性能價(jià)格比”了。</p><p> 總的來(lái)說(shuō),JSP技術(shù)的優(yōu)點(diǎn)大于它的缺點(diǎn),它的眾多優(yōu)點(diǎn)使得它成為
33、時(shí)下國(guó)際、國(guó)內(nèi)流行的Web應(yīng)用開(kāi)發(fā)技術(shù)[4]。</p><p> JSP的數(shù)據(jù)庫(kù)連接技術(shù)—JDBC</p><p> Java數(shù)據(jù)庫(kù)連接體系結(jié)構(gòu)是用于Java應(yīng)用程序連接數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)方法。JDBC對(duì)Java程序員而言是API,對(duì)實(shí)現(xiàn)與數(shù)據(jù)庫(kù)連接的服務(wù)提供商而言是接口模型。作為API,JDBC為程序開(kāi)發(fā)提供標(biāo)準(zhǔn)的接口,并為數(shù)據(jù)庫(kù)廠商及第三方中間件廠商實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的連接提供了標(biāo)準(zhǔn)方法[5]
34、。</p><p> JDBC使用已有的SQL標(biāo)準(zhǔn)并支持與其它數(shù)據(jù)庫(kù)連接標(biāo)準(zhǔn),如ODBC之間的橋接。JDBC實(shí)現(xiàn)了所有這些面向標(biāo)準(zhǔn)的目標(biāo)并且具有簡(jiǎn)單、嚴(yán)格類型定義且高性能實(shí)現(xiàn)的接口[6]。JDBC的工作方式如圖2-1。</p><p> 圖2-1 JDBC的工作方式</p><p> 第二節(jié) JavaBean簡(jiǎn)介</p><p>
35、 起初,JavaBean的目的是為了可以重復(fù)使用的軟件代碼打包標(biāo)準(zhǔn)。特別是用于幫廠家開(kāi)發(fā)在綜合開(kāi)發(fā)環(huán)境(IDE)下使用的java部件。這些包括Grid控件,用戶可以將該部件放到開(kāi)發(fā)環(huán)境中。從此以后,JavaBean就可以擴(kuò)展為一個(gè)java web 應(yīng)用的標(biāo)準(zhǔn)部件,并且Java Bean部件框架已經(jīng)擴(kuò)展為企業(yè)版的 Bean(EJB)。</p><p> JavaBean 和 Server Bean(通常稱為 En
36、terprise JavaBean (EJB))有一些基本相同的地方。它們都有一組特性,以執(zhí)行其組件或特定任務(wù)的對(duì)象。它們還有從當(dāng)前所駐留服務(wù)器上的容器獲得其它特性的能力。這使得Java bean 的行為根據(jù)所在環(huán)境和特定任務(wù)的不同而不同[9]。JavaBean在JSP中的運(yùn)行方式如圖2-2。</p><p> 第三節(jié) Servlet技術(shù)</p><p> Servlet是使用Jav
37、a Servlet應(yīng)用程序設(shè)計(jì)接口(API)及方法和相關(guān)類的 Java 程序。除了 Java Servlet API,Servlet還可以使用用以擴(kuò)展和添加到 API 的 Java 類軟件包。Servlet在啟用Java的應(yīng)用服務(wù)器上或Web服務(wù)器上運(yùn)行并擴(kuò)展了該服務(wù)器的能力。Java servlet對(duì)于Web服務(wù)器就好象Java applet對(duì)于Web瀏覽器。Servlet裝入Web服務(wù)器并且在Web服務(wù)器內(nèi)執(zhí)行,而applet裝入W
38、eb瀏覽器并且在Web瀏覽器內(nèi)執(zhí)行。Java Servlet API 定義了一個(gè)servlet 和Java使能的服務(wù)器之間的一個(gè)標(biāo)準(zhǔn)接口,這使得Servlets具有跨服務(wù)器平臺(tái)的特性。 </p><p> Servlet通過(guò)創(chuàng)建一個(gè)框架來(lái)擴(kuò)展服務(wù)器的能力,以提供在Web上進(jìn)行請(qǐng)求和響應(yīng)服務(wù)。當(dāng)客戶機(jī)發(fā)送請(qǐng)求到服務(wù)器時(shí),服務(wù)器可以將請(qǐng)求信息發(fā)給 Servlet,并讓Servlet建立起服務(wù)器并且返回給客
39、戶機(jī)響應(yīng)。當(dāng)啟動(dòng)客戶機(jī)或Web服務(wù)器第一次請(qǐng)求服務(wù)時(shí),自動(dòng)裝入Servlet。裝入之后,Servlet繼續(xù)運(yùn)行直到其它客戶機(jī)發(fā)出請(qǐng)求。Servlet有以下特點(diǎn):</p><p> ?。?)Servlet是由Java語(yǔ)言編寫(xiě),可以移植到多種不同的平臺(tái)上運(yùn)行,而不用重新編譯。</p><p> ?。?)與JSP相比,Servlet可以由服務(wù)器直接加載,在執(zhí)行速度和效率上明顯要高于JSP程序,另
40、外,Servlet有更好的處理能力。</p><p> (3)Servlet可以使用Java的所有核心API,其解決應(yīng)用問(wèn)題的能力非常強(qiáng)大。如處理用戶各種基本的HTTP請(qǐng)求、圖像、數(shù)據(jù)庫(kù)訪問(wèn)和訪問(wèn)權(quán)限控制等。</p><p> ?。?)Servlet是比較成熟的Web應(yīng)用程序規(guī)范,已經(jīng)形成了一系列的適應(yīng)各種業(yè)務(wù)處理的技術(shù)體系,如過(guò)濾器、安全驗(yàn)證、會(huì)話監(jiān)聽(tīng)等。</p><
41、;p> ?。?)Servlet可以與服務(wù)器緊密地集成,加強(qiáng)了與服務(wù)器或容器的溝通,可以解決一些特殊的問(wèn)題。雖然這樣可能對(duì)服務(wù)器帶來(lái)一定的風(fēng)險(xiǎn),但Servlet對(duì)此同樣具有很大的處理能力。</p><p> 第四節(jié) MVC設(shè)計(jì)模式簡(jiǎn)介</p><p> 本購(gòu)物系統(tǒng)采用的是當(dāng)前比較流行的以MVC框架軟件設(shè)計(jì)模式。MVC(Model View Controller)模式,即模型—視圖
42、—控制器模式,它把一個(gè)應(yīng)用的輸入、處理、輸出流程按照Model、View、Controller的方式分離,一個(gè)應(yīng)用被分成三層——模型層、視圖層、控制層。其思想是將整個(gè)程序代碼分成比較獨(dú)立而又能協(xié)同工作的3個(gè)部分,具體的功能概括如下:</p><p> 視圖(View):代表用戶交互界面,對(duì)于Web應(yīng)用來(lái)說(shuō),可以概括為HTML界面,但是也有可能為XML、XHTML或Applet。隨著應(yīng)用的不斷復(fù)雜和規(guī)模不斷擴(kuò)大,
43、界面的處理也變得越來(lái)越具有挑戰(zhàn)性,一個(gè)應(yīng)用可能有許多不同的視圖,MVC設(shè)計(jì)模式對(duì)于視圖處理限于視圖上數(shù)據(jù)的處理和采集,和用戶的請(qǐng)求,不包括視圖上的業(yè)務(wù)流程的處理過(guò)程。業(yè)務(wù)流程的處理交給模型(Model)處理。</p><p> 控制層(Controller):可以理解為從用戶接受請(qǐng)求,將模型與視圖匹配在一起,一起完成用戶的請(qǐng)求。劃分控制層的作用也很明顯,控制器就是一個(gè)分發(fā)器,選擇什么樣的視圖,選擇什么樣的模型,
44、可以完成怎樣的用戶請(qǐng)求??刂茖硬⒉蛔鋈魏蔚臄?shù)據(jù)處理。</p><p> 模型(Model):是業(yè)務(wù)狀態(tài)/流程的處理以及規(guī)則的制定。包含Web應(yīng)用程序的功能,它封裝了應(yīng)用程序的處理邏輯以及狀態(tài),從而實(shí)現(xiàn)對(duì)程序狀態(tài)的管理和客戶請(qǐng)求處理。MVC框架設(shè)計(jì)模式把應(yīng)用的模型按一定的規(guī)則抽取,抽取的層次很重要。</p><p><b> 設(shè)計(jì)思想</b></p>
45、<p> MVC英文即Model-View-Controller,即把一個(gè)應(yīng)用的輸入、處理、輸出流程按照Model、View、Controller的方式進(jìn)行分離,這樣一個(gè)應(yīng)用被分成三個(gè)層——模型層、視圖層、控制層。MVC組件類型的關(guān)系與功能結(jié)構(gòu)圖如圖2-3。</p><p> 圖2-3 MVC組件類型的關(guān)系與功能</p><p> MVC設(shè)計(jì)模式的優(yōu)缺點(diǎn)</p>
46、<p><b> MVC的優(yōu)點(diǎn):</b></p><p> ?。?)方便于開(kāi)發(fā)中的分工:在MVC模式中,用不同的模塊把系統(tǒng)分成不同部分,能更好地實(shí)現(xiàn)開(kāi)發(fā)中的分工。美工和網(wǎng)頁(yè)設(shè)計(jì)人員進(jìn)行視圖部分的開(kāi)發(fā),Java程序員進(jìn)行模型和控制器部分的開(kāi)發(fā)。</p><p> ?。?)有利于組件的重用:分層后更有利于組件的重用。例如:控制器部分可獨(dú)立成一份能用的組件,
47、視圖也可做成通用的界面。</p><p> (3)互不干涉,各司其職:在以MVC框架為基礎(chǔ)的模式中,三個(gè)部分各司其職,所以如果一部分的需求發(fā)生了變化,就只要更改相應(yīng)的代碼就可以,而不會(huì)影響到其他層中的代碼。</p><p><b> MVC的缺點(diǎn):</b></p><p> 任何事情有利就有弊,使用MVC模式帶來(lái)很多好處的同時(shí),也帶來(lái)了很
48、多的缺點(diǎn)。那就是使用MVC以后,系統(tǒng)變的更加復(fù)雜,對(duì)開(kāi)發(fā)人員的技術(shù)水平要求也更高了,同時(shí)視圖和模型的分離也使得調(diào)試代碼變的更困難一些。盡管有些小的缺點(diǎn),但是MVC仍然是構(gòu)筑Web應(yīng)用最好的架構(gòu)模式。</p><p> MVC在Java Web應(yīng)用中的實(shí)現(xiàn)</p><p> 由于以 java 為核心的一系列相關(guān)技術(shù),如 JSP,servlet,JDBC,JavaBean,EJB等,不僅具
49、備了*5.5一貫的平臺(tái)無(wú)關(guān)性、分布式處理能力強(qiáng)和安全等優(yōu)點(diǎn),而且在Web 應(yīng)用程序的開(kāi)發(fā)上已經(jīng)形成了標(biāo)準(zhǔn)的體系結(jié)構(gòu),移植性和兼容性很強(qiáng),因此,采用 Java 技術(shù)來(lái)實(shí)現(xiàn) MVC 模型在 Web 程序中的應(yīng)用是較為理想的選擇。</p><p> 根據(jù)Web應(yīng)用程序的實(shí)際開(kāi)發(fā)過(guò)程以及面向?qū)ο蟮腗VC 編程模型,在使用 Java 技術(shù)開(kāi)發(fā) Web 應(yīng)用程序時(shí)。基于以上編程模型,Web 應(yīng)用程序開(kāi)發(fā)主要被劃分為用戶界面
50、、流程控制和事務(wù)邏輯模塊(三個(gè)模塊的開(kāi)發(fā),并且分別選用了JSP、Servlet和JavaBean技術(shù)。同時(shí),由于采用JavaBean 技術(shù)封裝交換數(shù)據(jù)并將其存儲(chǔ)在不同會(huì)話中可以解決Web應(yīng)用程序存取多用戶數(shù)據(jù)的問(wèn)題,因此根據(jù) Web 應(yīng)用程序開(kāi)發(fā)的實(shí)際需求,設(shè)計(jì)了兩種JavaBean--DataBeans 和 view Beans,實(shí)現(xiàn)存放事務(wù)邏輯模塊處理的結(jié)果和存放需要顯示給用戶的數(shù)據(jù)的功能。如圖2-4所示為MVC在JavaWeb應(yīng)用
51、中的實(shí)現(xiàn)。</p><p> 圖2-4 MVC在JavaWeb應(yīng)用中的實(shí)現(xiàn)</p><p><b> 網(wǎng)絡(luò)購(gòu)物系統(tǒng)的架構(gòu)</b></p><p><b> 系統(tǒng)分析</b></p><p> 隨著社會(huì)的不斷的發(fā)展,網(wǎng)絡(luò)在人們的日常生活和工作中日益普及,使得人們?cè)诩揖湍苻k公,也可以在網(wǎng)上各種
52、交易。電子商務(wù)讓客戶不用去商場(chǎng)而在家上網(wǎng)就可以輕松購(gòu)物,本章將對(duì)電子商務(wù)系統(tǒng)的實(shí)現(xiàn)做深入的介紹,并給出一個(gè)比較完整的架構(gòu)過(guò)程。 首先要對(duì)網(wǎng)上商店所面對(duì)的顧客的需求進(jìn)行分析,這樣才能設(shè)計(jì)符合客戶要求的系統(tǒng),給用戶很好的體驗(yàn)。網(wǎng)上商店主要包括后臺(tái)和前臺(tái)管理兩部分。后臺(tái)管理主要是實(shí)現(xiàn)對(duì)系統(tǒng)的管理維護(hù)和對(duì)客戶所提供的服務(wù)進(jìn)行處理的功能,而前臺(tái)主要是對(duì)客戶顯示商品信息供其選擇購(gòu)買。</p><p><b>
53、 前臺(tái)設(shè)計(jì)</b></p><p> 系統(tǒng)前臺(tái)主要分以下幾部分組成:</p><p> 網(wǎng)站首頁(yè)—顯示系統(tǒng)首頁(yè)。用戶在此頁(yè)可以查看已分類的商品,注冊(cè)新的賬戶,登錄已有的賬戶等。</p><p> 注冊(cè)新用戶—需要用戶填寫(xiě)一些基本的信息,這樣才能購(gòu)買商品。</p><p> 登錄—用戶在未登錄時(shí),只能查看商品,如果需要將商品
54、加入購(gòu)物車,必須進(jìn)行登錄。</p><p> 購(gòu)物車--用戶點(diǎn)擊購(gòu)買的商品首先會(huì)被放入用戶的購(gòu)物車中,在用戶確認(rèn)所購(gòu)買的商品,并結(jié)算確定訂單后,才會(huì)將訂單信息提交到服務(wù)器進(jìn)行下一步的處理。訂單管理—顯示用戶購(gòu)買商品的一些信息,包括商品名,商品數(shù)量等。</p><p><b> ?。?)客戶端流程</b></p><p> 本系統(tǒng)中,用戶
55、進(jìn)入本網(wǎng)站后,可以進(jìn)行商品瀏覽和搜索商品,但只有本站會(huì)員才能夠在線購(gòu)物。因此當(dāng)游客選中一件商品要將其放入購(gòu)物車時(shí),就必須登錄本網(wǎng)站。如果有會(huì)員名和密碼則可直接登錄;如果沒(méi)有,則需要注冊(cè)新會(huì)員,然后登錄。當(dāng)成功登錄后,就可以查看和管理購(gòu)物車了,可以修改訂購(gòu)數(shù)量,還可以查看和管理用戶個(gè)人注冊(cè)信息。當(dāng)用戶確定購(gòu)買書(shū)的時(shí)候就可以提交購(gòu)物車結(jié)帳,這時(shí)提交后用戶還可以再繼續(xù)購(gòu)書(shū),而后臺(tái)服務(wù)器接受了客戶提交的訂單之后可以對(duì)訂單進(jìn)行處理。一趟完整的購(gòu)物
56、過(guò)程就結(jié)束了。下圖為系統(tǒng)前臺(tái)構(gòu)架圖如圖3-1:</p><p> 圖3-1 系統(tǒng)前臺(tái)架構(gòu)圖</p><p><b> 后臺(tái)架構(gòu)設(shè)計(jì)</b></p><p> 在服務(wù)器端作為系統(tǒng)的管理員在進(jìn)入管理員界面進(jìn)行登錄, 首先也必須進(jìn)行驗(yàn)證登錄,這時(shí)系統(tǒng)從管理員信息表中查找看有沒(méi)有用戶輸入的用戶,并驗(yàn)證密碼是否正確,如果不正確那么系統(tǒng)提示返回,重
57、新登錄。如果正確則進(jìn)入后面的工作流程。這時(shí)管理員可以進(jìn)行管理操作,比如商品管理操作(查看商品列表,查看商品詳細(xì)信息,添加商品,修改商品,刪除商品),訂單管理操作(查看訂單,確認(rèn)訂單)操作完之后管理員可以退出系統(tǒng)。</p><p> 后臺(tái)主要分為幾部分:</p><p> 登錄管理—系統(tǒng)管理員只有登錄成功后才能進(jìn)行其他操作。</p><p> 商品管理—對(duì)商品信
58、息可以進(jìn)行編輯,刪除。編輯完后展示的商品信息也會(huì)隨之更改。</p><p> 發(fā)布商品—添加新的商品。</p><p> 訂單管理—查看用戶購(gòu)買的訂單信息,但不能修改訂單。</p><p> 下圖為系統(tǒng)后臺(tái)架構(gòu)圖如圖3-2:</p><p> 圖3-2 系統(tǒng)后臺(tái)架構(gòu)</p><p> 網(wǎng)絡(luò)購(gòu)物系統(tǒng)數(shù)據(jù)庫(kù)的建設(shè)
59、</p><p><b> 數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p> 數(shù)據(jù)庫(kù)設(shè)計(jì)是指根據(jù)用戶的需求,在某一具體的數(shù)據(jù)庫(kù)管理系統(tǒng)上,設(shè)計(jì)數(shù)據(jù)庫(kù)的結(jié)構(gòu)和建立數(shù)據(jù)庫(kù)的過(guò)程。需要實(shí)現(xiàn)以下幾類數(shù)據(jù)庫(kù)的存放。</p><p> ?。?1)數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì):設(shè)計(jì)出能夠滿足用戶需求的各種實(shí)體(用戶,</p><p> 商品等),以及
60、它們之間的關(guān)系。</p><p> ?。?2)數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì):將數(shù)據(jù)庫(kù)概念結(jié)構(gòu)轉(zhuǎn)化為數(shù)據(jù)庫(kù)系統(tǒng)所支持的實(shí)際數(shù)據(jù)模型,形成數(shù)據(jù)庫(kù)邏輯模式,然后根據(jù)用戶處理的要求、安全性的考慮,在基本表的基礎(chǔ)上再建立必要的視圖(View)。</p><p> ( 3)物理設(shè)計(jì):根據(jù) DBMS 特點(diǎn)和處理的需要,進(jìn)行物理存儲(chǔ)安排,建立索引。</p><p> 數(shù)據(jù)庫(kù)分析:收集信息
61、,標(biāo)識(shí)對(duì)象,建立對(duì)象模型,標(biāo)識(shí)每個(gè)對(duì)象的信息類型,標(biāo)識(shí)對(duì)象間關(guān)系。數(shù)據(jù)庫(kù)是該系統(tǒng)的核心和基礎(chǔ),把該系統(tǒng)中大量的數(shù)據(jù)按一定的模型組織起來(lái),提供存儲(chǔ)、維護(hù)、檢索數(shù)據(jù)的功能,使該商務(wù)系統(tǒng)可以方便、及時(shí)、準(zhǔn)確地從數(shù)據(jù)庫(kù)中獲得所需的信息[10]。</p><p> 商品信息:存放商品的基本信息,包括商品名,庫(kù)存,商品的圖片等。</p><p> 訂單信息:客戶提交的訂單信息,主要包括與其他信息相
62、關(guān)聯(lián)的字段。</p><p> 用戶信息:存放顧客的基本信息,包括用戶名,密碼等。</p><p> 根據(jù)上面的數(shù)據(jù)庫(kù)信息需求,綜合本系統(tǒng)的特點(diǎn),在MySQL數(shù)據(jù)庫(kù)服務(wù)器中創(chuàng)建數(shù)據(jù)庫(kù)buy,其中的數(shù)據(jù)庫(kù)表及其存放數(shù)據(jù)的描述如圖表4-1:</p><p> 表4-1 數(shù)據(jù)庫(kù)包含的表以及表的功能</p><p><b> 數(shù)據(jù)信
63、息表</b></p><p> 商品信息表存放了商品的基本信息,它是一個(gè)基礎(chǔ)表,存放的數(shù)據(jù)多為獨(dú)立數(shù)據(jù),其他表如訂單表通過(guò)商品id同商品信息表關(guān)聯(lián),表示訂單中有某一商品。商品信息表包括商品編號(hào)id、商品名gname、商品價(jià)格price、當(dāng)前存供量num、商品圖片pic、商品分類category。其中商品編號(hào)為主索引、自動(dòng)增量。商品名gname、商品價(jià)格price和訂單的商品名、商品價(jià)格相對(duì)應(yīng)。pic
64、存放的商品的圖片名。goods表結(jié)構(gòu)如表4-2:</p><p> 表4-2 商品信息表</p><p> 商品信息表截圖如表4-3:</p><p> 表4-3 商品信息表</p><p><b> 用戶信息表</b></p><p> 客戶信息表主要用于存放客戶登錄的用戶名、密碼和聯(lián)
65、系方式等信息也是本系統(tǒng)中的另一個(gè)基本獨(dú)立的信息表。Customer表的字段包括客戶編號(hào)(id)、登錄用戶名(username)、密碼(password)、真實(shí)姓名(name)。其中客戶名不能為空。表的結(jié)構(gòu)如表4-4:</p><p> 表4-4 用戶信息表</p><p> 用戶信息表截圖如表4-5:</p><p> 圖4-5 用戶信息表</p&g
66、t;<p><b> 訂單信息表</b></p><p> 訂單信息表用于存放客戶提交的訂單信息,包括訂單編號(hào)id、商品編號(hào)goodid、商品數(shù)量num、訂單總價(jià)price等字段。其中,記錄號(hào)id為主索引、自動(dòng)增量,但它只是orders表的一個(gè)記錄標(biāo)識(shí)。orders表的結(jié)構(gòu)如表4-6:</p><p> 表4-6 訂單信息表</p>
67、<p> 訂單信息表截圖如表4-7:</p><p> 圖4.7 訂單信息表</p><p><b> 數(shù)據(jù)庫(kù)表之間的關(guān)系</b></p><p> 在本系統(tǒng)中,一些數(shù)據(jù)庫(kù)表中所存儲(chǔ)的字段內(nèi)容與其他表相關(guān)聯(lián)。這種關(guān)聯(lián)并非是表與表之間的關(guān)聯(lián),而是由應(yīng)用程序自行判斷的一種聯(lián)系。在存取過(guò)程中按字段的對(duì)應(yīng)關(guān)系從不同的數(shù)據(jù)表中按字
68、段之間的關(guān)聯(lián)檢索所需要的信息。各表字段之間的關(guān)系如圖4-1</p><p> 圖4-1 數(shù)據(jù)庫(kù)表間之間的對(duì)應(yīng)關(guān)系圖</p><p> 這種字段之間的關(guān)系,也就是在一個(gè)表的某一個(gè)字段中存儲(chǔ)有有與另一個(gè)某字段相對(duì)應(yīng)的值。例如:goods表的id和orders表中的goodid相對(duì)應(yīng),也就是如果訂單條目中有該商品存在,則在顯示訂單信息時(shí)。程序會(huì)根據(jù)goodid從goods表中獲取該商品的信息
69、并顯示給客戶。</p><p><b> 數(shù)據(jù)庫(kù)連接</b></p><p> 創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)動(dòng)態(tài)網(wǎng)站來(lái)說(shuō)是最為重要的部分。建立可交互的 JSP 應(yīng)用程序需要從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)或向數(shù)據(jù)庫(kù)中保存數(shù)據(jù), JDBC 抽象了數(shù)據(jù)庫(kù)尤其是關(guān)系數(shù)據(jù)庫(kù)進(jìn)行交互的過(guò)程。 Servlet 和 JSP 的聯(lián)合使用,提供了成功訪問(wèn)數(shù)據(jù)庫(kù)所需的表達(dá)邏輯和 JDBC,在很多方面, JSP
70、 和 JDBC 一起成為了流行的服務(wù)器端編程平臺(tái)。 JDBC 的總體結(jié)構(gòu) (圖 7 所示), 大致上被分為 3 個(gè)部分, 即 JDBCAPI, JDBC 驅(qū)動(dòng)程序管理器和 JDBC 驅(qū)動(dòng)程序。JDBC的原理圖如圖4-2:</p><p> 圖4-2 JDBC的原理圖</p><p> JDBC API 通過(guò) Java.sql 包來(lái)提供,它給出了獨(dú)立數(shù)據(jù)庫(kù)的接口類,在 JDBC API
71、上只設(shè)計(jì)為利用數(shù)據(jù)庫(kù)提供類的接口。而這個(gè)接口是由提供 JDBC 驅(qū)動(dòng)的軟 件來(lái)實(shí)際完成的。 JDBC 驅(qū)動(dòng)管理器的作用是在 JDBC 運(yùn)行結(jié)構(gòu)上提供最基礎(chǔ)的指引功能。即當(dāng) 一個(gè) JDBC API 程序進(jìn)行數(shù)庫(kù)調(diào)用時(shí),它會(huì)選擇一個(gè)正確的 JDBC 驅(qū)動(dòng)程序進(jìn)行連 接。 JDBC 驅(qū)動(dòng)的作用是當(dāng) JDBC API 制作的程序進(jìn)數(shù)據(jù)調(diào)用時(shí),實(shí)際連接數(shù)據(jù)庫(kù) 并進(jìn)行相應(yīng)的處理,JDBC 動(dòng)提供 JDBC API 的接口類[13]。創(chuàng)建數(shù)據(jù)庫(kù)連
72、接需要完成以下步驟:(1)加載 JDBC 驅(qū)動(dòng)程序。將驅(qū)動(dòng)程序類加載到應(yīng)用程序的 Java 虛擬機(jī)(JVM 中,它可以使用該驅(qū)動(dòng)程 序打開(kāi)連接。作為初始化工作部分,DriverManger 類將試圖加載 jdbc.drivers 系統(tǒng)屬性中的全部驅(qū)動(dòng)程序類[15]。這使得用戶可以使用它們的應(yīng)用程序來(lái)自定義 JDBC 驅(qū)動(dòng)程序。另外應(yīng)用程序也可顯示地在任何使用 Class.forName()方法的時(shí) 候加驅(qū)動(dòng)程序管理器來(lái)詢問(wèn)注冊(cè)的驅(qū)動(dòng)程序
73、是否已識(shí)別該 UR</p><p> 器創(chuàng)建connection對(duì)象[10]。例如:</p><p> Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 該語(yǔ)句將加載 SQL Server2000 為用戶提供的驅(qū)動(dòng)程序。與數(shù)據(jù)庫(kù)相連時(shí), DriverManager 將使用已加載的驅(qū)動(dòng)程序。(
74、2)建立連接 創(chuàng)建與數(shù)據(jù)源的連接可以使用 DriverManager 的 getConnection 方法。 getConnection 方法使用的格式有三種: getConnection(url); getConnection(url,info); getConnection(url,user,pwd); 本系統(tǒng)創(chuàng)</p><p> 建數(shù)據(jù)庫(kù)連接的代碼為:</p><p><b&
75、gt; try{ </b></p><p> Connection con = DriverManager.getConnection(url , username , password ) ; </p><p><b> }</b></p><p> catch(SQLException se){ </p
76、><p> System.out.println("數(shù)據(jù)庫(kù)連接失??!"); </p><p> se.printStackTrace() ; </p><p><b> }</b></p><p><b> 網(wǎng)絡(luò)購(gòu)物系統(tǒng)的實(shí)現(xiàn)</b></p><p
77、> MVC是一種開(kāi)發(fā)網(wǎng)站的設(shè)計(jì)模式,它強(qiáng)制性的將應(yīng)用程序的輸入、處理和輸出分開(kāi)。使用MVC的應(yīng)用程序被分為3個(gè)核心部件:模型(Model)、視圖(View)、控制器(Controller)。它們各司其職既分工明確又相互協(xié)作。MVC設(shè)計(jì)模式的典型流程為:首先Controller接收用戶的請(qǐng)求,并決定應(yīng)該調(diào)用哪個(gè)Model來(lái)進(jìn)行處理,然后Model用業(yè)務(wù)邏輯來(lái)處理用戶的請(qǐng)求并返回?cái)?shù)據(jù),最后Controller用相應(yīng)的View格式化
78、Model返回的數(shù)據(jù),并通過(guò)表示層呈現(xiàn)給用戶[12]。</p><p><b> 視圖程序</b></p><p> 圖層(View)代表用戶交互界面。對(duì)于Web應(yīng)用來(lái)說(shuō),可以概括為顯示界面。隨著應(yīng)用的復(fù)雜性和規(guī)模性,界面的處理也變得具有挑戰(zhàn)性。一個(gè)應(yīng)用可能有很多不同的視圖。MVC設(shè)計(jì)模式對(duì)于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請(qǐng)求,而不包括在視圖上
79、的業(yè)務(wù)流程的處理。業(yè)務(wù)流程的處理交予模型(Model)處理。視圖層的功能就是顯示模型的數(shù)據(jù),接受數(shù)據(jù)更新并請(qǐng)求更新視圖數(shù)據(jù),接受用戶輸入的數(shù)據(jù)并送給控制層。本系統(tǒng)的視圖層程序組成如圖表5-1</p><p> 表5-1 系統(tǒng)程序組成表</p><p> 下面介紹部分視圖層程序詳解:</p><p> 加入購(gòu)物車:Add.jsp顯示管理員發(fā)布商品的信息,管理員只
80、有在登錄成功的時(shí)候才能發(fā)布商品。用于構(gòu)建管理員提交信息的提交組件,根據(jù)請(qǐng)求參數(shù)的不同會(huì)動(dòng)態(tài)地構(gòu)建修改商品名、商品價(jià)格、商品庫(kù)存視圖。在發(fā)布商品時(shí),填寫(xiě)的信息會(huì)提交給AddServlet.java進(jìn)行處理,處理完的結(jié)果顯示在頁(yè)面中。點(diǎn)擊“加入購(gòu)物車”,提交的信息將會(huì)存儲(chǔ)在session中。主要代碼如下:</p><p> function checkform(){</p><p> if
81、(document.getElementById("J_gname").value==""){</p><p> alert("商品名稱不能為空!");</p><p> return false;</p><p><b> }</b></p><p>
82、 if(document.getElementById("J_pic").value==""){</p><p> alert("商品名稱不能為空!");</p><p> return false;</p><p><b> }</b></p><p>
83、 var p = document.getElementById("J_price").value;</p><p> var n = document.getElementById("J_num").value;</p><p> if(parseFloat(p)!=p||parseFloat(p)<=0){</p>
84、<p> alert("商品價(jià)格輸入有誤!必須為大于0的數(shù)字");</p><p> return false;</p><p><b> }</b></p><p> if(parseInt(n)!=n||parseInt(n)<=0){</p><p> alert(&q
85、uot;商品庫(kù)存輸入有誤!必須為大于0的整數(shù)");</p><p> return false;</p><p><b> }</b></p><p> return true;</p><p><b> }</b></p><p> 顯示購(gòu)物車內(nèi)容:ca
86、rt.jsp顯示購(gòu)物車內(nèi)容,用戶購(gòu)買商品后,信息存儲(chǔ)在session中,加入用加入購(gòu)物車:ToCartServlet.java獲取用戶提交的信息后進(jìn)行處理,處理完數(shù)據(jù)后顯示在購(gòu)物車頁(yè)面中。</p><p> 刪除商品信息:delete.jsp用于管理員處理刪除商品信息,只有在管理員登陸成功的情況下才能進(jìn)行此操作。</p><p> 編輯商品界面:edit.jsp用于編輯和更新商品的信息
87、,管理員在輸入信息無(wú)誤下可以更新商品信息,更新完后將會(huì)同步顯示在商品瀏覽頁(yè)面中。</p><p> 顯示管理員界面:manager.jsp顯示管理員管理頁(yè)面的內(nèi)容,可以發(fā)布商品,編輯商品,訂單管理等操作。</p><p> 顯示主頁(yè)面:index.jsp顯示主頁(yè)面信息,將程序運(yùn)行后,顯示該頁(yè)面,主要代碼如下:</p><p> //根據(jù)傳入的類目ID查詢商品信
88、息,如果沒(méi)傳默認(rèn)查所有</p><p> List<GoodsModel> goods = new ArrayList<GoodsModel>();</p><p> GoodsDAO dao = new GoodsDAO();</p><p> String category = "";</p>&l
89、t;p> if(request.getParameter("category")!=null){</p><p> category = request.getParameter("category");</p><p> cate = Integer.parseInt(category);</p><p><
90、;b> }</b></p><p> goods = dao.findGoodsByCategory(cate);</p><p><b> 控制處理程序</b></p><p> 控制層(Controller)可以理解為從用戶接收請(qǐng)求,將模型與視圖匹配在一起,共同完成用戶的請(qǐng)求。劃分控制層的作用也很明顯,它清楚地告訴
91、我們,它就是一個(gè)分發(fā)器,選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶請(qǐng)求??刂茖硬⒉蛔鋈魏蔚臄?shù)據(jù)處理。控制層的功能為,接受用戶的請(qǐng)求,根據(jù)用戶的請(qǐng)求調(diào)用某個(gè)模型進(jìn)行業(yè)務(wù)處理。將處理結(jié)果送給某個(gè)視圖進(jìn)行顯示。</p><p> 控制處理程序是MVC設(shè)計(jì)方式中的控制器部分,控制器根據(jù)配置文件中的配置內(nèi)容將客戶請(qǐng)求分發(fā)給這些程序處理。其中,幾乎每一個(gè)處理程序都對(duì)應(yīng)一個(gè)用于封裝客戶請(qǐng)求參數(shù)的Servlet。
92、每一個(gè)控制器組件程序都對(duì)應(yīng)一個(gè)動(dòng)態(tài)表單。</p><p> 控制器與對(duì)應(yīng)的Servlet如表5-2。</p><p> 表5-2 控制器與對(duì)應(yīng)的Servlet</p><p> 處理客戶注冊(cè)、修改信息的程序:Register.java主要用戶處理向數(shù)據(jù)庫(kù)寫(xiě)入經(jīng)過(guò)合法性驗(yàn)證的客戶注冊(cè)信息,修改客戶注冊(cè)信息和密碼,并可以根據(jù)參數(shù)值,分別處理不同的客戶請(qǐng)求。其重要部
93、分代碼如下:</p><p> String userName = request.getParameter("userName");</p><p> String realName = request.getParameter("realName");</p><p> String password = reque
94、st.getParameter("password");</p><p> //處理用戶注冊(cè)信息寫(xiě)入數(shù)據(jù)庫(kù)請(qǐng)求時(shí),判斷用戶名是否已存在</p><p> UserModel m = new UserModel();</p><p> m.setUserName(userName);</p><p> m.setPa
95、ssword(password);</p><p> m.setRealName(realName);</p><p> UserDAO dao = new UserDAO();</p><p> if(dao.createUser(m)){</p><p> response.sendRedirect("reg_succe
96、ss.jsp");</p><p><b> } else{</b></p><p> response.sendRedirect("reg.jsp?error=1");</p><p><b> }</b></p><p> 處理客戶購(gòu)物的程序:ToCartS
97、ervlet.java定義了處理客戶購(gòu)買商品,也就是將要購(gòu)買的商品信息暫時(shí)存入購(gòu)物車中的邏輯與方法。另外,還定義了一個(gè)可以判定客戶選購(gòu)商品是否已存在于購(gòu)物車中的方法。其重要部分代碼如下:</p><p> HttpSession session = request.getSession();</p><p> ArrayList carts = null;</p><
98、;p> if(session.getAttribute("carts")!=null){</p><p> carts = (ArrayList)session.getAttribute("carts");</p><p><b> }else{</b></p><p> carts = n
99、ew ArrayList();</p><p><b> }</b></p><p> String id = request.getParameter("id");</p><p> GoodsDAO dao = new GoodsDAO();</p><p> GoodsModel mod
100、el = dao.getGoodsById(Integer.parseInt(id));</p><p> AddServlet.java用于獲取發(fā)布商品的數(shù)據(jù),具體代碼如下:</p><p> GoodsModel gm = new GoodsModel();</p><p> gm.setGname(gname);</p><p>
101、 gm.setCategory(Integer.parseInt(category));</p><p> gm.setPic(pic);</p><p> gm.setPrice(Integer.parseInt(price));</p><p> gm.setNum(Integer.parseInt(num));</p><p>
102、 GoodsDAO dao = new GoodsDAO();</p><p> if(dao.createGoods(gm)){</p><p> response.sendRedirect("add.jsp?tips=0");</p><p><b> }else{</b></p><p>
103、; response.sendRedirect("add.jsp?tips=1");</p><p><b> }</b></p><p><b> 模型層程序</b></p><p> 模型層(Model)就是業(yè)務(wù)流程/狀態(tài)的處理以及業(yè)務(wù)規(guī)則的制定。業(yè)務(wù)流程的處理過(guò)程對(duì)其它層來(lái)說(shuō)是黑箱操作,模
104、型接受視圖請(qǐng)求的數(shù)據(jù),并返回最終的處理結(jié)果。它的作用是反映整個(gè)應(yīng)用程序的狀態(tài),對(duì)用戶請(qǐng)求進(jìn)行業(yè)務(wù)邏輯處理,響應(yīng)狀態(tài)查詢,通知視圖并更新業(yè)務(wù)狀態(tài)。模型類組建表如表5-3。</p><p> 表5-3 模型類組建表</p><p> 下面介紹本系統(tǒng)中幾個(gè)重要的JavaBean組件:</p><p> 1、數(shù)據(jù)庫(kù)連接訪問(wèn):DConnection.java定義了連接數(shù)
105、據(jù)源的方法,創(chuàng)建Statement、PrepareStatement對(duì)象的方法,以及對(duì)數(shù)據(jù)庫(kù)操作的兩種方法query()和update(),最后定義了關(guān)閉數(shù)據(jù)庫(kù)連接的方法DBClose()。其連接數(shù)據(jù)源部分代碼如下:</p><p><b> try {</b></p><p> Class.forName("com.mysql.jdbc.Driver&
106、quot;);</p><p> } catch (ClassNotFoundException ex) {</p><p> ex.printStackTrace();</p><p> System.exit(-1);</p><p><b> }</b></p><p> 2、獲取
107、商品具體信息的Bean:GoodsModel.java主要定義了在顯示商品具體信息時(shí)用到的獲取商品全部信息的方法。</p><p> 3、獲取訂單中具體信息的Bean:OrderModel.java主要定義了兩個(gè)獲取訂單中具體商品條目的方法,用于在顯示訂單中具體商品信息時(shí),獲取指定訂單的內(nèi)容。</p><p> 4、判斷注冊(cè)用戶名:UserModel.java定義了用于在客戶注冊(cè)時(shí),檢
108、驗(yàn)客戶提交的登錄用戶名是否已在users表中存在。</p><p> 以上這些只是本系統(tǒng)中幾個(gè)比較重要的模型類組件程序,主要用于完成一些封裝信息,并配合控制處理程序處理一些客戶請(qǐng)求。在處理請(qǐng)求結(jié)束后,作為響應(yīng)數(shù)據(jù)的載體暫存于session對(duì)象中傳遞給視圖程序顯示。另外,其中的一些處理方法將控制處理程序處理業(yè)務(wù)時(shí)被調(diào)用。</p><p><b> 網(wǎng)絡(luò)購(gòu)物系統(tǒng)的演示</b
109、></p><p> 網(wǎng)上購(gòu)物,就是通過(guò)互聯(lián)網(wǎng)檢索商品信息,并通過(guò)電子訂購(gòu)單發(fā)出購(gòu)物請(qǐng)求,然后填上私人支票帳號(hào)或信用卡的號(hào)碼,廠商通過(guò)郵購(gòu)的方式發(fā)貨,或是通過(guò)快遞公司送貨上門(mén)。</p><p><b> 用戶注冊(cè)與登錄</b></p><p> 注冊(cè)和登錄模塊的流程圖如圖5-1:</p><p> 圖5-1
110、 用戶注冊(cè)工作流程圖</p><p> 如果用戶還不是會(huì)員則提示用戶進(jìn)行注冊(cè),用戶提交信息之后,系統(tǒng)開(kāi)始判斷用戶的注冊(cè)信息是否有效。首先是用戶名是否為空,該處存在用戶名命名規(guī)則的問(wèn)題,后面問(wèn)題中會(huì)詳細(xì)解決,用戶輸入的兩次密碼是否一致。然后依次往后判斷用戶所填寫(xiě)的各項(xiàng)信息是否符合要求,直到所有信息均正確無(wú)誤,系統(tǒng)將該用戶注冊(cè)信息寫(xiě)入會(huì)員表即member并提示用戶注冊(cè)成功。用戶登陸后,就可以進(jìn)行有效的購(gòu)物了。&l
111、t;/p><p> 用戶登錄的工作流程如圖5-2:</p><p> 圖5-2 用戶登錄流程圖</p><p><b> 系統(tǒng)首頁(yè)</b></p><p> 系統(tǒng)首頁(yè)顯示商品的信息,在用戶沒(méi)有登錄的情況下只能瀏覽商品,而不能購(gòu)買商品,系統(tǒng)會(huì)彈出一個(gè)對(duì)話框,提示“請(qǐng)先登錄”。在用戶登陸后,會(huì)顯示系統(tǒng)歡迎界面。系統(tǒng)首頁(yè)
112、如圖5-3:</p><p> 圖5-3 系統(tǒng)首頁(yè)</p><p><b> 用戶登錄成功</b></p><p> 用戶將用戶名和密碼輸入,如果輸入錯(cuò)誤,將會(huì)彈出輸入用戶名或密碼錯(cuò)誤,登錄成功后系統(tǒng)顯示歡迎界面,并且會(huì)顯示我的購(gòu)物車和我的訂單。只有在登錄成功的情況下,才能將商品加入購(gòu)物車。首頁(yè)面如圖5-3所示。</p>
113、<p> 圖5-3 用戶登錄成功</p><p><b> 用戶注冊(cè)</b></p><p> 如果用戶沒(méi)有注冊(cè),可以點(diǎn)擊注冊(cè)進(jìn)入注冊(cè)頁(yè)面。進(jìn)行注冊(cè),填寫(xiě)基本信息即可完成注冊(cè)。用戶注冊(cè)頁(yè)面如圖5-4所示</p><p> 圖5-4 用戶注冊(cè)頁(yè)面</p><p><b> 查看購(gòu)物車信息&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)上購(gòu)物系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---網(wǎng)上購(gòu)物系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 軟件畢業(yè)設(shè)計(jì)--網(wǎng)上購(gòu)物系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)--網(wǎng)上購(gòu)物系統(tǒng)的研究與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)---網(wǎng)上購(gòu)物系統(tǒng)設(shè)計(jì)
- 網(wǎng)上購(gòu)物系統(tǒng)畢業(yè)設(shè)計(jì)
- 網(wǎng)上購(gòu)物系統(tǒng)-畢業(yè)設(shè)計(jì)
- 網(wǎng)上購(gòu)物系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----網(wǎng)上購(gòu)物系統(tǒng)
- 網(wǎng)上購(gòu)物系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---網(wǎng)上購(gòu)物系統(tǒng)設(shè)計(jì)
- 網(wǎng)上購(gòu)物系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----jsp網(wǎng)上購(gòu)物系統(tǒng)后臺(tái)分析與實(shí)現(xiàn)
- 基于ssi框架的網(wǎng)上購(gòu)物系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---jsp網(wǎng)上購(gòu)物系統(tǒng)設(shè)計(jì)
- 網(wǎng)上購(gòu)物系統(tǒng)畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)論文---- 網(wǎng)上購(gòu)物系統(tǒng)
- 網(wǎng)上購(gòu)物系統(tǒng)畢業(yè)設(shè)計(jì) 8
- 網(wǎng)上購(gòu)物系統(tǒng)畢業(yè)設(shè)計(jì) (2)
- 網(wǎng)上購(gòu)物系統(tǒng)畢業(yè)設(shè)計(jì) (2)
評(píng)論
0/150
提交評(píng)論