版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
摘要隨著Internet技術(shù)的發(fā)展,越來(lái)越多的交易活動(dòng)都在網(wǎng)絡(luò)上進(jìn)行,網(wǎng)上購(gòu)物已經(jīng)成為一種時(shí)尚.鑒于此我們針對(duì)圖書的網(wǎng)上交易開發(fā)了一個(gè)網(wǎng)上圖書訂購(gòu)系統(tǒng).本系統(tǒng)以頁(yè)面的方式向顧客展示網(wǎng)上書城的書籍,并需要顧客注冊(cè)為網(wǎng)上書城的會(huì)員,為會(huì)員提供購(gòu)物和留言的功能.購(gòu)物時(shí)為顧客提供購(gòu)物車和定單功能;游客有瀏纜商品和瀏纜留言板的功能.為網(wǎng)站管理員提供對(duì)各個(gè)版塊的管理功能.本系統(tǒng)使用eclipse作為開發(fā)工具,基于B/S模式,采用MVC框架對(duì)整體進(jìn)行設(shè)計(jì),以跨平臺(tái)語(yǔ)言java作為低層代碼實(shí)現(xiàn)語(yǔ)言.M(model)層使用Hibernate技術(shù)訪問數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)使用的是MySql數(shù)據(jù)庫(kù);C(controller)層主要用struts技術(shù)實(shí)現(xiàn);而使用jsp來(lái)實(shí)現(xiàn)V(view)層的界面設(shè)計(jì);使用Tomcat作為本系統(tǒng)Server端服務(wù)器.關(guān)鍵詞:雪域書城、Hibernate、Struts、jsp、java、Mysql、TomcatAbstractAlongwiththeInternettechnology'sdevelopment,moreandmoretransactionactivitiescarriesonthenetwork,on-lineshoppingalreadybecameonefashion.Inviewofthefactthatthiswehavedevelopedon-linebooksordersysteminviewofthebookson-linetransaction.Thissystembypage'swaytothecustomerdemonstratedthaton-linebookcitythebooks,andneedthecustomerregistrationforon-linebookcitymember,providestheshoppingandthemessagefunctionforthemember.Whenshoppingprovidestheshoppingcartandtheorderformfunctionforthecustomer;Thetouristhastheclearcablecommodityandtheclearcablemessagecenter'sfunction.Providesforthewebsitemanagertoeachsectormanagementfunction.Thissystemuseseclipsetotakethedevelopmentkit,inthepatternisbasedontheB/Spattern,thewholeusestheMVCframe,realizesthelanguagebycrossplatformlanguagejavaastheunderlyingbedcode.TheM(model)levelusestheHibernatetechnologytovisitthedatabase,whatdatabaseuseistheMySqldatabase;TheC(controller)levelmainlyrealizeswiththestrutstechnology;ButusesjsptorealizetheV(view)levelcontactsurfacedesign;UsesTomacttotakethissystemServerendserver.keyword:Snowterritorybookcity,Hibernate,Struts,jsp,java,Mysql目錄TOC\o"1-3"\h\u摘要 1Abstract 21緒論 52開發(fā)環(huán)境和開發(fā)工具簡(jiǎn)介 62.1eclipse概述: 6eclipse項(xiàng)目簡(jiǎn)介: 62.2java語(yǔ)言簡(jiǎn)介 62.2.1Java語(yǔ)言特性 62.2.2豐富的類庫(kù) 62.3jsp概述: 72.4.1JSP的技術(shù)原理 73開發(fā)所用框架 73.1Hibernate概述: 7(1)持久化與關(guān)系數(shù)據(jù)庫(kù) 7(2)對(duì)象/關(guān)系阻抗不匹配 8(3)阻抗不匹配的幾個(gè)典型方面 8(4)對(duì)象/關(guān)系映射 83.2struts技術(shù)原理: 83.2.1struts整體框架: 83.2.2struts工作原理: 94系統(tǒng)需求分析 94.1系統(tǒng)主要功能詳細(xì)描述 94.2系統(tǒng)角色及其功能分析 104.3系統(tǒng)功能模塊設(shè)計(jì) 105總體設(shè)計(jì) 114.1系統(tǒng)用例圖: 144.1.1用戶用例圖: 144.2DB層設(shè)計(jì): 154.1.2各類E-R圖: 15圖2.3.6 185.2DAO層設(shè)計(jì) 215.3SERVICE層設(shè)計(jì) 215.4WEB層設(shè)計(jì) 226系統(tǒng)詳細(xì)設(shè)計(jì) 236.1前臺(tái)部分 236.1.1前臺(tái)總體框架 23使用Hibernate連接數(shù)據(jù)庫(kù): 24部分?jǐn)?shù)據(jù)庫(kù)表的結(jié)構(gòu)設(shè)計(jì): 25部分?jǐn)?shù)據(jù)庫(kù)建表語(yǔ)句: 256.1.2用戶管理模塊 326.1.3修改密碼: 336.1.4購(gòu)物車模塊 346.1.6留言板模塊 387致謝 428參考文獻(xiàn) 429附錄一中英文對(duì)照文獻(xiàn) 441緒論互聯(lián)網(wǎng)的浪潮席卷了我們生活的每一寸空間,從全球咨詢,到奇聞異事;從時(shí)事要聞到衣食住行;只有我們想不到的沒有在網(wǎng)絡(luò)上找不到的.由此可見互聯(lián)網(wǎng)給我們工作、生活、學(xué)習(xí)所帶來(lái)的翻天覆地的變化。隨著Internet的迅猛發(fā)展,電子商務(wù)也以不可思義的速度融入到我們的生活中,以他便利,安全,可靠的優(yōu)點(diǎn)沖擊著傳統(tǒng)的交易方式,網(wǎng)上購(gòu)物已經(jīng)被越來(lái)越多的人接受,并逐漸成為一種時(shí)尚.Internet技術(shù)得到持續(xù)、猛烈的發(fā)展,已經(jīng)成為計(jì)算機(jī)產(chǎn)業(yè)的一個(gè)技術(shù)熱點(diǎn),越來(lái)越多的企業(yè)開始關(guān)注網(wǎng)絡(luò),許多人正在或正準(zhǔn)備學(xué)習(xí)網(wǎng)絡(luò)知識(shí),進(jìn)行網(wǎng)絡(luò)開發(fā)或創(chuàng)建自己的網(wǎng)站。本次畢業(yè)設(shè)計(jì)是基于B/S模式的網(wǎng)上購(gòu)物系統(tǒng),采用MVC框架.使用到的技術(shù)主要包括Hibernate,Struts等基于java的開源框架,使用jsp進(jìn)行動(dòng)態(tài)網(wǎng)頁(yè)的設(shè)計(jì).使用mysql數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),應(yīng)用服務(wù)器使用的是Tomcat服務(wù)器.本次網(wǎng)上購(gòu)物系統(tǒng)是由我和另外兩人組成的三人小組共同開發(fā)完成的,本系統(tǒng)主要分為用戶管理,留言管理,產(chǎn)品管理,定單管理,購(gòu)物車管理,管理員管理6個(gè)模塊;我負(fù)責(zé)對(duì)其中的用戶管理,留言管理,購(gòu)物車管理3個(gè)模塊進(jìn)行開發(fā).在此次畢業(yè)論文中,首先對(duì)開發(fā)中所有到的相關(guān)技術(shù)進(jìn)行了簡(jiǎn)單介紹:包括elipse的體系結(jié)構(gòu)和安裝,以及開發(fā)環(huán)境的配置;Java語(yǔ)言的特征和他的應(yīng)用前景;Hibernate的工作原理,配置文件和他的優(yōu)點(diǎn);Jsp的技術(shù)原理;Struts的整體框架和工作原理.然后是對(duì)需求分析和詳細(xì)設(shè)計(jì),包括數(shù)據(jù)庫(kù)的結(jié)構(gòu)設(shè)計(jì);使用Hibernate連接數(shù)據(jù)庫(kù),以及對(duì)本人所作模塊的展示和部分實(shí)現(xiàn)代碼.2開發(fā)環(huán)境和開發(fā)工具簡(jiǎn)介2.1eclipse概述:eclipse項(xiàng)目簡(jiǎn)介:
eclipse是一個(gè)開放源碼社區(qū),專注于開發(fā)框架和示范工具的通用平臺(tái),從而使得構(gòu)建和部署軟件更簡(jiǎn)單且成本有效.這個(gè)大型聯(lián)盟包括主要軟件供應(yīng)商,解決方案提供商,企業(yè),教研機(jī)構(gòu)和個(gè)人,他們密切合作,一起創(chuàng)建一個(gè)生態(tài)系統(tǒng),以便用補(bǔ)充的產(chǎn)品,能力和服務(wù)增強(qiáng)和形成eclipseeclipse為三類支持者提供價(jià)值
基于eclipse的產(chǎn)品的用戶將獲益于:提供對(duì)整個(gè)eclipse生態(tài)系統(tǒng)中研究和知識(shí)的訪問;經(jīng)受開放源碼社區(qū)詳細(xì)審查而產(chǎn)生的高質(zhì)量軟件;eclipse一致接口導(dǎo)致的重用技術(shù)的能力.eclipse平臺(tái)是一個(gè)具有一組強(qiáng)大服務(wù)的框架,這些服務(wù)支持插件,比如JDT和插件開發(fā)環(huán)境(PDE).它由幾個(gè)主要的部分構(gòu)成:平臺(tái)運(yùn)行庫(kù),工作區(qū),工作臺(tái),團(tuán)隊(duì)支持和幫助.
2.2java語(yǔ)言簡(jiǎn)介2.2.1Java語(yǔ)言特性Java是一個(gè)廣泛使用的網(wǎng)絡(luò)編程語(yǔ)言,它是一種新的計(jì)算概念。首先,作為一種程序設(shè)計(jì)語(yǔ)言,它簡(jiǎn)單、面向?qū)ο?、不依賴于機(jī)器的結(jié)構(gòu)、具有可移植性、魯棒性、安全性、并且提供了并發(fā)的機(jī)制、具有很高的性能。其次,它最大限度地利用了網(wǎng)絡(luò),Java的小應(yīng)用程序(applet)可在網(wǎng)絡(luò)上傳輸而不受CPU和環(huán)境的限制。另外,Java還提供了豐富的類庫(kù),使程序設(shè)計(jì)者可以很方便地建立自己的系統(tǒng)。Java語(yǔ)言有下面一些特點(diǎn):簡(jiǎn)單、面向?qū)ο蟆⒎植际?、解釋?zhí)行、魯棒、安全、體系結(jié)構(gòu)中立、可移植、高性能、多線程以及動(dòng)態(tài)性。2.2.2豐富的類庫(kù)Java提供了大量的類以滿足網(wǎng)絡(luò)化、多線程、面向?qū)ο笙到y(tǒng)的需要。(1.)語(yǔ)言包提供的支持包括字符串處理、多線程處理、例外處理、數(shù)學(xué)函數(shù)處理等,可以用它簡(jiǎn)單地實(shí)現(xiàn)Java程序的運(yùn)行平臺(tái)。(2.)實(shí)用程序包提供的支持包括哈希表、堆棧、可變數(shù)組、時(shí)間和日期等。(3.)輸入輸出包用統(tǒng)一的"流"模型來(lái)實(shí)現(xiàn)所有格式的I/O,包括文件系統(tǒng)、網(wǎng)絡(luò)、輸入(4.)低級(jí)網(wǎng)絡(luò)包用于實(shí)現(xiàn)Socket編程。(5.)抽象圖形用戶接口包實(shí)現(xiàn)了不同平臺(tái)的計(jì)算機(jī)的圖形用戶接口部件,包括窗口、菜單、滾動(dòng)條、對(duì)話框等,使得Java可以移植到不同平臺(tái)的機(jī)器。(6.)網(wǎng)絡(luò)包支持Internet的TCP/IP協(xié)議,提供了與In-ternet的接口。它支持URL連接,WWW的即時(shí)訪問,并且簡(jiǎn)化了用戶/服務(wù)器模型的程序設(shè)計(jì)。2.3jsp概述:2.4.1JSP的技術(shù)原理JSP語(yǔ)言及其特點(diǎn)在傳統(tǒng)的網(wǎng)頁(yè)HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標(biāo)記(tag),就構(gòu)成了JSP網(wǎng)頁(yè)(*.jsp)。JSP頁(yè)面看上去象標(biāo)準(zhǔn)的HTML和XML頁(yè)面,并附帶有JSP引擎能夠處理和抽取的額外元件。Web服務(wù)器在遇到訪問JSP網(wǎng)頁(yè)的請(qǐng)求時(shí),首先執(zhí)行其中的程序片段,然后將執(zhí)行結(jié)果以HTML格式返回給用戶。程序片段可以操作數(shù)據(jù)庫(kù)、重新定向網(wǎng)頁(yè)以及發(fā)送E-mail等,這就是建立動(dòng)態(tài)網(wǎng)站所需要的功能。所有程序都在服務(wù)器端執(zhí)行,網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果,對(duì)客戶瀏覽器的要求最低。它基于強(qiáng)大的Java語(yǔ)言,具有良好的伸縮性,在網(wǎng)絡(luò)數(shù)據(jù)庫(kù)應(yīng)用開發(fā)領(lǐng)域具有得天獨(dú)厚的優(yōu)勢(shì)。JSP技術(shù)加速了動(dòng)態(tài)Web頁(yè)面的開發(fā):3開發(fā)所用框架3.1Hibernate概述:Hibernate是一個(gè)用于開發(fā)Java應(yīng)用的對(duì)象/關(guān)系映射框架。它通過在數(shù)據(jù)庫(kù)中為開發(fā)人員存儲(chǔ)應(yīng)用對(duì)象,在數(shù)據(jù)庫(kù)和應(yīng)用之間提供了一座橋梁,開發(fā)人員不必編寫大量的代碼來(lái)存儲(chǔ)和檢索對(duì)象,省下來(lái)的精力更多的放在問題本身上。(1)持久化與關(guān)系數(shù)據(jù)庫(kù)持久化的常見定義:使數(shù)據(jù)的存活時(shí)間超過創(chuàng)建該數(shù)據(jù)的進(jìn)程的存活時(shí)間。數(shù)據(jù)持久化后可以重新獲得它;如果外界進(jìn)程沒有修改它,它將與持久化之前相同。對(duì)于一般應(yīng)用來(lái)說(shuō),持久化指的是將數(shù)據(jù)存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中。
關(guān)系數(shù)據(jù)庫(kù)是為管理數(shù)據(jù)而設(shè)計(jì)的,它在存儲(chǔ)數(shù)據(jù)方面很流行,這主要?dú)w功于易于使用SQL來(lái)創(chuàng)建和訪問。
關(guān)系數(shù)據(jù)庫(kù)使用的模型被稱為關(guān)系模型,它使用二維表來(lái)表示數(shù)據(jù)。這種數(shù)據(jù)邏輯視圖表示了用戶如何看待包含的數(shù)據(jù)。表可以通過主碼和外碼相互關(guān)聯(lián)。主碼唯一的標(biāo)識(shí)了表中的一行,而外碼是另一個(gè)表中的主碼。(2)對(duì)象/關(guān)系阻抗不匹配關(guān)系數(shù)據(jù)庫(kù)是為管理數(shù)據(jù)設(shè)計(jì)的,它適合于管理數(shù)據(jù)。然而,在面向?qū)ο蟮膽?yīng)用中,將對(duì)象持久化為關(guān)系模型可能會(huì)遇到問題。這個(gè)問題的根源是因?yàn)殛P(guān)系數(shù)據(jù)庫(kù)管理數(shù)據(jù),而面向?qū)ο蟮膽?yīng)用是為業(yè)務(wù)問題建模而設(shè)計(jì)的。由于這兩種目的不同,要使這兩個(gè)模型協(xié)同工作可能具有挑戰(zhàn)性。這個(gè)問題被稱為對(duì)象/關(guān)系阻抗不匹配(Object/relationalimpedancemismatch)或簡(jiǎn)稱為阻抗不匹配(3)阻抗不匹配的幾個(gè)典型方面在應(yīng)用中輕易實(shí)現(xiàn)的對(duì)象相同或相等,這樣的關(guān)系在關(guān)系數(shù)據(jù)庫(kù)中不存在。
在面向?qū)ο笳Z(yǔ)言的一項(xiàng)核心特性是繼承,繼承很重要,因?yàn)樗试S創(chuàng)建問題的精確模型,同時(shí)可以在層次結(jié)構(gòu)中自上而下的共享屬性和行為。而關(guān)系數(shù)據(jù)庫(kù)不支持繼承的概念。
對(duì)象之間可以輕易的實(shí)現(xiàn)一對(duì)一,一對(duì)多和多對(duì)多的關(guān)聯(lián)關(guān)系,而數(shù)據(jù)庫(kù)并不理.解這些,它只知道外碼指向主碼。(4)對(duì)象/關(guān)系映射前頁(yè)列舉了一些阻抗不匹配的問題,當(dāng)然開發(fā)人員是可以解決這些問題,但這一過程并不容易。對(duì)象/關(guān)系映射(Object/RelationalMapping)就是為解決這些問題而開發(fā)的。
ORM在對(duì)象模型和關(guān)系模型之間架起了一座橋梁,讓應(yīng)用能夠直接持久化對(duì)象,而不要求在對(duì)象和關(guān)系之間進(jìn)行轉(zhuǎn)換。Hibernate就是ORM工具中最成功的一種。它的主要優(yōu)點(diǎn)是簡(jiǎn)單,靈活,功能完備和高效。3.2struts技術(shù)原理:3.2.1struts整體框架:基于struts的MVC模式即Model-View-Controller的縮寫,是一種常用的設(shè)計(jì)模式。MVC減弱了業(yè)務(wù)邏輯接口和數(shù)據(jù)接口之間的耦合,以及讓視圖層更富于變化。Struts是MVC的一種實(shí)現(xiàn),它將Servlet和JSP標(biāo)記(屬于J2EE規(guī)范)用作實(shí)現(xiàn)的一部分。Struts繼承了MVC的各項(xiàng)特性,并根據(jù)J2EE的特點(diǎn),做了相應(yīng)的變化與擴(kuò)展。3.2.2struts工作原理:控制:struts需要用到一個(gè)XML文件Struts-config.xml,與之相關(guān)聯(lián)的是Controller,在Struts中,承擔(dān)MVC中Controller角色的是一個(gè)Servlet,叫ActionServlet。ActionServlet是一個(gè)通用的控制組件。這個(gè)控制組件提供了處理所有發(fā)送到Struts的HTTP請(qǐng)求的入口點(diǎn)。它截取和分發(fā)這些請(qǐng)求到相應(yīng)的動(dòng)作類(這些動(dòng)作類都是Action類的子類)。另外控制組件也負(fù)責(zé)用相應(yīng)的請(qǐng)求參數(shù)填充ActionFrom(通常稱之為FromBean),并傳給動(dòng)作類(通常稱之為ActionBean)。動(dòng)作類實(shí)現(xiàn)核心商業(yè)邏輯,它可以訪問javabean或調(diào)用EJB。最后動(dòng)作類把控制權(quán)傳給后續(xù)的JSP文件,后者生成視圖。所有這些控制邏輯利用Struts-config.xml文件來(lái)配置。基于struts的MVC模式的三層模式介紹如下:視圖(View):主要由JSP生成頁(yè)面完成視圖,Struts提供豐富的JSP標(biāo)簽庫(kù):Html,Bean,Logic,Template等,這有利于分開表現(xiàn)邏輯和程序邏輯。模型(Module):模型以一個(gè)或多個(gè)javabean的形式存在。這些bean分為三類:ActionForm、Action、JavaBeanorEJB。ActionForm通常稱之為FormBean,封裝了來(lái)自于Client的用戶請(qǐng)求信息,如表單信息。Action通常稱之為ActionBean,獲取從ActionSevlet傳來(lái)的FormBean,取出FormBean中的相關(guān)信息,并做出相關(guān)的處理,一般是調(diào)用JavaBean或EJB等??刂?Controller):在Struts中,用戶的請(qǐng)求一般以*.do作為請(qǐng)求服務(wù)名,所有的*.do請(qǐng)求均被指向ActionSevlet,ActionSevlet根據(jù)Struts-config.xml中的配置信息,將用戶請(qǐng)求封裝成一個(gè)指定名稱的FormBean,并將此FormBean傳至指定名稱的ActionBean,由ActionBean完成相應(yīng)的業(yè)務(wù)操作,如文件操作,數(shù)據(jù)庫(kù)操作等。每一個(gè)*.do均有對(duì)應(yīng)的FormBean名稱和ActionBean名稱,這些在Struts-config.xml中配置。4系統(tǒng)需求分析4.1系統(tǒng)主要功能詳細(xì)描述(1)用戶可以注冊(cè),登錄。(2)登錄用戶可以查看用戶資料,修改密碼,添加收貨人,刪除收貨人。(3)所有用戶可以瀏覽商品列表及每個(gè)商品的詳細(xì)信息。(4)所有用戶可以進(jìn)行查詢本站所擁有的自己需要的物品。(5)所有用戶可以查看用戶留言列表,登錄用戶可以留言。(6)登錄用戶可以進(jìn)行購(gòu)物,并會(huì)像超市的購(gòu)物車一樣放入自己需要的物品以便后面的下單。(7)登錄用戶可以對(duì)自己的購(gòu)物車進(jìn)行相關(guān)操作。(8)登錄用戶可以在進(jìn)行購(gòu)物后,進(jìn)行下單,網(wǎng)站可以對(duì)定單進(jìn)行處理。(9)用戶只能查看自己已經(jīng)有的定單,并能看到每個(gè)定單的詳細(xì)信息。(10)后臺(tái)管理員可以對(duì)用戶進(jìn)行添加,刪除,修改和查詢操作。(11)后臺(tái)管理員可以對(duì)商品進(jìn)行添加,刪除,修改和查詢操作。(12)后臺(tái)管理員可以查看所有的用戶對(duì)應(yīng)的定單。并能對(duì)每個(gè)定單進(jìn)行刪除操作。(13)后臺(tái)管理員可以對(duì)用戶留言進(jìn)行刪除操作。4.2系統(tǒng)角色及其功能分析系統(tǒng)主要用戶有三類:游客,登陸用戶,管理員。游客主要可以用的功能是:查看所有商品,搜索商品,查看商品詳細(xì)信息,查看用戶留言列表。登錄用戶主要可以用的功能:查看修改自己的資料,查看所有商品,搜索商品,查看商品詳細(xì)信息,購(gòu)買商品,下定單,查看定單,查看用戶留言列表,留言。管理員主要功能:操作普通管理員信息,操作用戶信息,操作產(chǎn)品信息,操作定單信息,操作用戶留言信息。4.3系統(tǒng)功能模塊設(shè)計(jì)功能結(jié)構(gòu)圖如下:網(wǎng)上購(gòu)網(wǎng)上購(gòu)書系統(tǒng)網(wǎng)上購(gòu)書系統(tǒng)前臺(tái)功能后臺(tái)功能用戶管理用戶購(gòu)買書用戶留言個(gè)人資料管理留言板管理商品管理用戶信息管理鏈接信息管理留言管理訂單管理管理員身份驗(yàn)證功能模塊設(shè)計(jì)圖從圖中可以看出,網(wǎng)上購(gòu)物系統(tǒng)可以分為前臺(tái)和后臺(tái)兩個(gè)部分,前臺(tái)部分由用戶使用,主要包括用戶注冊(cè),生成訂單,購(gòu)物車管理,查看購(gòu)物車,查看留言,訂購(gòu)產(chǎn)品,訂單查詢和發(fā)布留言7個(gè)模塊;后臺(tái)部分由管理員使用,主要包括管理員身份驗(yàn)證,商品管理,處理訂單,用戶信息管理,留言管理,連接信息管理6個(gè)模塊。5總體設(shè)計(jì)網(wǎng)上書城系統(tǒng)是基于B/S架構(gòu)。實(shí)現(xiàn)網(wǎng)上售書的電子商務(wù)網(wǎng)站。系統(tǒng)使用Java語(yǔ)言開發(fā),利用到Hibernate和Struts等開源框架,整個(gè)系統(tǒng)分成多層,有效實(shí)現(xiàn)了系統(tǒng)各部分的低偶合.整個(gè)系統(tǒng)主要有:表現(xiàn)層.業(yè)務(wù)層.數(shù)據(jù)訪問層。利用軟件分層把系統(tǒng)偶合度降低。在數(shù)據(jù)訪問層,使用接口和和實(shí)現(xiàn)分離。上層的服務(wù)只依賴于底層的接口,底層的實(shí)現(xiàn)方式改變不會(huì)影響到上層的服務(wù)。這樣就會(huì)最大程度的降低了軟件各部分之間的偶合。便于以后修改底層的實(shí)現(xiàn)。在分層的基礎(chǔ)上。有將軟件分模塊,從而使系統(tǒng)橫向上面分模塊,縱向上面分層次。整個(gè)軟件的層次是:表現(xiàn)層業(yè)務(wù)層數(shù)據(jù)訪問層DB整個(gè)軟件根據(jù)系統(tǒng)需求分析,可得出系統(tǒng)兩種用戶的業(yè)務(wù)流程圖。前臺(tái)用戶操作業(yè)務(wù)流程為:開始瀏覽用戶留言信息覽商品列表登錄瀏覽商品詳細(xì)信息登錄NN登錄YY添加商品進(jìn)購(gòu)物車用戶留言購(gòu)物車生成定單退出結(jié)束在用戶業(yè)務(wù)流里面,首先用戶連接到主界面,主界面顯示所有商品,并且提供商品的搜索服務(wù),在主界面可以直接連接到用戶留言列表界面,在主界面還可以連接到用戶登錄界面。用戶在主界面可以瀏覽所有的商品,也可以查看商品的詳細(xì)信息,在用戶主界面和商品詳細(xì)信息界面,用戶可以將商品添加進(jìn)購(gòu)物車,此操作只有登錄用戶可以使用,非登錄用戶選自添加進(jìn)購(gòu)物車會(huì)被攔截到未登錄界面。用戶在留言主界面可以進(jìn)行留言。非登錄用戶不能留言。用戶可以點(diǎn)擊購(gòu)物車,進(jìn)入購(gòu)物車界面,在購(gòu)物車界面,用戶可以對(duì)購(gòu)物車?yán)锏纳唐愤M(jìn)行刪除操作,也可以將購(gòu)物車中的商品修改數(shù)量,還可以清空購(gòu)物車。也可以在購(gòu)物車界面選擇繼續(xù)購(gòu)物,連接到主界面繼續(xù)選擇商品。用戶還可以在購(gòu)物車界面進(jìn)行下單操作。將購(gòu)物車?yán)锏纳唐飞啥▎?。在生成定單之?需要用戶添加收獲人地址,一個(gè)用戶可以添加多個(gè)收貨人地址.生成定單后,用戶可以查看自己的定單。后臺(tái)管理員的業(yè)務(wù)流程為:開始登錄管理員主界面有權(quán)限N權(quán)限出錯(cuò)頁(yè)面Y管理員管理用戶管理產(chǎn)品管理定單管理留言管理退出結(jié)束在后臺(tái)中,管理員可以直接進(jìn)入管理員入口登錄管理員管理界面。在管理員管理的主界面顯示的是管理員所有的操作。管理員可直接選擇操作進(jìn)入不同的管理界面,對(duì)管理員管理主要有超級(jí)管理員來(lái)實(shí)現(xiàn),其他管理員沒有此操作。用戶管理界面直接顯示所有用戶的列表,在用戶管理界面。管理員可以選擇添加和刪除用戶,在產(chǎn)品管理界面,管理員可以添加和刪除產(chǎn)品。定單管理界面。管理員可以刪除定單。留言管理界面。管理員可以刪除留言。4.1系統(tǒng)用例圖:4.1.1用戶用例圖:4.1.2管理員用例圖:4.2DB層設(shè)計(jì):4.1.2各類E-R圖:(1)User(用戶):User有11個(gè)屬性,分別是:userid,username,password,createtime,addr,telephone,e_ma,gender,age,state,role.User的E-R如圖2.3.1所示.UsernnamePasswordstateUsernnamePasswordstateUserUserUseridRoleCreatetimeUseridRoleCreatetime圖2.3.1(2)UserItem(收貨人):UserItem有7個(gè)屬性,分別是:user_item_id,item_name,item_address,item_email,item_mobilelphone,item_officephone,item_postcode.UserItem的E-R圖2.3.2所示.Item_addressUser_item_idItem_nameItem_addressUser_item_idItem_nameItem_emailItem_emailUseritemUseritemItem_mobilephoneItem_mobilephoneItem_postcodeItem_officephoneItem_postcodeItem_officephone圖2.3.2(3)Message(用戶留言):Message有4個(gè)屬性,分別是:Messageid,title,content,usernameMessage的E-R圖如圖2.3.3所示.contentmessageIdtitlecontentmessageIdtitleUsernameUsernameMessageMessage圖2.2.3(4)Module(管理員權(quán)限):module有2個(gè)屬性,分別是:moduleId,moduleName Module的E-R圖如圖2.3.4所示:Module_nameModule_idModule_nameModule_idModuleModule圖2.2.4(5)Admin(管理員):Admin有5個(gè)屬性,分別是:adminid,adminname,password,email,telAdmin的E-R圖如圖2.2.5所示:passwordadminidadminnamepasswordadminidadminnameAdminAdmintelemailtelemail圖2.2.5(6)Catalog(書籍分類)Catalog有3個(gè)屬性,分別是:catalogid,catalogname,descriptionCatalog的E-R圖如圖2.3.6所示:descriptiondescriptioncatalognamecatalogidcatalognamecatalogidCatalogCatalog圖2.3.6(7)Product(商品):Product有11個(gè)屬性,分別是:name,isbn,printer,author,price,productid,booknum,state,imagepath,description,createtimeProduct的E-R圖如圖2.3.7所示.nameisbnnameisbnprinterauthorbooknumdescriptionImagepathcreatetimepricestateProductidproduct圖2.3.7`(8)Order(定單):Order有5個(gè)屬性,分別是:orderid,totalprice,orderstate,payinfo,createtime.Order的E-R圖如圖2.2.8所示:orderstateorderidtotalpriceorderstateorderidtotalpriceorderorderpayinfocreatetimepayinfocreatetime圖2.2.8(9)OrderItem(定單條目):OrderItem有2個(gè)屬性,分別是:order_item_id,qualityOrderItem的E-R圖如圖2.3.9所示:qualityqualityorder_item_idorder_item_idorder_itemorder_item圖2.3.9(10)對(duì)各個(gè)類的E-R圖進(jìn)行,并標(biāo)出他們之間的對(duì)應(yīng)關(guān)系,得到整體E-R圖.其中一個(gè)User(用戶)可以有多個(gè)Message(留言),可以添加多個(gè)UserItem(收獲人),可以創(chuàng)建多個(gè)Order(定單);一個(gè)UserItem(收獲人)可以創(chuàng)建多個(gè)Order(定單);一個(gè)Order(定單)可以增加多個(gè)OrderItem(定單條目);一個(gè)Product(商品)可以存在于多個(gè)OrderItem(定單條目)中;一個(gè)Catalog(商品類型)中可以有多個(gè)此類的Product(商品);一個(gè)Admin(管理員)可以有多個(gè)Module(權(quán)限),一個(gè)Module(權(quán)限)可以為多個(gè)Admin(管理員)所有.MessageMessageTalknTalkuserItemaddUser1userItemaddUser1n1createcreate1createncreateorderordern1addaddcreateProductHaveorderItemncreateProductHaveorderItemn1ncatalog1cataloghavemoduleadminhavemoduleadminmn5.2DAO層設(shè)計(jì)在數(shù)據(jù)訪問層,將全部使用接口和實(shí)現(xiàn)分離,這樣便于以后更換數(shù)據(jù)庫(kù),降低了數(shù)據(jù)訪問層與數(shù)據(jù)庫(kù)之間的偶合度。在這層中,主要是對(duì)數(shù)據(jù)庫(kù)的表操作。我們利用的是Hibernate技術(shù)。這是一種ORM技術(shù),可以將關(guān)系數(shù)據(jù)庫(kù)中存的每條記錄都對(duì)應(yīng)成一個(gè)實(shí)體,由于所有數(shù)據(jù)庫(kù)中的表都只通過DAO來(lái)訪問,所以在DAO中要有每個(gè)表的入口。因此,要為每和實(shí)體類對(duì)應(yīng)一個(gè)DAO。5.3SERVICE層設(shè)計(jì)Service主要是系統(tǒng)的業(yè)務(wù)邏輯,也就是系統(tǒng)的實(shí)際的業(yè)務(wù)邏輯活動(dòng),是系統(tǒng)的真正的核心,這一層主要都是一些業(yè)務(wù)。同時(shí)這一層中應(yīng)該加上事務(wù),因?yàn)?,?duì)數(shù)據(jù)庫(kù)的操作可能出現(xiàn)異常,而Service完全依賴于DAO,所以當(dāng)數(shù)據(jù)庫(kù)出現(xiàn)異常后,這里可以對(duì)未完成的事務(wù)進(jìn)行回滾。5.4WEB層設(shè)計(jì)WEB層主要是用來(lái)接收用戶請(qǐng)求,并通過請(qǐng)求的不同選擇相應(yīng)的服務(wù)來(lái)處理請(qǐng)求,再把結(jié)果表現(xiàn)給用戶。這樣在WEB中把請(qǐng)求,服務(wù)和表現(xiàn)分開。我們?cè)贘ava的開源框架中選擇Struts來(lái)做WEB層,我們首先利用Action來(lái)接收請(qǐng)求,在Action中有不同的方法來(lái)處理不同的請(qǐng)求,再在Action中調(diào)用相應(yīng)的Service來(lái)處理請(qǐng)求。對(duì)執(zhí)行結(jié)果進(jìn)行判斷后,選擇不同的JSP來(lái)進(jìn)行表現(xiàn)。Struts中這種開發(fā)我們成為MVC模式,下面是MVC模式的圖解,以及在本系統(tǒng)中的具體作用: C控制層 ActionnewRequestreturnM模型層瀏覽器forward/redirectResponseV視圖層Jsp6系統(tǒng)詳細(xì)設(shè)計(jì)6.1前臺(tái)部分6.1.1前臺(tái)總體框架前臺(tái)部分由用戶使用,包括用戶注冊(cè),購(gòu)物車管理,留言板管理,個(gè)人資料管理等幾個(gè)部分。(1)模塊功能介紹用戶管理:為了便于網(wǎng)站的管理,必須有一套完整的用戶管理體系。該網(wǎng)站用戶管理模塊由用戶注冊(cè),用戶登陸,修改密碼部分組成。購(gòu)物車:所選商品須通過購(gòu)物車進(jìn)行保存,然后生成訂單。查看用戶資料:為了方便用戶為自己或他人購(gòu)買書籍,用戶登陸后即可添加收獲人信息。留言板:用戶登錄以后可以查看和添加留言信息,對(duì)于游客可以查看留言信息.雪域書店首頁(yè)雪域書店首頁(yè)Index.jsp用戶注冊(cè)pages/register.jsp留言板pages/listmessage.jsp產(chǎn)品列表pages/listproduct.jsp用戶登錄pages/login.jsp用戶注冊(cè)pages/register.jsp留言板pages/listmessage.jsp產(chǎn)品列表pages/listproduct.jsp用戶登錄pages/login.jsp查看用戶資料biz/userinfo.jsp修改密碼biz/updatepassword.jsp用戶留言biz/addmessage.jsp查看用戶資料biz/userinfo.jsp修改密碼biz/updatepassword.jsp用戶留言biz/addmessage.jsp加入購(gòu)物車biz/cartlist.jsp添加收獲人地址biz/adduseritem.jsp查看定單biz/orderinfo.jsp添加收獲人地址biz/adduseritem.jsp查看定單biz/orderinfo.jsp生成定單biz/orderlist.jsp生成定單biz/orderlist.jsp退出退出(2)數(shù)據(jù)庫(kù)操作:使用Hibernate連接數(shù)據(jù)庫(kù):<?xmlversion='1.0'encoding='UTF-8'?><!DOCTYPEhibernate-configurationPUBLIC"-//Hibernate/HibernateConfigurationDTD3.0//EN""/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <propertyname="hibernate.show_sql">true</property> <propertyname="hibernate.format_sql">true</property> <propertyname="dialect">org.hibernate.dialect.MySQLDialect</property> <propertyname="connection.url"><!—使用mysql數(shù)據(jù)庫(kù)所用的URL和數(shù)據(jù)庫(kù)字符的設(shè)置--> jdbc:mysql://:3306/angd?useUnicode=true&characterEncoding=utf8 </property> <!--所使用的數(shù)據(jù)庫(kù)的用戶名和密碼--> <propertyname="connection.username">root</property> <propertyname="connection.password"></property> <propertyname="connection.driver_class">com.mysql.jdbc.Driver</property><!—使用到的實(shí)體類映射文件路徑--> <mappingresource="com/tarena/bookshop/entity/User.hbm.xml"/> <mappingresource="com/tarena/bookshop/entity/UserItem.hbm.xml"/> <mappingresource="com/tarena/bookshop/entity/Message.hbm.xml"/> </session-factory></hibernate-configuration>部分?jǐn)?shù)據(jù)庫(kù)表的結(jié)構(gòu)設(shè)計(jì): 表1是對(duì)e_user的描述列名說(shuō)明類型備注userid用戶IDint不允許空,主健username用戶姓名varchar不允許空password用戶密碼varchar不允許空 表2是對(duì)e_user_item的描述列名說(shuō)明類型備注user_item_id收貨人每項(xiàng)IDint不允許空,主健item_name收貨人的名字varchar可以為空item_address收貨人的地址varchar可以為空item_postcode收貨人的郵編varchar可以為空item_officephone固定電話varchar可以為空item_mobilephone移動(dòng)電話varchar可以為空item_email收貨人人郵箱varchar可以為空userid用戶IDint不允許空,外健 表3是對(duì)e_message的描述列名說(shuō)明類型備注messageId留言IDint不允許空,主健tile標(biāo)題varchar不允許空content留言信息varchar不允許空部分?jǐn)?shù)據(jù)庫(kù)建表語(yǔ)句:#Host:localhostDatabase:angd##Serverversion5.0.15-nt--DROPDATABASEIFEXISTS`angd`;--CREATEDATABASE`tarena`/*!40100DEFAULTCHARACTERSETgbk*/;--USE`angd`;droptablee_message;droptablee_user_item;droptablee_user;####Tablestructurefortablee_user#CREATETABLE`e_user`(`userid`int(11)NOTNULLauto_increment,`username`varchar(30)NOTNULL,`password`varchar(15)defaultNULL,`createtime`datedefaultNULL,`state`int(11)default'0',`role`int(11)default'0',PRIMARYKEY(`userid`))DEFAULTCHARACTERSETutf8;##Dumpingdatafortablee_user###Tablestructurefortablee_user_item#CREATETABLE`e_user_item`(`user_item_id`int(11)NOTNULLauto_increment,`item_name`varchar(30)defaultNULL,`item_address`varchar(100)defaultNULL,`item_postcode`varchar(10)defaultNULL,`item_officephone`varchar(50)defaultNULL,`item_mobilephone`varchar(20)defaultNULL,`item_email`varchar(50)defaultNULL,`userid`int(12)NOTNULL,PRIMARYKEY(`user_item_id`),KEY`userid`(`userid`))DEFAULTCHARACTERSETutf8;createtablee_message(messageIdintegerauto_increment,tilevarchar(32),content varchar(32),primarykey(messageId));(3)網(wǎng)站前臺(tái)首頁(yè)的運(yùn)行結(jié)果如圖1所示:圖1首頁(yè)主要是向用戶展示書店的書籍,并利用分頁(yè)技術(shù)顯示多余的書籍.在頭部的左上角顯示用戶的狀態(tài).顯示主頁(yè)的JSP頁(yè)面如下,他是通過form表單向Action傳送數(shù)據(jù),Action端利用request接送數(shù)據(jù). <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@pageimport="com.ahut.bookshop.entity.Product"%><!--jsp:directive.pageimport="com.tarena.bookshop.entity.Product"/--><%@taglibprefix="c"uri="/jsp/jstl/core"%><%@taglibprefix="html"uri="/tags-html"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html> <head> <metahttp-equiv="Content-Language"content="zh-cn"> <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <metaname="description"content="雪域書城"> <title>雪域書城</title> <LINKhref="<%=request.getContextPath()%>/css/style.css" rel=stylesheet> <scriptlanguage="JavaScript" src="<%=request.getContextPath()%>/js/tarena.js"></script> </head> <bodybackground="<%=request.getContextPath()%>/images/bg.gif" onLoad="MM_preloadImages('<%=request.getContextPath()%>/images/index_on.gif','<%=request.getContextPath()%>/images/reg_on.gif','<%=request.getContextPath()%>/images/order_on.gif','<%=request.getContextPath()%>/images/top/topxmas/jp_on.gif','<%=request.getContextPath()%>/images/top/topxmas/download_on.gif','<%=request.getContextPath()%>/images/top/topxmas/bbs_on.gif','<%=request.getContextPath()%>/images/top/topxmas/designwz_on.gif')" topmargin="0"leftmargin="0"rightmargin="0"bottommargin="0"> <jsp:includeflush="true"page="/common/header.jsp"></jsp:include> <tablecellspacing=1cellpadding=3align=centerwidth="90%" class=tableBorder2> </table> <br> <formmethod="post"name="searchform" action="<%=request.getContextPath()%>/page/product.do"> <tablecellpadding=3cellspacing=1align=centerwidth="90%" class=tableborder1> <tr> <tdvalign=middlealign=centerheight=25 background="<%=request.getContextPath()%>/images/top_r.gif"width=""> <fontcolor="000000"face="隸書"size=3><b>搜索</b></font> </td> </tr> <tr> <tdclass=tablebody2valign=middlealign=centerwidth="" height="30"> 搜索: <inputtype="text"name="text"maxlength="30"/> <inputtype="radio"name="radio"value="author"/> 作者名 <inputtype="radio"name="radio"value="bookname"/> 書名 <inputtype="radio"name="radio"value="printer"/> 出版社 <inputtype="radio"name="radio"value="createtime"/> 出版日期 <selectname="catalog"> <optionvalue="0"selected>--種類--</option> <optionvalue="1">程序設(shè)計(jì)</option> <optionvalue="2">文學(xué)書籍</option> <optionvalue="3">英語(yǔ)書籍</option> </select> 種 類 <inputtype="hidden"name="method"value="searchProduct"> <inputtype="button"value="開始搜索"class="button" onclick="javascript:searchform.submit();"/> </td> </tr> </table> </form> <tablecellspacing=1cellpadding=3align=centerwidth="90%" class=tableBorder2> <tr> <tdheight=25valign=middle> <imgsrc="<%=request.getContextPath()%>/images/Forum_nav.gif" align="absmiddle"> <fontcolor="">共有${size}個(gè)結(jié)果:</font> </td> </tr> </table> <br> <!--hrcolor="red"width="97%"--> <tablewidth="100" height="60%" align="center" class=tableborder1> <!--tr> <tdvalign=middlealign=centerheight=25 background="<%=request.getContextPath()%>/images/bg2.gif"width=""> <fontcolor="#ffffff"><b>序號(hào)</b></font> </td> <tdvalign=middlealign=centerheight=25 background="<%=request.getContextPath()%>/images/bg2.gif"width=""> <fontcolor="#ffffff"><b>產(chǎn)品名稱</b></font> </td> <tdvalign=middlealign=centerheight=25 background="<%=request.getContextPath()%>/images/bg2.gif"width=""> <fontcolor="#ffffff"><b>價(jià)格</b></font> </td> <tdvalign=middlealign=centerheight=25 background="<%=request.getContextPath()%>/images/bg2.gif"width=""> <fontcolor="#ffffff"><b>操作</b></font> </td> </tr--> <c:iftest="${!emptyproducts}"> <c:forEachvar="product"items="${products}"varStatus="status"> <trheight="40"> <!--tdclass=tablebody2valign=middlealign=centerwidth=""> ${status.count} </td--> <tdrowspan="2"width="100"> <a href='<%=request.getContextPath()%>/page/product.do?method=listDetail&productid=${ductid}'> <imgborder="0" src="<%=request.getContextPath()%>/${product.imagepath}" width="127"height="180"> </a> </td> <tdclass=tablebody1align=leftalign=centerwidth="40%"><h1>書名: <a href='<%=request.getContextPath()%>/page/product.do?method=listDetail&productid=${ductid}'>${} </a> </h1> </td> <tdclass=tablebody2align=leftalign=centerwidth="20%">作者: ${product.author} </td> <tdclass=tablebody2align=leftalign=centerwidth="20%">價(jià)格:¥ ${product.price} 元 </td> <tdclass=tablebody1align=leftalign=centerwidth="20%">操作: <!--將商品加入購(gòu)物車中--> <a href="<%=request.getContextPath()%>/biz/cart.do?method=addCart&productid=${ductid}"> <imgborder="0" src="<%=request.getContextPath()%>/images/car_new.gif" width="97"height="18"></a> </td> </tr> <trheight="100"> <tdcolspan="4"class=tablebody2valign=middlealign="left"width="">簡(jiǎn)介: ${product.description} </td> </tr> <trheight="20"bgcolor="#EFEFEF"> <tdcolspan="5"> </td> </tr> </c:forEach> <tr> <!--這一行專門用來(lái)做分頁(yè)顯示的--> <tdclass="tablebody2"colspan="5"align="center"> ${navigation} </td> </tr> </c:if> </table> <!--當(dāng)沒有搜索到結(jié)果時(shí),應(yīng)給用戶一個(gè)友好的提示--> <c:iftest="${emptyproducts}"> <tablecellpadding=3cellspacing=1align=centerwidth="97%" > <tr> <tdclass=tablebody2align=center> <fontcolor="red"><h2>對(duì)不起!沒有搜索到您需要的商品!請(qǐng)重試!</h2></font> </td> </tr> </table> </c:if> <jsp:includeflush="true"page="/common/footer.jsp"></jsp:include> </body></html>6.1.2用戶管理模塊對(duì)于前臺(tái)頁(yè)面的用戶來(lái)說(shuō),用戶管理主要是注冊(cè),登錄;以及登錄以后的修改密碼和查看用戶資料。其流程圖如圖所示:首頁(yè)登錄首頁(yè)登錄登錄修改密碼查看用戶資料注冊(cè)注冊(cè)NYYYNN(1)用戶注冊(cè)當(dāng)用戶第一次登錄時(shí)首先要注冊(cè),成為會(huì)員后,才可以使用購(gòu)物車購(gòu)買物品,進(jìn)行留言.用戶可以通過單擊首頁(yè)的注冊(cè)按鍵來(lái)打開注冊(cè)頁(yè)面進(jìn)行會(huì)員注冊(cè)操作,用戶注冊(cè)頁(yè)面的運(yùn)行結(jié)果如圖2所示.圖2注冊(cè)用戶名如果已經(jīng)存在,則給出用戶提示信息,保證用戶在本系統(tǒng)的用戶名都是獨(dú)一無(wú)二的.并利用驗(yàn)證碼技術(shù)防止惡意注冊(cè).(2)用戶登錄用戶登錄窗口的超鏈接設(shè)置在首頁(yè)上,由超鏈接轉(zhuǎn)到用戶登錄界面,主要用來(lái)接收用戶輸入的用戶名和密碼,并更新用戶在網(wǎng)站中的狀態(tài)信息.會(huì)員登錄窗口的運(yùn)行結(jié)果如圖3所示:圖3若用戶名或密碼錯(cuò)誤給出相應(yīng)的提示信息,若登錄成功則進(jìn)入主也面,此時(shí)在頁(yè)面頭部右上角會(huì)出現(xiàn)登錄的用戶名.:6.1.3修改密碼:用戶資料修改在前臺(tái)主頁(yè)右上角,單擊“修改密碼”鏈接,進(jìn)入用戶修改密碼頁(yè)面.利用舊密碼再次驗(yàn)證用戶的登錄密碼,通過兩此輸入新密碼確認(rèn)用戶的新密碼.若成功則將用戶的新密碼更新到數(shù)據(jù)庫(kù);不成功則給出相應(yīng)的錯(cuò)誤信息.其運(yùn)行結(jié)果如圖4:所示.:圖4其核心代碼如下:publicActionForwardupdatepassword(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ UserServiceuserService=newUserService(); Stringpassword1=request.getParameter("password1").trim(); Stringpassword2=request.getParameter("password2").trim(); Stringpassword3=request.getParameter("password3").trim(); HttpSessionsession=request.getSession(); Useruser=(User)session.getAttribute("user"); if(!password1.equals(user.getPassword())){ Stringmessage="舊密碼錯(cuò)誤,請(qǐng)重新輸入"; request.setAttribute("message",message); returnmapping.findForward("updatepassword"); }elseif(!password2.equals(password3)){ Stringmessage="兩次密碼輸入不一致,請(qǐng)重新輸入"; request.setAttribute("message",message); returnmapping.findForward("updatepassword"); } user.setPassword(password2); userService.modifyUser(user); returnmapping.findForward("updatepassword_success"); }6.1.4購(gòu)物車模塊在超市購(gòu)物,可以根據(jù)自己的需要將很多的物品挑選到購(gòu)物車(籃)中。而在網(wǎng)上虛擬的購(gòu)物商城中,通常都會(huì)采用一種被稱做“購(gòu)物車”的技術(shù)來(lái)模擬現(xiàn)實(shí)生活。這種技術(shù)用起來(lái)十分方便,不但可以隨時(shí)添加,查看,修改,清空購(gòu)物車中的內(nèi)容,還可以隨時(shí)去收銀臺(tái)結(jié)帳。游客和登錄用戶都可以在首頁(yè)瀏覽本系統(tǒng)的商品,并查看商品詳細(xì)信息。要想購(gòu)買商品必須先登錄。本系統(tǒng)為每個(gè)登錄用戶提供一個(gè)購(gòu)物車,用戶在本系統(tǒng)購(gòu)買商品時(shí)可以像在超市中一樣把要買的商品放入購(gòu)物車。在購(gòu)物車界面用戶可以選擇繼續(xù)購(gòu)物,刪除不滿意的商品,最后確認(rèn)定單進(jìn)入定單管理界面。其流程圖如圖所示:首頁(yè)(瀏覽商品)登錄首頁(yè)(瀏覽商品)登錄登錄加入購(gòu)物車刪除一個(gè)商品繼續(xù)購(gòu)物確認(rèn)定單提交定單(1)添加購(gòu)物車、添加購(gòu)物車就是把用戶選中的商品放在購(gòu)物車中。當(dāng)用戶在前臺(tái)首頁(yè)中單擊商品展示區(qū)的“”按鈕時(shí),系統(tǒng)會(huì)將該商品的詳細(xì)信息展示在查看物品清單頁(yè)中,運(yùn)行結(jié)果如圖5所示:圖5可以修改書籍的數(shù)量,然后點(diǎn)保存修改就可.點(diǎn)擊"確認(rèn)定單"進(jìn)入定單管理模塊.其代碼實(shí)現(xiàn)如下所示: <tablecellpadding=3cellspacing=1align=centerclass=tableborder1> <tr> <tdvalign=middlealign=centerheight=25background="<%=request.getContextPath()%>/images/top_r.gif" width=""> <fontcolor="blue"><b>序號(hào)</b></font> </td> <tdvalign=middlealign=centerheight=25background="<%=request.getContextPath()%>/images/top_r.gif" width=""> <fontcolor="blue"><b>產(chǎn)品名稱</b></font> </td> <tdvalign=middlealign=centerheight=25background="<%=request.getContextPath()%>/images/top_r.gif" width=""> <fontcolor="blue"><b>價(jià)格</b></font> </td> <tdvalign=middlealign=centerheight=25background="<%=request.getContextPath()%>/images/top_r.gif" width=""> <fontcolor="blue"><b>數(shù)量</b></font> </td> <tdvalign=middlealign=centerheight=25background="<%=request.getContextPath()%>/images/top_r.gif" width=""> <fontcolor="blue"><b>合計(jì)</b></font> </td> <tdvalign=middlealign=centerheight=25background="<%=request.getContextPath()%>/images/top_r.gif" width=""> <fontcolor="blue"><b>操作</b></font> </td> </tr> <c:iftest="${!emptyducts}"> <c:forEachvar="carproducts"items="${cart.cartProducts}"varStatus="status"> <tr> <formmethod="post" action="<%=request.getContextPath()%>/biz/cart.do"name="f1"> <inputtype="hidden"name="productid"value="${ductid}"> <inputtype="hidden"name="number"value="${carproducts.num}"> <inputtype="hidden"name="method"value="modify"> <tdclass=tablebody2valign=middlealign=centerwidth=""> ${status.count} </td> <tdclass=tablebody1valign=middlewidth=""> ${} </td> <tdclass=tablebody2valign=middlealign=centerwidth=""> ${duct.price} </td> <tdclass=tablebody1valign=middlealign=centerwidth=""> <inputtype="text"name="num"value="${carproducts.num}"size="4" onblur="javascript:if(this.value<1){alert('對(duì)不起,產(chǎn)品數(shù)量不能小于1');this.focus();}else{number.value=this.value;}"/> </td> <tdclass=tablebody2valign=middlealign=leftwidth=""> ${carproducts.total} </td> <tdclass=tablebody1valign=middlealign=centerwidth=""> <inputtype="button"value="刪除"class="button" onclick="ja
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 標(biāo)準(zhǔn)砂石購(gòu)銷合同文本
- 糧油采購(gòu)及供應(yīng)協(xié)議
- 購(gòu)銷攝像機(jī)合同
- 飼料添加劑采購(gòu)合同的合同風(fēng)險(xiǎn)防范
- 車庫(kù)出租合同書范例
- 云服務(wù)遷移合同
- 項(xiàng)目服務(wù)合同的法律責(zé)任認(rèn)定
- 煤礦安全文明生產(chǎn)與質(zhì)量標(biāo)準(zhǔn)化
- 自駕車服務(wù)暢行無(wú)阻
- 家居采購(gòu)合同的簽訂要點(diǎn)
- 全國(guó)第三屆職業(yè)技能大賽(數(shù)字孿生應(yīng)用技術(shù))選拔賽理論考試題庫(kù)(含答案)
- 應(yīng)用數(shù)理統(tǒng)計(jì)知到智慧樹章節(jié)測(cè)試課后答案2024年秋中國(guó)農(nóng)業(yè)大學(xué)
- 大國(guó)三農(nóng)II-農(nóng)業(yè)科技版智慧樹知到期末考試答案章節(jié)答案2024年中國(guó)農(nóng)業(yè)大學(xué)
- JBT 1472-2023 泵用機(jī)械密封 (正式版)
- 二級(jí)公立醫(yī)院績(jī)效考核三級(jí)手術(shù)目錄(2020版)
- 6人小品《沒有學(xué)習(xí)的人不傷心》臺(tái)詞完整版
- 部編本小學(xué)五年級(jí)上冊(cè)語(yǔ)文期末考試(選擇題)專項(xiàng)訓(xùn)練題及答案
- 讀《讓兒童在問題中學(xué)數(shù)學(xué)》有感范文三篇
- 陳述句改成雙重否定句(課堂PPT)
- 人教版六年級(jí)數(shù)學(xué)上冊(cè)總復(fù)習(xí)教案
- 自閉癥兒童行為檢核表學(xué)前版
評(píng)論
0/150
提交評(píng)論