網(wǎng)上書店計劃書(JAVA+WEB)_第1頁
網(wǎng)上書店計劃書(JAVA+WEB)_第2頁
網(wǎng)上書店計劃書(JAVA+WEB)_第3頁
網(wǎng)上書店計劃書(JAVA+WEB)_第4頁
網(wǎng)上書店計劃書(JAVA+WEB)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第15章 網(wǎng)上書店實例在本章中我們使用JSP和Java Bean來構(gòu)建一個網(wǎng)上書店。本章介紹的例子可以分成兩大部分,第一部分是普通程序,用于客戶在網(wǎng)上選購圖書,第二部分是管理程序,用于在服務(wù)器端處理客戶的定單??蛻舳顺绦蛴梢韵聨讉€部分構(gòu)成:default.jsp:會員登錄界面(首頁);checklogon.jsp:檢測登錄代碼和密碼是否一致,根據(jù)由JavaBean返回的結(jié)果顯示不同的信息。BuyeerBeean:會員的的合法性性檢驗所所用的BBeann;bookklisst.jjsp:給登錄錄會員顯顯示當(dāng)前前書店中中可供選選擇的圖圖書;addccartt.jssp:將將所選的的圖書加加入購物物

2、車;shopppinngcaart.jspp:查看看購物車車的內(nèi)容容;本例的數(shù)數(shù)據(jù)庫采采用Acccesss(.MDBB數(shù)據(jù)庫庫),對對數(shù)據(jù)庫庫的訪問問采用便便于理解解的JDDBC-ODBBC方式式,在使使用本例例前先在在本地數(shù)數(shù)據(jù)庫建建立一個個ODBBC數(shù)據(jù)據(jù)源:bbookkstoore。設(shè)置步驟驟如下:(1)在在開始-設(shè)置置-控控制面版版(Wiin988、NTT4.00)中選選取“數(shù)據(jù)源源(ODDBC)”;在WWin 20000 PProffesssionnal和和Serrverr中分別別位于“開始-設(shè)置置-控控制面版版-管管理工具具”和“開始-程序序-管管理工具具”下。(2)啟啟動“數(shù)據(jù)源

3、源(ODDBC)”配置程程序,界界面如圖圖15-1所示示。圖15-1 ODBBC數(shù)據(jù)據(jù)源管理理界面(3)在在圖155-1中中“系統(tǒng)DDSN”選項下下單擊“添加”按鈕,來添加加一個系系統(tǒng)的數(shù)數(shù)據(jù)源(DSNN),則則出現(xiàn)如如圖155-2所所示數(shù)據(jù)據(jù)源驅(qū)動動程序選選擇界面面:圖15-2 數(shù)據(jù)源源驅(qū)動程程序選擇擇界面(4)在在圖155-2中中選擇“Miccrossoftt Acccesss DDrivver (*.mdbb)”單擊“完成”加載AAcceess數(shù)數(shù)據(jù)庫的的驅(qū)動,則出現(xiàn)現(xiàn)如圖115-33所示數(shù)數(shù)據(jù)庫OODBCC安裝界界面:圖15-3 數(shù)據(jù)庫庫ODBBC安裝裝界面(5)在在圖155-3中中單

4、擊“選擇(S)”按鈕,啟動一一個類似似資源管管理器的的界面來來選擇數(shù)數(shù)據(jù)庫,如圖115-44所示,在圖115-44所示的的界面中中選擇bbookkstoore.mdbb。圖15-4 數(shù)據(jù)庫庫選擇界界面15.11 會會員登錄錄做一個網(wǎng)網(wǎng)上書店店,在顧顧客開始始購書之之前,必必須要記記錄用戶戶的一些些信息以以便用戶戶在不同同的分類類、不同同的頁面面購書時時,最后后能夠去去收款臺臺統(tǒng)一結(jié)結(jié)帳,而而且網(wǎng)上上書店同同時有許許多人在在選購圖圖書,也也要求對對不同的的顧客進(jìn)進(jìn)行區(qū)分分,我們們可以要要求顧客客在購書書之前進(jìn)進(jìn)行注冊冊成為會會員,以以后只用用會員代代碼和密密碼即可可登錄。為了便于于說明現(xiàn)現(xiàn)在的電

5、電子商務(wù)務(wù)網(wǎng)站,由JSSP做頁頁面表現(xiàn)現(xiàn),由JJavaa Beaan做應(yīng)應(yīng)用邏輯輯的結(jié)構(gòu)構(gòu),在本本例中將將會員登登錄程序序分成兩兩大部分分:一、Javva BBeann用于對對數(shù)據(jù)庫庫的操作作,驗證證用戶名名和密碼碼是否正正確;二二、JSSP頁面面部分,用于供供用戶會會員代碼碼和密碼碼以及顯顯示驗證證結(jié)果。15.11.1會員登登錄Jaava Beaan我們網(wǎng)上上書店中中的會員員信息的的庫結(jié)構(gòu)構(gòu)如圖115-55所示:圖15-5 會員信信息庫其中meembeerIDD 是主主鍵,用用于區(qū)分分不同的的會員,新會員員注冊時時只能使使用沒有有被使用用的用戶戶代碼。在驗證時時我們只只要使用用驗證用用戶的m

6、membberIID和其其pwdd是否一一致即可可判斷該該用戶是是否合法法,如果果合法則則其登錄錄次數(shù)加加1。下面是用用戶驗證證部分的的Javva BBeann的代碼碼清單155-1 BuuyerrBeaan.JJavaa/* *BuyyerBBeann.Jaava 11.100.20001 *Coppyriightt 20000, 20001 bby ccuugg lllp.*本Beean中中有兩個個sett方法和和兩個gget 方法:*settMemmberrID() 對BuuyerrBeaan中的的memmberrID屬屬性進(jìn)行行賦值;*settPwdd()對BuyyerBBeann中的

7、 pwdd 屬性性進(jìn)行賦賦值; *gettLoggonttimees() 取該該會員登登錄的次次數(shù)*gettMennberrNamme()獲得該該會員的的真實姓姓名,用用于顯示示歡迎信信息。*maain()方法法用于將將BEAAN作為為一個 Apppliccatiion進(jìn)進(jìn)行測試試時使用用,正式式發(fā)布時時可以刪刪除。 */packkagee cuuug;impoort Javva.ssql.*;publlic claass BuyyerBBeann privvatee Sttrinng mmembberIID = nuull; /會員員IDpriivatte SStriing memmberr

8、Namme = nuull; /會會員姓名名priivatte SStriing pwdd = nulll;/密密碼priivatte iint loggonttimees = -11;/登登錄的次次數(shù)priivatte sstattic Strringg sttrDBBDriiverr = “suun.jjdbcc.oddbc.JdbbcOddbcDDrivver”; /JJDBCC驅(qū)動priivatte sstattic Strringg sttrDBBUrll = “jddbc:odbbc:bbookkstoore”; /數(shù)據(jù)源源 ,priivatte CConnnecttionn co

9、onn =nuull; /連接priivatte RResuultSSet rs = nnulll;/結(jié)結(jié)果集pubblicc BuuyerrBeaan ()/加載JJDBCC-ODDBC驅(qū)驅(qū)動trry CClasss.fforNNamee(sttrDBBDriiverr );/捕獲異異常caatchh(Jaava.lanng.CClasssNootFoounddExccepttionn e)SSysttem.errr.prrinttln(“BuuyerrBeaan():” + ee.geetMeessaage();/獲獲得登錄錄次數(shù),登錄的的會員的的名字也也在該方方法調(diào)用用時獲得得pubbl

10、icc innt ggetLLogoontiimess()Sttrinng sstrSSql = nnulll;trrycconnn = DriiverrMannageer.ggetCConnnecttionn(sttrDBBUrll);SStattemeent stmmt = coonn.creeateeStaatemmentt();strSSql = “Sellectt loogonnTimmes,memmberrnamme ffromm buuyerrInffo wwherre mmembberIID = ” + membberIID + “ annd ppwd =” + pwdd +

11、“”;rrs = sttmt.exeecutteQuueryy(sttrSqql);wwhille (rs.nexxt()/登錄錄的次數(shù)數(shù)logoontiimess = rs.gettIntt(“l(fā)logoonTiimess”);/會會員姓名名 meembeerNaame = rrs.ggetSStriing(“meembeernaame”); rrs.cclosse();/如果果是合法法會員則則將其登登錄次數(shù)數(shù)加1iif (loggonttimees != -1 ) strrSqll = “Uppdatte bbuyeerInnfo sett logoonTiimess = loggonTT

12、imees +1 wwherre mmembberIID = ” + memmberrID + “”;stmmt.eexeccuteeUpddatee(sttrSqql);sstmtt.cllosee();cconnn.cllosee();/捕獲異異常caatchh(SQQLExxcepptioon ee)SSysttem.errr.prrinttln(“BuuyerrBeaan.ggetLLogoontiimess():” + e.gettMesssagge();reeturrn llogoontiimess ;/設(shè)置置memmberrID屬屬性;pubblicc vvoidd seetMe

13、embeerIDD(Sttrinng IID)thhis.memmberrID = IID;/設(shè)設(shè)置pwwd 屬屬性pubblicc vooid seetPwwd(SStriing passswoord)thhis.pwdd = passswoord;/獲獲得該會會員的真真實姓名名,必須須在取該該會員登登錄的次次數(shù)之后后才能被被賦予正正確的值值pubblicc Sttrinng ggetMMembberNNamee()reeturrn mmembberNNamee;/測試試Beaan中的的各個方方法是否否能夠正正常工作作pubblicc sstattic voiid mmainn(Sttrin

14、ng aargss)BuuyerrBeaan bbuyeer = neew BBuyeerBeean();buuyerr.seetMeembeerIDD(“aabcdd”);buuyerr.seetPwwd(“12334”);Syysteem.oout.priintlln(bbuyeer.ggetLLogoontiimess();Syysteem.oout.priintlln(bbuyeer.ggetMMembberNNamee();在BuyyerBBeann中用了了pacckagge cuuug; 在發(fā)布布到WEEB SSERVVER時時,可以以用JAAR(JJDK中中帶的打打包工具具)把編

15、編譯后的的BuyyerBBeann.cllasss 打包包成JAAR文件件在服務(wù)務(wù)器的環(huán)環(huán)境變量量claassppathh中給予予指定,或者在在服務(wù)器器claassppathh環(huán)境變變量指定定的目錄錄下建一一個cuuug文文件夾,把BuuyerrBeaan.cclasss放到到cuuug目錄錄下。15.11.2會會員登錄錄htmm與JSSP會員登錄錄要由兩兩個部分分來完成成,第一一個頁面面用于會會員輸入入其IDD和密碼碼,當(dāng)然然首頁還還可以加加一些廣廣告等的的其它信信息,在在本例中中略過。清單155-2 deefauult.htmm! Coopyrrighht 19999 cuuug,lliu

16、.CUUUG OON LLINEE BOOOK STOORE MMEMBBER LOGGINCUUUG 網(wǎng)網(wǎng)上書店店會員登登錄頁&nbssp;&nbssp;請輸入會會員代號號和密碼碼: 會員代碼碼: 密&nbbsp;&nbbsp;&nbbsp;&nbbsp;碼: 在本例中中提供了了一個文文本框供供用戶輸輸入會員員代號和和登錄密密碼,其其運行結(jié)結(jié)果如圖圖15-6所示示,當(dāng)會會員輸入入其代碼碼和密碼碼后調(diào)用用cheeckllogoon.jjsp 來驗證證該網(wǎng)絡(luò)絡(luò)用戶是是否是合合法會員員。圖15-6 會員登登錄頁在cheeckllogoon.jjsp 中接收收從deefauult.htmm中由用用戶

17、所填填的會員員代碼和和密碼,把它傳傳給BuuyerrBeaan,由由BuyyerBBeann判斷該該用戶的的會員代代碼和密密碼的正正確性,若正確確顯示歡歡迎信息息;若不不正確,則提供供一個重重新登錄錄的鏈接接。Checckloogonn.jssp的源源代碼如如下:清單155-3 chheckkloggon.jsppCUUGG ONN LIINE BOOOK SSTORRE MEEMBEER LLOGIINCUUUG 網(wǎng)網(wǎng)上書店店 0)sesssionn.puutVaaluee(mmembberIID,memmberrID);%歡迎迎你第次來到到CUUUG網(wǎng)上上書店進(jìn)進(jìn)入書店店對不不起,你你的用

18、戶戶名和密密碼不一一致重重新登錄錄登錄正確確時的結(jié)結(jié)果如圖圖15-7所示示,錯誤誤時的結(jié)結(jié)果如圖圖15-8所示示。圖15-7 用戶登登錄正確確(會員員abccd的真真實姓名名是cuuug0001)圖15-8 用戶登登錄錯誤誤15.22選書會員登錄錄之后,合法的的用戶將將可以看看到本書書店中可可供選擇擇的圖書書,并且且將他感感興趣的的書放入入“購物車車”,在去去“收銀臺臺”結(jié)帳之之前,該該用戶可可以放棄棄購買其其購物車車中的任任何一本本書。在在此處我我們用BBookkBeaan來獲獲取圖書書的信息息,在BBookklisst.jjsp中中顯示這這些書。在會員選選書部分分,我們們?nèi)杂肑Javaa

19、Beean來來操作數(shù)數(shù)據(jù)庫,用jssp來做做頁面表表現(xiàn)。15.22.1選選書Jaava Beaan圖書信息息的表結(jié)結(jié)構(gòu)如圖圖15-9所示示,為了了便于說說明,在在本例中中priice也也設(shè)置成成了Sttrinng型,在實際際應(yīng)用中中應(yīng)該設(shè)設(shè)置成貨貨幣或浮浮點型:圖15-9 圖書信信息的表表結(jié)構(gòu)其中,bbookkISBBN是主主鍵,區(qū)區(qū)分不同同的圖書書。Jaava Beaan要根根據(jù)不同同的圖書書的boookIISBNN來獲得得其相應(yīng)應(yīng)的書名名、作者者、出版版社、價價格、簡簡介等信信息。同同時Jaava Beaan還要要有列出出書店中中所有圖圖書的信信息的功功能。清單155-4 BoookBBe

20、ann.JJavaa/* *BuyyerBBeann.Jaava 11.100.20001 *Coppyriightt 20000, 20001 bby ccuugg ,lllp.*本Beean中中的各個個方法的的功能介介紹如下下:*settBoookISSBN():設(shè)設(shè)置圖書書的編號號,同時時根據(jù)編編號更新新相應(yīng)的的書名、作者、出版社社、價格格*和簡簡介*gettBoookLiist() 取得得書庫中中全部書書的書名名、出版版社、價價格、作作者等信信息;*gettBoookISSBN() 取得得當(dāng)前圖圖書的編編號 ; *geetBoookNNamee()取得當(dāng)當(dāng)前圖書書的書名名;*geetB

21、oookAAuthhor()取得當(dāng)當(dāng)前圖書書的作者者;*geetPuubliisheer()取得當(dāng)當(dāng)前圖書書的出版版社信息息;*geetPrricee()取得當(dāng)當(dāng)前圖書書的價格格;* geetInntrooducce()取得當(dāng)當(dāng)前圖書書的簡介介信息。*maain()方法法用于將將BEAAN作為為一個 Apppliccatiion進(jìn)進(jìn)行測試試時使用用,正式式發(fā)布時時可以刪刪除。 */packkagee cuuug;impoort Javva.ssql.*;publlic claass BoookBeean priivatte SStriing boookISSBN = nnulll;/圖圖書編號

22、號priivatte SStriing boookNaame = nnulll;/書書名priivatte SStriing boookAuuthoor = nuull;/作作者priivatte SStriing pubblissherr = nulll;/出出版社priivatte SStriing inttrodducee = nulll;/簡簡介priivatte SStriing priice = nnulll;/價價格priivatte sstattic Strringg sttrDBBDriiverr = suun.jjdbcc.oddbc.JdbbcOddbcDDrivver;

23、priivatte sstattic Strringg sttrDBBUrll = jddbc:odbbc:bbookkstoore;priivatte CConnnecttionn coonn =nuull;priivatte RResuultSSet rs = nnulll;pubblicc BoookBBeann()/加載驅(qū)驅(qū)動trry CClasss.fforNNamee(sttrDBBDriiverr );caatchh(Jaava.lanng.CClasssNootFoounddExccepttionn e)SSysttem.errr.prrinttln(BoookBBeann (

24、): + ee.geetMeessaage();/取當(dāng)當(dāng)前書庫庫中全部部圖書信信息pubblicc ReesulltSeet ggetBBookkLisst()Sttrinng sstrSSql = nnulll;trry/建立立與數(shù)據(jù)據(jù)庫的連連接cconnn = DriiverrMannageer.ggetCConnnecttionn(sttrDBBUrll);SStattemeent stmmt = coonn.creeateeStaatemmentt();sstrSSql = Sellectt boookIISBNN,boookNNamee,boookAAuthhor,pubblissh

25、err,prricee frrom boookInnfo ;rrs = sttmt.exeecutteQuueryy(sttrSqql);/捕獲異異常caatchh(SQQLExxcepptioon ee)SSysttem.errr.prrinttln(BoookBBeann.geetBoookLListt(): + e.gettMesssagge();reeturrn rrs ;/根根據(jù)圖書書的編號號給圖書書的其他他信息賦賦值priivatte voiid ggetBBookkInffo(SStriing ISBBN)Sttrinng sstrSSql = nnulll;boookNName

26、e = nulll;boookAAuthhor = nnulll;puubliisheer = nuull;inntrooducce = nuull;prricee = nulll;trry/建立立和數(shù)據(jù)據(jù)庫的連連接cconnn = DriiverrMannageer.ggetCConnnecttionn(sttrDBBUrll);SStattemeent stmmt = coonn.creeateeStaatemmentt();sstrSSql = Sellectt * froom bbookkInffo wwherre bbookkISBBN = + ISBBN + ;rrs = sttm

27、t.exeecutteQuueryy(sttrSqql);wwhille (rs.nexxt()boookNaame = rrs.ggetSStriing(boookNNamee);boookAuuthoor = rss.geetSttrinng(boookAuuthoor);pubblissherr = rs.gettStrringg(ppubllishher);inttrodducee = rs.gettStrringg(iintrroduuce);priice = rrs.ggetSStriing(prricee);/捕獲異異常caatchh(SQQLExxcepptioon ee)SS

28、ysttem.errr.prrinttln(BoookBBeann.geetBoookLListt(): + e.gettMesssagge();/給給圖書的的編號賦賦值,同同時調(diào)用用函數(shù)給給圖書的的其他信信息賦值值pubblicc vvoidd seetBoookIISBNN (SStriing ISBBN)thhis.boookISSBN = IISBNN;geetBoookIInfoo(boookIISBNN);/取取圖書編編號pubblicc SStriing gettBoookISSBN ()reeturrn bbookkISBBN ;/取取書名pubblicc Sttrinng g

29、getBBookkNamme()reeturrn bbookkNamme ;/取取作者信信息pubblicc Sttrinng ggetBBookkAutthorr()reeturrn bbookkAutthorr;/取取出版社社信息pubblicc Sttrinng ggetPPubllishher()reeturrn ppubllishher;/取取圖書簡簡介pubblicc Sttrinng ggetIIntrroduuce()reeturrn iintrroduuce ;/取取圖書價價格pubblicc Sttrinng ggetPPricce()reeturrn ppricce;/將

30、BBeann作為一一個apppliicattionn進(jìn)行測測試用pubblicc sstattic voiid mmainn(Sttrinng aargss)BoookBBeann boook = nnew BoookBeean ();boook.settBoookISSBN(7-50553-553166-4);Syysteem.oout.priintlln(bbookk.geetBoookNNamee();Syysteem.oout.priintlln(bbookk.geetBoookAAuthhor();Syysteem.oout.priintlln(bbookk.geetPuubliis

31、heer();Syysteem.oout.priintlln(bbookk.geetInntrooducce();Syysteem.oout.priintlln(bbookk.geetPrricee();trryRResuultSSet tmppRS = bbookk.geetBoookLListt();wwhille (tmppRS.nexxt()Sysstemm.ouut.pprinntlnn(tmmpRSS.geetSttrinng(boooknaame);ttmpRRS.cclosse();/捕獲異異常catcch(EExceeptiion e)SSysttem.errr.prrint

32、tln(maain() + ee.geetMeessaage();15.22.2選選書JSSP會員正確確登錄之之后,即即可進(jìn)入入書店進(jìn)進(jìn)行選書書,我們們已經(jīng)在在cheeckllogoon.jjsp中中將會員員的代碼碼(meembeerIDD)放入入系統(tǒng)的的sesssioon中,為了保保證用戶戶只能從從主頁面面登錄進(jìn)進(jìn)入書店店,我們們在給會會員顯示示可供選選擇的圖圖書之前前,先檢檢查seessiion中中是否有有memmberrID的的合法值值,如果果沒有則則提示用用戶先去去登錄。清單155-5 boookllistt.jsspCUUGG Boook Stoore On Linne -memmb

33、err:CUUUG 網(wǎng)網(wǎng)上書店店 請先先登錄,然后再再選書 登登錄 書書名 作作者 出出版社 定定價 &nnbspp; aahreef=boookinnfo.jspp?issbn= aa hrref=Jaavasscriipt:opeenwiin()加入購購物車 查查看購物物車 &nbssp;已經(jīng)登錄錄過的會會員和沒沒有登錄錄過的會會員進(jìn)入入該頁面面是的結(jié)結(jié)構(gòu)分別別如圖115-110和圖圖15-11所所示:正正確登錄錄的會員員的會員員代碼在在瀏覽器器的標(biāo)題題欄顯示示為:mmembber:“會員代代碼”。圖15-10 會員員abccd正確確登錄圖15-11 會員員未登錄錄直接來來選書在本例中中利

34、用JJavaaScrriptt語句定定義了一一個函數(shù)數(shù)來將所所調(diào)用另另外的一一個jssp來處處理把書書加入購購物車的的操作:該函數(shù)用用于打開開adddcarrt.jjsp并并切將圖圖書編號號作為參參數(shù)傳給給adddcarrt.jjsp。addccartt.jssp利用用Coookiee來保存存所選購購的圖書書信息,Coookiee相當(dāng)于于一個購購物車。為了與與其他的的Coookiee變量區(qū)區(qū)分,每每個寫入入Coookiee的圖書書編碼前前面都加加上“ISBBN”作為標(biāo)標(biāo)志,向向購物車車中加入入圖書的的代碼如如下:清單155-6 adddcaart.jsppfuncctioon TTimeer(

35、)seetTiimeoout(seelf.cloose(),100000)購物車車CUUUG 網(wǎng)上訂訂書系統(tǒng)統(tǒng)圖圖書已經(jīng)經(jīng)成功放放入購物物車!查看購物物車SHHOPPPINGG CAART提交定單單 ORRDERR (此窗口口將為您您在100秒內(nèi)自自動關(guān)閉閉,您的的商品已已經(jīng)安全全地保存存在購物物車中。)在adddcarrt.jjsp中中利用JJavaaScrriptt定義了了一個函函數(shù)Tiimerr(),由它來來控制該該窗口的的顯示時時間()。繼續(xù)購購買部分分也是由由JavvaSccrippt定義義的函數(shù)數(shù)來控制制關(guān)閉本本窗口。其運行行結(jié)果如如圖155-122所示。圖15-12 加入入購物車

36、車無論從圖圖15-12還還是圖115-113所示示的界面面中,都都提供了了一個查查看購物物車的超超鏈接,查看購購物車的的程序如如下所示示,它從從Coookiee中取出出圖書的的編號,并將它它傳給BBookkBeaan,由由BoookBeean來來獲得圖圖書的詳詳細(xì)資料料。查看看購物車車的JSSP代碼碼shooppiingccartt.jssp代碼碼如下:清單155-7 shhopppinggcarrt.jjsp查看購物物車 -memmberr:CUUUG 網(wǎng)網(wǎng)上書店店購物車車 ISBBN 書名名 單價 數(shù)量 %/*讀取取購物車車信息*/Cookkie ccookkiess=reequeest.

37、gettCoookiees();for (innt ii=0;i A hreef=boookinnfo.jspp?issbn= IINPUUT ssizee=55 ttypee=ttextt mmaxllenggth=5 vaaluee= namee=nnum reeadoonlyy A hhreff=ddelbbookk.jssp?iisbnn=刪除 返返回首頁頁 清空購購物車 修改數(shù)數(shù)量 填填寫提提交訂單單 查看購購物車的的結(jié)果如如圖155-133所示:圖15-13 查看看購物車車內(nèi)容在查看購購物車內(nèi)內(nèi)容時提提供了一一個刪除除圖書的的功能,其目的的是從購購物車刪刪除不想想購買的的圖書,其源

38、代代碼如下下:清單155-8 deelboook.jspp刪除圖書書 本例中利利用jssp:fforwwardd動作在在刪除圖圖書動作作完成之之后,將將頁面繼繼續(xù)轉(zhuǎn)向向購物車車頁面。即圖115-114只顯顯示一瞬瞬間,瀏瀏覽器的的內(nèi)容由由成為購購物車內(nèi)內(nèi)容的頁頁面。圖15-14 刪除除圖書的的頁面如果一個個會員選選了很多多書,逐逐個刪除除比較麻麻煩。為為了方便便會員放放棄選購購的所有有圖書,重新開開始選書書,本例例提供了了清空購購物車程程序(eempttycaart.jspp),用用于清空空購物車車,其原原理與刪刪除圖書書相同,只是把把全部的的Coookiee中圖書書的有關(guān)關(guān)的內(nèi)容容都清空空了

39、。其其代碼如如下:清單155-9 emmptyycarrt.jjsp%/*清空空Coookiee(購物物車)信息*/Cookkie ccookkiess=reequeest.gettCoookiees();for (innt ii=0;i清空購物物車 圖15-15 清空空購物車車的頁面面從圖書選選擇頁面面和購物物車頁面面,點圖圖書名稱稱,都可可以查看看圖書的的詳細(xì)信信息,查查看圖書書詳細(xì)信信息的jjsp仍仍用BoookBBeann來獲取取圖書的的詳細(xì)信信息,只只是在該該頁中可可以看到到更加詳詳細(xì)的信信息:清單155-100 bbookkinffo.jjsp圖書信息息 ISSBN 書名名 出版版

40、社 作者者/譯者 圖書書價格 內(nèi)容容簡介 aa hrref=Jaavasscriipt:opeenwiin()加入入購物車車 查看購購物車 返返回首頁頁 其運行結(jié)結(jié)果如圖圖15-16所所示。圖15-16 圖書書詳細(xì)信信息15.33定單提提交及查查詢用戶一旦旦確定購購物車中中所選的的圖書都都是其所所要購買買的,就就要到去去提交其其定單,以便書書店按照照相應(yīng)的的方式進(jìn)進(jìn)行處理理。而且且,為方方便用戶戶是否已已經(jīng)提交交定單,及定單單的狀態(tài)態(tài),本例例提供了了定單查查詢功能能。在此此處我們們用OrrderrBeaan來將將定單提提交到數(shù)數(shù)據(jù)庫中中,在oordeer.jjsp中中顯示并并提交定定單信息息,

41、quueryyordder.jspp來查詢詢定單。在會員選選書部分分,我們們?nèi)杂肑Javaa Beean來來操作數(shù)數(shù)據(jù)庫,用jssp來做做頁面表表現(xiàn)。15.33.1定定單提交交Javva BBeann為了減少少數(shù)據(jù)冗冗余,定定單信息息由兩張張表來記記錄其信信息:oordeerInnfo,記錄定定單的有有關(guān)公用用信息,ordderddetaail,記錄該該定單包包含哪些些書籍及及數(shù)量,表結(jié)構(gòu)構(gòu)分別如如下:圖15-17定定單信息息表結(jié)構(gòu)構(gòu)圖15-18定定單詳細(xì)細(xì)所有的對對數(shù)據(jù)庫庫的操作作都由JJavaaBeaan來完完成,其其代碼如如下:清單155-111 OOrdeerBeean.Javvapa

42、ckkagee cuuug;impoort Javva.ssql.*;publlic claass OrdderBBeann priivatte sstattic Strringg sttrDBBDriiverr = suun.jjdbcc.oddbc.JdbbcOddbcDDrivver;priivatte sstattic Strringg sttrDBBUrll = jddbc:odbbc:bbookkstoore;priivatte CConnnecttionn coonn =nuull;priivatte RResuultSSet rs = nnulll;priivatte JJav

43、aa.laang.Strringg boookiinfoo = nulll;priivatte JJavaa.laang.Strringg odderppricce = nuull;priivatte JJavaa.laang.Strringg orrderrDatte = nuull;priivatte JJavaa.laang.Strringg orrderrID = nnulll;priivatte JJavaa.laang.Strringg orrderrRemm = nulll;priivatte JJavaa.laang.Strringg reeceiiverrAdddresss

44、= nuull;priivatte JJavaa.laang.Strringg reeceiiverrNamme = nuull;priivatte JJavaa.laang.Strringg reeceiiverrZipp = nulll;priivatte JJavaa.laang.Strringg usserIID = nuull;pubblicc OrrderrBeaan()trry CClasss.fforNNamee(sttrDBBDriiverr );caatchh(Jaava.lanng.CClasssNootFoounddExccepttionn e)SSysttem.err

45、r.prrinttln(OrrderrBeaan (): + e.ggetMMesssagee();pubblicc sstattic voiid mmainn(Sttrinng aargss)/* * 返返回定單單的總價價。 * retturnn Jaava.lanng.SStriing */publlic Javva.llangg.Sttrinng ggetOOderrpriice() retuurn odeerprricee;/* *返回回定單的的日期 。 * retturnn Jaava.lanng.SStriing */publlic Javva.llangg.Sttrinng gg

46、etOOrdeerDaate() ordeerDaate = nnew Javva.uutill.Daate().ttoSttrinng();retuurn ordderDDatee;/* * 返返回定單單的IDD號。 * retturnn Jaava.lanng.SStriing */publlic Javva.llangg.Sttrinng ggetOOrdeerIDD() retuurn ordderIID;/* * 返返回定單單的備注注信息。 * retturnn Jaava.lanng.SStriing */publlic Javva.llangg.Sttrinng ggetOOrd

47、eerReem() retuurn ordderRRem;/* * 返返回接收收者的地地址 * retturnn Jaava.lanng.SStriing */publlic Javva.llangg.Sttrinng ggetRReceeiveerAdddreess() retturnn reeceiiverrAdddresss;/* * 返返回接收收者的姓姓名。 * retturnn Jaava.lanng.SStriing */publlic Javva.llangg.Sttrinng ggetRReceeiveerNaame() retuurn recceivverNNamee;/*

48、* 返返回接收收者的郵郵政編碼碼。 * retturnn Jaava.lanng.SStriing */publlic Javva.llangg.Sttrinng ggetRReceeiveerZiip() retuurn recceivverZZip;/* * 獲獲得用戶戶ID。 * retturnn Jaava.lanng.SStriing */publlic Javva.llangg.Sttrinng ggetUUserrID() retuurn useerIDD;/* * 給給圖書信信息賦值值。 * parram newwBoooks Javva.uutill.Prropeertiie

49、s */publlic voiid ssetBBookkinffo(JJavaa.laang.Strringg neewBoookiinfoo) bookkinffo = neewBoookiinfoo;creaateNNewOOrdeer();int froomInndexx = 0;int tmppInddex = 00;int tmppEndd = 0;Striing strrSqll = nulll;trrycconnn = DriiverrMannageer.ggetCConnnecttionn(sttrDBBUrll);SStattemeent stmmt = coonn.cree

50、ateeStaatemmentt();wwhille(bbookkinffo.iindeexoff(;,ffrommInddex) != -11 )tmppEndd = boookinnfo.inddexOOf(;,froomInndexx);tmppInddex = bbookkinffo.llasttInddexoof(=,tmppEndd);strrSqll = innserrt iintoo orrderrdettaill (oordeerIDD ,bbookkISBBN ,boookcoountt)+ vaaluees( gettOrdderIID() + , + boookiinf

51、oo.suubsttrinng(ffrommInddex ,tmmpInndexx) + , + bbookkinffo.ssubsstriing(tmppInddex+1 ,tmppEndd) + ) ;stmmt.eexeccuteeUpddatee(sttrSqql);ffrommInddex = ttmpEEnd + 11;stmtt.cllosee();connn.cllosee();caatchh(SQQLExxcepptioon ee)SSysttem.errr.prrinttln(BuuyerrBeaan.ggetLLogoontiimess(): + e.gettMesssa

52、gge();/* *給定定單的總總價賦值值。 * parram newwOdeerprricee Jaava.lanng.SStriing */publlic voiid ssetOOderrpriice(Javva.llangg.Sttrinng nnewOOderrpriice) oderrpriice = nnewOOderrpriice;/* * 給給定單的的備注賦賦值。 * parram newwOrdderRRem Javva.llangg.Sttrinng */publlic voiid ssetOOrdeerReem(JJavaa.laang.Strringg neewOrrd

53、errRemm) ordeerReem = neewOrrderrRemm;/* * 給給接收者者的地址址賦值。 * parram newwRecceivverAAddrresss Jaava.lanng.SStriing */publlic voiid ssetRReceeiveerAdddreess(Javva.llangg.Sttrinng nnewRReceeiveerAdddreess) recceivverAAddrresss = newwRecceivverAAddrresss;/* * 給給接收者者的姓名名賦值。 * parram newwRecceivverNNamee Ja

54、ava.lanng.SStriing */publlic voiid ssetRReceeiveerNaame(Javva.llangg.Sttrinng nnewRReceeiveerNaame) recceivverNNamee = newwRecceivverNNamee;/* * 給給接收者者的郵政政編碼代代碼賦值值。 * parram newwRecceivverZZip Javva.llangg.Sttrinng */publlic voiid ssetRReceeiveerZiip(JJavaa.laang.Strringg neewReeceiiverrZipp) receei

55、veerZiip = neewReeceiiverrZipp;/* * 給給用戶代代碼賦值值。 * parram newwUseerIDD Jaava.lanng.SStriing */publlic voiid ssetUUserrID(Javva.llangg.Sttrinng nnewUUserrID) userrID = nnewUUserrID;/* * 創(chuàng)創(chuàng)建一個個新定單單 */privvatee vooid creeateeNewwOrdder() Striing strrSqll = nulll;tryyconnn = DrriveerMaanagger.gettConnnec

56、ctioon(sstrDDBUrrl);Stattemeent stmmt = coonn.creeateeStaatemmentt();strSSql = inssertt innto ordderIInfoo (uuserrID,recceivverNNamee,receeiveerAdddreess,recceivverZZip,ordderRRem,ordderPPricce,OOrdeerdaate)+ vaaluees( gettUseerIDD() + , + ggetRReceeiveerNaame() + , + ggetRReceeiveerAdddreess() + , + geetReeceiiverrZipp() + , + ggetOOrdeerReem() + , + ggetOOrdeerPrricee() + , ggetOOrdeerDaate() + ) ;sttmt.exeecutteUppdatte(sstrSSql);sttrSqql = sseleect maxx(OrrderrID) frrom orrderrInffo wwherre uuserrID = ggetUUserrID() + annd rreceeiveerNaame = + geetReeceiiverrNamme() + andd ree

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論