基于SSM技術(shù)的分布式銷售平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)計(jì)算機(jī)專業(yè)_第1頁(yè)
基于SSM技術(shù)的分布式銷售平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)計(jì)算機(jī)專業(yè)_第2頁(yè)
基于SSM技術(shù)的分布式銷售平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)計(jì)算機(jī)專業(yè)_第3頁(yè)
基于SSM技術(shù)的分布式銷售平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)計(jì)算機(jī)專業(yè)_第4頁(yè)
基于SSM技術(shù)的分布式銷售平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)計(jì)算機(jī)專業(yè)_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

本科論文目錄TOC\o"1-3"\h\u15009摘要 I4817Abstract II134521緒論 188081.1課題研究背景與意義 1107171.2國(guó)內(nèi)外研究現(xiàn)狀 14651.2.1國(guó)外研究現(xiàn)狀 1191171.2.2國(guó)內(nèi)研究現(xiàn)狀 2273641.3本章小結(jié) 2216782工程開發(fā)技術(shù)介紹 392732.1Web前端技術(shù)棧 3286892.1.1HTML&CSS 3136482.1.2jQuery 388772.1.3JSP 3156072.2服務(wù)端開發(fā)技術(shù)棧 3148262.2.1MCV開發(fā)模式 3181292.2.2SSM框架 480112.3項(xiàng)目平臺(tái)框架相關(guān)技術(shù) 5145872.4數(shù)據(jù)庫(kù) 6247042.5本章小結(jié) 6129023系統(tǒng)分析 7124873.1可行性分析 7125733.2功能需求分析 7303673.2.1前端功能模塊 7265583.2.2后端功能模塊 7204483.2.3數(shù)據(jù)庫(kù)分析 819663.3本章小結(jié) 8291064系統(tǒng)設(shè)計(jì) 953444.1總體業(yè)務(wù)流程 9238964.2系統(tǒng)總體框架設(shè)計(jì) 9114794.3業(yè)務(wù)模塊的設(shè)計(jì) 10181334.4ER圖設(shè)計(jì) 1155934.5數(shù)據(jù)庫(kù)表的設(shè)計(jì) 11282874.6本章小結(jié) 14321045系統(tǒng)實(shí)現(xiàn) 1521255.1系統(tǒng)開發(fā)環(huán)境 15312795.2系統(tǒng)工程結(jié)構(gòu) 151355.3系統(tǒng)主要模塊實(shí)現(xiàn) 16241855.3.1SSO單點(diǎn)登錄系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 1689305.3.2網(wǎng)站內(nèi)容管理模塊的設(shè)計(jì)與實(shí)現(xiàn) 17264545.3.3商品管理模塊設(shè)計(jì)與實(shí)現(xiàn) 2080935.3.4全文搜索系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 21301605.3.5訂單管理模塊設(shè)計(jì)與實(shí)現(xiàn) 2416215.3.6購(gòu)物車模塊設(shè)計(jì)與實(shí)現(xiàn) 25109735.4本章小結(jié) 28196266系統(tǒng)測(cè)試 29263556.1測(cè)試目的 29178366.2系統(tǒng)功能測(cè)試 29275266.3系統(tǒng)性能測(cè)試 30107136.4本章小結(jié) 3215721結(jié)論 3315498致謝 3424937參考文獻(xiàn) 35本科論文摘要在科技發(fā)達(dá)的今天,網(wǎng)上購(gòu)物打破了傳統(tǒng)銷售的模式,實(shí)現(xiàn)了一站式的消費(fèi)理念。網(wǎng)上購(gòu)物的優(yōu)勢(shì):商品種類齊全可以買到本地所缺的商品、價(jià)格便宜、節(jié)省時(shí)間并且提供送貨上門的服務(wù),大大提高了購(gòu)物效率,使用戶的購(gòu)物體驗(yàn)提高。相對(duì)于傳統(tǒng)市場(chǎng)的零售模式,商家的租賃費(fèi)用大大減少,商品倉(cāng)庫(kù)儲(chǔ)的費(fèi)用和人工費(fèi)用也都相對(duì)的減少了很多。本文主要以學(xué)習(xí)研究為目的,將基于JavaEE的Web開發(fā)平臺(tái),采用B/S架構(gòu),設(shè)計(jì)實(shí)現(xiàn)一款基于SSM(Spring+SpringMVC+Mybatis)技術(shù)的分布式銷售平臺(tái)。系統(tǒng)將主要從三大方面進(jìn)行研究:技術(shù)選型。分析當(dāng)前主流的開發(fā)技術(shù),分析使用哪種框架能滿足本系統(tǒng)的的要求。當(dāng)網(wǎng)站的用戶量、數(shù)據(jù)量和訪問(wèn)量較大時(shí),網(wǎng)站服務(wù)器容易產(chǎn)生負(fù)載壓力大的問(wèn)題。為解決這一問(wèn)題,本系統(tǒng)將采用分布式思想,在保證系統(tǒng)業(yè)務(wù)功能的同時(shí),實(shí)現(xiàn)服務(wù)層和表現(xiàn)層的解耦,可以提高網(wǎng)站的并發(fā)訪問(wèn)量,保證網(wǎng)站的高性能;對(duì)系統(tǒng)中的各個(gè)模塊進(jìn)行分析與設(shè)計(jì)。通過(guò)調(diào)研,來(lái)確定本項(xiàng)目前后臺(tái)系統(tǒng)分別需要的業(yè)務(wù)功能、設(shè)計(jì)出主要的功能模塊并完成系統(tǒng)業(yè)務(wù)邏輯的編寫。根據(jù)項(xiàng)目系統(tǒng)的總體需求設(shè)計(jì)數(shù)據(jù)庫(kù)表;對(duì)系統(tǒng)中的各個(gè)模塊進(jìn)行實(shí)現(xiàn)并對(duì)各模塊功能進(jìn)行測(cè)試。最終完成能滿足用戶的,一個(gè)功能較為完善的網(wǎng)上銷售平臺(tái)。關(guān)鍵詞:網(wǎng)上商城;SSM框架;分布式架構(gòu)

AbstractToday,withthedevelopmentofscienceandtechnology,onlineshoppinghasbrokenthetraditionalsalesmodelandrealizedtheconceptofone-stopconsumption.Advantagesofonlineshopping:withacompleterangeofcommodities,youcanbuythecommoditiesthatarenotavailableinthelocalmarket,withalowprice,time-savinganddoor-to-doordeliveryservice,whichgreatlyimprovestheshoppingefficiencyandimprovestheshoppingexperienceofusers.Comparedwiththeretailmodeinthetraditionalmarket,theleasingcostofmerchantsisgreatlyreduced,andthestoragecostandlaborcostofcommoditiesarealsorelativelyreduced.Inordertofacilitatetheresearch,thispaperdevelopedaWebdevelopmentplatformbasedonJavaEE,usingB/Sarchitecture,designedandimplementedadistributedsalesplatformbasedonSSM(Spring+springMVC+mybatis)technology.Thesystemwillbemainlystudiedfromthreeaspects:technologyselection.Analysisofthecurrentmainstreamdevelopmenttechnology,analysisoftheuseofwhichframeworkcanmeettherequirementsofthesystem.Whentheamountofusers,dataandvisitsoftheWebsiteislarge,theWebsiteserveriseasytoproducetheproblemofheavyloadpressure.Inordertosolvethisproblem,thesystemwilladoptthedistributedidea,whileensuringthesystembusinessfunction,realizethedecouplingofservicelayerandperformancelayer,improvetheconcurrentaccessrateoftheWebsite,andensurethehighperformanceoftheWebsite;analyzeanddesigneachmoduleofthesystem.Throughtheresearch,thebusinessfunctionsofthecurrentbackgroundsystemaredetermined,themainfunctionmodulesaredesigned,andthebusinesslogicofthesystemiscompleted.Accordingtotheoverallrequirementsoftheprojectsystem,thedatabasetableisdesigned,andthemodulesinthesystemarerealized.Finally,afullyfunctionalonlinesalesplatformcanmeettheneedsofusers.Keywords:e-commerce;SSMframework;Distributedarchitecture1緒論課題研究背景與意義隨著各種購(gòu)物平臺(tái)的出現(xiàn),其中就包括淘寶網(wǎng),天貓商城,京東商城等業(yè)界的標(biāo)桿,這也意味著網(wǎng)上購(gòu)物被人們接受,并成為了人們購(gòu)物的首選方式。網(wǎng)絡(luò)購(gòu)物已經(jīng)成為了社會(huì)發(fā)展的必然趨勢(shì)REF_Ref19276\r\h[1]。由于國(guó)內(nèi)各大企業(yè)之間的良性競(jìng)爭(zhēng)也進(jìn)一步促進(jìn)國(guó)內(nèi)電子商務(wù)市場(chǎng)的發(fā)展,由此可以看得出來(lái),中國(guó)的電子商務(wù)市場(chǎng)發(fā)展前景一片光明。B2C是一種電商銷售模式。B2C是企業(yè)對(duì)消費(fèi)者的簡(jiǎn)稱,這種商務(wù)模式主要以網(wǎng)絡(luò)零售為主REF_Ref19404\r\h[2]。商家在互聯(lián)網(wǎng)上將商品賣給用戶,互聯(lián)網(wǎng)絡(luò)是銷售商品的主要媒介REF_Ref6722\r\h[3]。中國(guó)已成為全世界最大的“B2C電子商務(wù)”市場(chǎng)REF_Ref12954\r\h[4]。除去阿里巴巴、京東等這種電子商務(wù)界的龍頭外,越來(lái)越多的品牌企業(yè)也試圖從電子商務(wù)這個(gè)有著巨大潛力的市場(chǎng)中挖尋一份商機(jī),紛紛建立了自己品牌的購(gòu)物系統(tǒng),購(gòu)物平臺(tái)。本文的意義在于,通過(guò)結(jié)合多項(xiàng)目前成熟的流行的技術(shù),結(jié)合實(shí)際生活中的應(yīng)用場(chǎng)景,學(xué)習(xí)使用目前優(yōu)秀的大型電商網(wǎng)站的規(guī)范化開發(fā)流程,采用當(dāng)下流行的開發(fā)框架和開發(fā)技術(shù)來(lái)完成實(shí)現(xiàn)一個(gè)業(yè)務(wù)功能完備,系統(tǒng)性能良好的網(wǎng)上銷售平臺(tái)。國(guó)內(nèi)外研究現(xiàn)狀國(guó)外研究現(xiàn)狀美國(guó)知名的網(wǎng)上商城亞馬遜和易貝是在1995年成立的。這宣告著一種新型的經(jīng)濟(jì)活動(dòng)模式出現(xiàn)了。伴隨著社交軟件的出現(xiàn)和興起,這種經(jīng)濟(jì)活動(dòng)模式迅速普及全球。截止到2017年,facebook在電子商務(wù)平臺(tái)上推動(dòng)了90%的社交媒體銷售REF_Ref24827\r\h[5]。目前,全球電子商務(wù)市場(chǎng)呈現(xiàn)出了以下幾個(gè)特點(diǎn):不同地區(qū)之間的差距正在縮小。電子商務(wù)在歐洲和美洲起步較早,涉及范圍廣。而在亞洲等地區(qū),雖然起步要稍晚于歐美等地區(qū),但是亞洲卻擁有著龐大的用戶量,因此電子商務(wù)在這里得到了快速發(fā)展。規(guī)模不斷擴(kuò)大。有報(bào)告顯示,2017年,美國(guó)在網(wǎng)上消費(fèi)約4600億美元REF_Ref23515\r\h[6]。到2022年,電子商務(wù)將占美國(guó)零售總額的17%。各企業(yè)之間并購(gòu)趨于頻繁。隨著各方資本勢(shì)力的相互切磋,為了共同更好的發(fā)展,獲取最大的利益,許多競(jìng)爭(zhēng)對(duì)手選擇了合作,也有許多企業(yè)在競(jìng)爭(zhēng)中倒下被迫合并,因此出現(xiàn)了電子商務(wù)市場(chǎng)不斷地集中的狀況。共享經(jīng)濟(jì)出現(xiàn)。近年來(lái),共享經(jīng)濟(jì)突然出現(xiàn),隨著共享經(jīng)濟(jì)的迅速的發(fā)展共享經(jīng)濟(jì)涉及的領(lǐng)域也不斷拓寬。國(guó)內(nèi)研究現(xiàn)狀電子商務(wù)市場(chǎng)在中國(guó)的發(fā)展是具有相當(dāng)大的優(yōu)勢(shì)的,首先,從人數(shù)上來(lái)看,根據(jù)調(diào)查資料顯示,截至2019年底,中國(guó)大陸總?cè)丝跒?4.05億,而其中網(wǎng)民總數(shù)達(dá)到了半數(shù)以上。其次,從計(jì)算機(jī)技術(shù)來(lái)看,為提高軟件系統(tǒng)的性能,增加用戶的良好體驗(yàn)感,越來(lái)越多的公司開始從技術(shù)方面入手進(jìn)行研究,經(jīng)過(guò)不懈的努力,許多優(yōu)秀的技術(shù)紛紛出現(xiàn)。以業(yè)界著名的阿里巴巴公司為首,該公司使用的技術(shù)在國(guó)內(nèi)已經(jīng)成為了業(yè)界的標(biāo)桿。1998年中國(guó)制造網(wǎng)、阿里巴巴等企業(yè)出現(xiàn)并在電子商務(wù)市場(chǎng)大放光彩。隨后2003年淘寶網(wǎng)、京東商城等也迅速崛起,至此中國(guó)的電子商務(wù)市場(chǎng)開啟了快速發(fā)展模式。根據(jù)所查詢的資料顯示,目前我國(guó)的電子商務(wù)市場(chǎng)展現(xiàn)出了下面幾個(gè)特點(diǎn):電子商務(wù)市場(chǎng)的規(guī)模持續(xù)不斷地?cái)U(kuò)張。線上及線下融合的也加快了步伐。農(nóng)村的電子商務(wù)也展露鋒芒。產(chǎn)業(yè)的支撐不斷改進(jìn)提高。新業(yè)態(tài)、新模式接連出現(xiàn)。電子商務(wù)逐漸滲透到各個(gè)不同領(lǐng)域當(dāng)中,隨之使得電子商務(wù)市場(chǎng)所創(chuàng)造出的交易金額不斷攀升,這導(dǎo)致電子商務(wù)的對(duì)社會(huì)的各個(gè)方面影響越來(lái)越大。這也標(biāo)志著電子商務(wù)正一步步成為我國(guó)經(jīng)濟(jì)發(fā)展的重要模式之一。1.3本章小結(jié)本章主要結(jié)合了當(dāng)下的時(shí)代背景,對(duì)課題的研究背景和現(xiàn)實(shí)意義進(jìn)行了簡(jiǎn)述,闡述電子商務(wù)的發(fā)展前景和國(guó)內(nèi)外發(fā)展情況,結(jié)合以上所述,可知電子商務(wù)市場(chǎng)的發(fā)展擁有很好的前景。2工程開發(fā)技術(shù)介紹2.1Web前端技術(shù)棧2.1.1HTML&CSSHTML(HyperTextMarkedLanguage)是超文本標(biāo)記語(yǔ)言,使用特定的標(biāo)簽網(wǎng)頁(yè)中要顯示的數(shù)據(jù)內(nèi)容進(jìn)行描述,生成HTML文檔,再然后通過(guò)瀏覽器進(jìn)行渲染最后就按設(shè)計(jì)所期望的形式展示了數(shù)據(jù),比如說(shuō)展示網(wǎng)頁(yè)當(dāng)中的圖片的大小,文本的顏色等REF_Ref14242\r\h[7]。CSS(CascadingStyleSheets)是層疊樣式表。它對(duì)頁(yè)面中元素的內(nèi)容和樣式進(jìn)行了分離,讓設(shè)計(jì)人員輕松的控制網(wǎng)站頁(yè)面中的文字和圖片等元素,更方便對(duì)頁(yè)面進(jìn)行設(shè)計(jì)美化,使代碼更簡(jiǎn)練,縮短瀏覽器的加載時(shí)間REF_Ref20084\r\h[8]。2.1.2jQueryjQuery是一個(gè)JavaScript框架,快速而簡(jiǎn)潔是它主要的特點(diǎn)。為了更方便的使用,它對(duì)JavaScript進(jìn)行了封裝,HTML文檔操作、動(dòng)畫設(shè)計(jì)、事件處理和Ajax交互等變得更加簡(jiǎn)潔。jQuery兼容各種主流瀏覽器REF_Ref22536\r\h[9]。2.1.3JSPJSP是使用Java語(yǔ)言編寫的一種腳本語(yǔ)言,它主要的作用是可以實(shí)現(xiàn)網(wǎng)頁(yè)動(dòng)態(tài)化。它可以進(jìn)行對(duì)客戶端發(fā)來(lái)的請(qǐng)求進(jìn)行響應(yīng)處理,并將處理結(jié)果動(dòng)態(tài)的生成網(wǎng)頁(yè)展示給請(qǐng)求對(duì)象。2.2服務(wù)端開發(fā)技術(shù)棧2.2.1MCV開發(fā)模式MVC(Model-View-Controller)設(shè)計(jì)模式就是將軟件系統(tǒng)大致分為模型層(Model)、視圖層(View)和控制器(Controller)三層。模型層(Model):負(fù)責(zé)系統(tǒng)中業(yè)務(wù)邏輯的處理,對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行一系列的添加、刪除、修改和查看等操作,但主要還是存取對(duì)象的操作。模型層是MVC設(shè)計(jì)模式中最重要的部分。視圖層(View):負(fù)責(zé)將數(shù)據(jù)展示到前臺(tái)給用戶看。控制器(Controller):負(fù)責(zé)接收請(qǐng)求并響應(yīng),即從視圖層中讀取到用戶輸入的數(shù)據(jù),然后將數(shù)據(jù)發(fā)送給模型層然后進(jìn)行處理,在此過(guò)程中Controller并不參與數(shù)據(jù)處理。MVC設(shè)計(jì)模式分離了實(shí)現(xiàn)了前臺(tái)頁(yè)面的展示和后臺(tái)業(yè)務(wù)的處理,降低了模塊間的耦合度。達(dá)到了系統(tǒng)的設(shè)計(jì)目標(biāo)和整體要求REF_Ref21477\r\h[10]。MVC設(shè)計(jì)模式的組件關(guān)系和功能如圖2.1所示。圖2.1MVC組件關(guān)系和功能圖2.2.2SSM框架SSM框架,即Spring、SpringMVC和MyBatis,是現(xiàn)在主流的Web框架,高效的性能和輕量級(jí)的特點(diǎn)成為開發(fā)電子商務(wù)網(wǎng)站的不二選擇REF_Ref23087\r\h[11]。Spring就是一個(gè)一站式的、輕量級(jí)并且開放源代碼的框架。Spring的核心思想就是面向切面(AOP)和控制反轉(zhuǎn)(IOC)。企業(yè)級(jí)的應(yīng)用系統(tǒng)通常都十分的復(fù)雜,Spring就是為了解決這一問(wèn)題而產(chǎn)生的。Spring框架的總體結(jié)構(gòu)如圖2.2所示。圖2.2Spring框架總體結(jié)構(gòu)圖SpringMVC就是在MVC設(shè)計(jì)模式的基礎(chǔ)之上進(jìn)行了優(yōu)化。SpringMVC也屬于Spring框架。如果開發(fā)Web項(xiàng)目時(shí)使用了Spring框架,就可以很方便的組合SpringMVC,基本上實(shí)現(xiàn)了零配置REF_Ref30121\r\h[12]。SpringMVC的工作流程如圖2.3所示。圖2.3SpringMVC工作流程圖MyBatis就是一個(gè)基于Java的持久層框架。它對(duì)JDBC的操作進(jìn)行了封裝,同時(shí)支持自定義的SQL語(yǔ)句,它的目的是讓使用者不再對(duì)注冊(cè)數(shù)據(jù)庫(kù)驅(qū)動(dòng),創(chuàng)建連接等操作費(fèi)神,而是去只專注于SQL語(yǔ)句。簡(jiǎn)單來(lái)說(shuō)MyBatis簡(jiǎn)化了數(shù)據(jù)庫(kù)的使用,使數(shù)據(jù)庫(kù)操作部分變得更加簡(jiǎn)單。2.3項(xiàng)目平臺(tái)框架相關(guān)技術(shù)Nginx是一個(gè)輕量級(jí)的,并發(fā)能力很強(qiáng)的Web服務(wù)器,可以提供多種服務(wù)。對(duì)于一個(gè)大型分布式系統(tǒng)來(lái)說(shuō),基本上都存在數(shù)據(jù)過(guò)多,流量較大,高并發(fā)等一系列問(wèn)題。雖然前期可能業(yè)務(wù)量不大,但就長(zhǎng)期發(fā)展考慮來(lái)看巨大的業(yè)務(wù)量是不可避免的,因此服務(wù)器在面對(duì)這些業(yè)務(wù)時(shí)無(wú)論是性能還是穩(wěn)定性上來(lái)說(shuō)都存在著不小的挑戰(zhàn),負(fù)載均衡這一概念也因此出現(xiàn)。本系統(tǒng)將會(huì)使用Nginx來(lái)有效減少系統(tǒng)響應(yīng)的時(shí)間,從而提升大并發(fā)、大數(shù)據(jù)量訪問(wèn)時(shí)的系統(tǒng)性能REF_Ref2886\r\h[14]。Redis是一個(gè)非關(guān)系型(NoSQL)數(shù)據(jù)庫(kù),擁有較高的性能。使用Redis作為分布式緩存能夠高性能地讀取數(shù)據(jù)REF_Ref27482\r\h[15]。它由VMware主持開發(fā),使用ANSIC語(yǔ)言編寫,是目前最流行的鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫(kù)之一REF_Ref946\r\h[16]。本項(xiàng)目系統(tǒng)中將使用Redis作為分布式緩存系統(tǒng),這樣不僅可以減輕數(shù)據(jù)庫(kù)壓力,同時(shí)提升系統(tǒng)本身訪問(wèn)性能,也增加了系統(tǒng)的健壯性和可擴(kuò)展性,使得在系統(tǒng)性能方面得到了極大的提升。Solr是Apache組織下一個(gè)開放源碼的項(xiàng)目,它是基于Lucene的全文搜索服務(wù)器REF_Ref14249\r\h[17]。Solr的底層核心,是對(duì)Lucene的JAR包和倒排索引的技術(shù)進(jìn)行二次開發(fā)。本系統(tǒng)中的全文檢索服務(wù)系統(tǒng)就是通過(guò)Solr部署到服務(wù)器來(lái)完成的。并且本系統(tǒng)將采用SolrCloud分布式集群的方式,提供更優(yōu)化的查詢方式,和更優(yōu)異的檢索性能REF_Ref14320\r\h[18]。Zookeeper是一個(gè)協(xié)調(diào)服務(wù)系統(tǒng),主要用于分布式系統(tǒng)。在系統(tǒng)中,一旦網(wǎng)絡(luò)出現(xiàn)故障,信息傳輸就會(huì)出現(xiàn)問(wèn)題,會(huì)導(dǎo)致消息發(fā)送方不知道消息是否已經(jīng)被接收,解決這個(gè)問(wèn)題的唯一方法就是重新連接消息接收方,詢問(wèn)錯(cuò)誤原因,Zookeeper就是為解決這一問(wèn)題產(chǎn)生的。Dubbo是一個(gè)具有高效性的服務(wù)框架,其實(shí)也就是用來(lái)調(diào)用服務(wù)的中間件。是由阿里巴巴公司主導(dǎo)研發(fā)出來(lái)的。它可以讓程序中的服務(wù)層接口以服務(wù)者與消費(fèi)者的形式在配置文件中注冊(cè),以便遠(yuǎn)程調(diào)用服務(wù)REF_Ref29632\r\h[19]。ActiveMQ是個(gè)開放源碼的消息隊(duì)列系統(tǒng)。本系統(tǒng)采用ActiveMQ,在添加商品信息之后向ActiveMQ發(fā)布消息,索引庫(kù)訂閱此消息,會(huì)將商品信息同步添加到索引庫(kù)中,從而保證了索引庫(kù)與數(shù)據(jù)庫(kù)的一致性REF_Ref7801\r\h[13]。2.4數(shù)據(jù)庫(kù)本系統(tǒng)選擇使用MySQL數(shù)據(jù)庫(kù),MySQL具有體積小、速度快、總體擁有成本低和開放源碼等優(yōu)點(diǎn)REF_Ref28685\r\h[20]。MySQL雖然體積較小但卻可以處理的數(shù)據(jù)達(dá)到千萬(wàn)級(jí),能夠滿足各種中小型企業(yè)使用。為方便操作使用,許多MySQL可視化管理工具隨之出現(xiàn)。本系統(tǒng)將使用Navicat來(lái)進(jìn)行相關(guān)的建表操作。MySQL數(shù)據(jù)庫(kù)是進(jìn)行網(wǎng)上商城系統(tǒng)開發(fā)數(shù)據(jù)存儲(chǔ)的第一選擇REF_Ref9351\r\h[21]。2.5本章小結(jié)本章對(duì)各種技術(shù)進(jìn)行了介紹,前端使用了HTML&CSS、jQuery、JS等,這些技術(shù)在前端開發(fā)中承擔(dān)著不同的角色,共同為前端頁(yè)面提供了服務(wù)REF_Ref14242\r\h[7]。服務(wù)端使用到了MVC開發(fā)模式、SSM框架,以及分布式框架中使用到的重點(diǎn)技術(shù),Nginx負(fù)載均衡技術(shù)、Redis緩存技術(shù)、Solr全文搜索、Zookeeper集群、Dubbo消息中間件和ActiveMQ消息隊(duì)列技術(shù)。3系統(tǒng)分析3.1可行性分析當(dāng)下計(jì)算機(jī)技術(shù)以及互聯(lián)網(wǎng)技術(shù)逐漸成熟并不斷發(fā)展,使得中國(guó)的網(wǎng)民數(shù)量持續(xù)增長(zhǎng),尤其是在今年特殊的疫情期間,人們足不出戶,無(wú)法外出購(gòu)物,于是大多數(shù)人們都選擇了網(wǎng)上購(gòu)物。經(jīng)過(guò)這段時(shí)間,更足以體現(xiàn)出網(wǎng)上購(gòu)物已成為人們?nèi)粘I钪胁豢扇鄙俚囊徊糠?。?006年至今,我國(guó)B2C模式的電子商務(wù)持續(xù)穩(wěn)步發(fā)展,也標(biāo)志著中國(guó)的電子商務(wù)市場(chǎng)進(jìn)入了相對(duì)良性循環(huán)的,可持續(xù)發(fā)展的狀態(tài)。因此網(wǎng)上零售業(yè)也逐步成為了我國(guó)經(jīng)濟(jì)重要的組成部分。相比線下購(gòu)物,網(wǎng)上購(gòu)物的優(yōu)勢(shì):商品種類齊全可以買到本地所缺的商品、價(jià)格便宜、節(jié)省時(shí)間并且提供送貨上門的服務(wù),大大提高了購(gòu)物效率,使用戶的購(gòu)物體驗(yàn)提高。相對(duì)于傳統(tǒng)市場(chǎng)的零售模式,商家的租賃費(fèi)用大大減少,商品倉(cāng)庫(kù)儲(chǔ)的費(fèi)用和人工費(fèi)用也都相對(duì)的減少了很多。因?yàn)榫W(wǎng)絡(luò)購(gòu)物的優(yōu)勢(shì),使之逐漸成為了人們采購(gòu)的主要方式。這也代表著國(guó)內(nèi)網(wǎng)購(gòu)市場(chǎng)擁有著無(wú)限光明的發(fā)展前景。3.2功能需求分析3.2.1前端功能模塊通過(guò)對(duì)天貓、京東等網(wǎng)上商城的調(diào)查研究,最終制定了本項(xiàng)目前端的功能模塊。本項(xiàng)目的前臺(tái)系統(tǒng)主要是提供給用戶使用的,所需要的功能模塊包括:商品展示、商品搜索、購(gòu)物車模塊等。具體需求模塊如圖3.1所示。圖3.1前臺(tái)功能模塊3.2.2后端功能模塊一個(gè)完整的網(wǎng)上銷售平臺(tái)除了前臺(tái)系統(tǒng)之外,還需要有后臺(tái)管理系統(tǒng)提供給管理員使用,進(jìn)行網(wǎng)站管理。后臺(tái)系統(tǒng)主要功能模塊包括:管理員登錄、商品管理、廣告圖片管理等模塊。具體需求模塊如圖3.2所示。圖3.2后臺(tái)功能模塊3.2.3數(shù)據(jù)庫(kù)分析數(shù)據(jù)庫(kù)部分主要是圍繞購(gòu)物商城前后端所需實(shí)現(xiàn)的功能建立的數(shù)據(jù)庫(kù)表,圍繞網(wǎng)上購(gòu)物系統(tǒng)基本功能、用戶需求以及管理員需求,根據(jù)系統(tǒng)分析,將會(huì)涉及到很多張數(shù)據(jù)表。具體的數(shù)據(jù)庫(kù)表信息如表3.1所示。表3.1系統(tǒng)數(shù)據(jù)庫(kù)表用戶表管理員表內(nèi)容詳情表內(nèi)容分類商品表商品類目表商品描述表商品規(guī)格參數(shù)表商品規(guī)格和商品關(guān)系表訂單詳情表訂單商品數(shù)據(jù)表物流信息表招聘信息表商城信息表投訴與建議信息表供應(yīng)商申請(qǐng)表公告表3.3本章小結(jié)本章首先對(duì)講述了我國(guó)電子商務(wù)市場(chǎng)的優(yōu)勢(shì),說(shuō)明了網(wǎng)上購(gòu)物系統(tǒng)的可行性。其次,針對(duì)不同角色對(duì)象,對(duì)系統(tǒng)的前后臺(tái)系統(tǒng)進(jìn)行了業(yè)務(wù)的功能需求分析。最后,對(duì)系統(tǒng)中可能會(huì)使用到的數(shù)據(jù)庫(kù)表進(jìn)行了分析。4系統(tǒng)設(shè)計(jì)4.1總體業(yè)務(wù)流程總體系統(tǒng)將會(huì)包含前臺(tái)系統(tǒng)和后臺(tái)系統(tǒng)兩個(gè)模塊。其中,前臺(tái)系統(tǒng)模塊是給用戶使用的,圍繞用戶在商城瀏覽購(gòu)買商品展開實(shí)現(xiàn)了一系列功能,如:搜索商品、查看商品詳情、添加商品到購(gòu)物車等功能。而后臺(tái)系統(tǒng)模塊則主要是對(duì)商城的各項(xiàng)信息進(jìn)行管理,為用戶提供服務(wù),主要實(shí)現(xiàn)功能包括:商品信息管理、商品規(guī)格信息管理和商城廣告管理等??傮w的業(yè)務(wù)流程如圖4.1所示。圖4.1系統(tǒng)總體業(yè)務(wù)執(zhí)行流程圖4.2系統(tǒng)總體框架設(shè)計(jì)一個(gè)系統(tǒng)功能上的健壯性和運(yùn)行時(shí)的穩(wěn)定性是十分重要的,而系統(tǒng)整體的架構(gòu)設(shè)計(jì)將會(huì)起著至關(guān)重要的支撐作用。目前,相對(duì)成熟、流行的體系架構(gòu)有B/S和C/S兩種架構(gòu)。因?yàn)楸鞠到y(tǒng)將會(huì)是一個(gè)PC端系統(tǒng),因此本系統(tǒng)將會(huì)使用B/S架構(gòu),B/S架構(gòu)就只需要使用者打開瀏覽器即可。本系統(tǒng)最終目標(biāo)是實(shí)現(xiàn)一個(gè)能夠支持較高并發(fā)訪問(wèn)量的購(gòu)物平臺(tái),所以需要保證系統(tǒng)能夠在高并發(fā)的情況下依然保持高效穩(wěn)定的運(yùn)行。因此本系統(tǒng)將融入分布式思想,使用B/S架構(gòu),此外系統(tǒng)總體采用前后端分離的思想,使用當(dāng)前流行的SSM框架進(jìn)行開發(fā)。采用集群形式部署服務(wù)器,使用Nginx保持網(wǎng)站的負(fù)載均衡,在進(jìn)行消息隊(duì)列管理時(shí)使用ActiveMQ,使用Redis數(shù)據(jù)庫(kù)作為緩存服務(wù)器,使用MyCat管理MySQL數(shù)據(jù)庫(kù)集群實(shí)現(xiàn)數(shù)據(jù)庫(kù)分片和讀寫分離REF_Ref15121\r\h[19]。分布式系統(tǒng)架構(gòu)可以動(dòng)態(tài)地調(diào)整以改變用戶和應(yīng)用程序?qū)π畔⒌男枨驲EF_Ref4129\r\h[22]。4.3業(yè)務(wù)模塊的設(shè)計(jì)經(jīng)過(guò)分析本系統(tǒng)將涉及到六個(gè)主要的功能模塊。系統(tǒng)總體功能模塊結(jié)構(gòu)如圖4.2所示。圖4.2系統(tǒng)功能模塊結(jié)構(gòu)圖用戶模塊:用戶模塊主要包括用戶注冊(cè)功能和單點(diǎn)登錄功能,用戶根據(jù)頁(yè)面提示信息將正確的信息填寫好后完成注冊(cè)。注冊(cè)成功即可通過(guò)用戶名和密碼進(jìn)行單點(diǎn)登錄操作。網(wǎng)站內(nèi)容管理:網(wǎng)站內(nèi)容管理模塊主要包含類目信息管理和頁(yè)面內(nèi)容信息管理,該模塊主要是提供給管理員使用,管理員通過(guò)后臺(tái)系統(tǒng)對(duì)商品類目和前臺(tái)頁(yè)面內(nèi)容進(jìn)行管理操作。商品模塊:商品模塊同時(shí)涉及到前后臺(tái)兩部分,在前臺(tái)用戶可以進(jìn)行商品搜索操作,查看商品詳情操作;而在后臺(tái),管理員可以對(duì)商品信息進(jìn)行添加、查看、編輯、刪除、上架和下架等操作。訂單模塊:訂單模塊同時(shí)涉及到前后臺(tái)兩個(gè)部分,在前臺(tái)用戶可以進(jìn)行提交訂單操作;管理員可以對(duì)訂單信息進(jìn)行查看、編輯、刪除。購(gòu)物車模塊:用戶可以查看購(gòu)物車,添加商品至購(gòu)物車,修改選定商品的數(shù)量,刪除指定的商品,一鍵清空購(gòu)物車等操作。其他信息管理模塊:該模塊主要提供一些其他輔助功能。4.4ER圖設(shè)計(jì)ER圖就是實(shí)體關(guān)系圖,提供了表示實(shí)體類型、屬性和聯(lián)系的方法,它是用來(lái)描述現(xiàn)實(shí)世界關(guān)系概念的有效方法。ER圖中包含幾個(gè)主要元素:矩形框,用來(lái)表示實(shí)體;菱形框,用來(lái)表示實(shí)體型之間的聯(lián)系。根據(jù)本系統(tǒng)需求分析設(shè)計(jì)了系統(tǒng)的ER圖,詳細(xì)信息如圖4.3所示。圖4.3系統(tǒng)ER圖4.5數(shù)據(jù)庫(kù)表的設(shè)計(jì)對(duì)項(xiàng)目系統(tǒng)中要使用到的數(shù)據(jù)進(jìn)行分析,然后進(jìn)行數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)是在實(shí)現(xiàn)系統(tǒng)之前必須經(jīng)歷的步驟。系統(tǒng)需要確定實(shí)體、實(shí)體的屬性及實(shí)體間的聯(lián)系,得出關(guān)系模式REF_Ref22169\r\h[23]。一般在創(chuàng)建數(shù)據(jù)庫(kù)表時(shí)需要滿足數(shù)據(jù)庫(kù)三大范式:列不可再分、每行數(shù)據(jù)應(yīng)有唯一區(qū)分REF_Ref17459\r\h[24]。不可使用非主鍵之外的列來(lái)維護(hù)表之間的關(guān)系REF_Ref17459\r\h[24]。可以有一些數(shù)據(jù)庫(kù)約束條件REF_Ref17459\r\h[24]。由于本系統(tǒng)包含的數(shù)據(jù)量較大,數(shù)據(jù)庫(kù)表較多,因此本章節(jié)選取了比較重要的、操作交頻繁的若干表行說(shuō)明。下面將分別介紹所選取說(shuō)明的數(shù)據(jù)庫(kù)表的詳細(xì)設(shè)計(jì):用戶表。用來(lái)儲(chǔ)存用戶信息,主要的字段包括用戶的id,用戶名,密碼,手機(jī)號(hào),郵箱等信息。其中,用戶密碼將使用MD5進(jìn)行加密處理后再存儲(chǔ)至表中。用戶表結(jié)構(gòu)如表4.1所示。表4.1用戶信息表(tb_user)序號(hào)字段名數(shù)據(jù)類型字段大小是否為主鍵是否為空注釋1idbigint20是NOTNULL用戶id2usernamevarchar50否NOTNULL用戶名3passwordvarchar32否NOTNULL密碼4phonevarchar20否DEFAULFNULL手機(jī)號(hào)5emailvarchar50否DEFAULFNULL郵箱6createddatetime否NOTNULL創(chuàng)建時(shí)間7updateddatetime否NOTNULL更新時(shí)間管理員表。用來(lái)存放管理員的信息。管理員表結(jié)構(gòu)如表4.2所示。表4.2管理員表(tb_manager)序號(hào)字段名數(shù)據(jù)類型字段大小是否為主鍵是否為空注釋1idbigint20是NOTNULL管理員id2usernamevarchar50否NOTNULL用戶名3passwordvarchar32否NOTNULL密碼4phonevarchar20否DEFAULFNULL手機(jī)號(hào)5emailvarchar50否DEFAULFNULL郵箱6createddatetime否NOTNULL創(chuàng)建時(shí)間7updateddatetime否NOTNULL更新時(shí)間商品表。用來(lái)存放商品基本信息。商品表結(jié)構(gòu)如表4.3所示。表4.3商品表(tb_item)序號(hào)字段名數(shù)據(jù)類型字段大小是否為主鍵是否為空注釋1idbigint20是NOTNULL商品id2titlevarchar100否NOTNULL商品標(biāo)題3sell_pointvarchar500否DEFAULFNULL商品賣點(diǎn)4pricebigint20否NOTNULL商品價(jià)格5numint10否NOTNULL庫(kù)存數(shù)量6barcodevarchar30否NOTNULL商品條形碼7imagevarchar500否DEFAULFNULL商品圖片8cidbigint10否DEFAULFNULL所屬類目9statustinyint4否NOTNULL商品狀態(tài)10createddatetime否NOTNULL創(chuàng)建時(shí)間11updateddatetime否NOTNULL更新時(shí)間商品類目表。用來(lái)存放商品分類信息,商品分類信息一個(gè)是樹狀級(jí)聯(lián)信息。商品類目表結(jié)構(gòu)如表4.4所示。表4.4商品類目表(tb_item_cat)序號(hào)字段名數(shù)據(jù)類型字段大小是否為主鍵是否為空注釋1idbigint20是NOTNULL類目id2parent_idbigint20否DEFAULFNULLid=0則為一級(jí)3namevarchar50否DEFAULFNULL類目名稱4statusint1否DEFAULF‘1’狀態(tài)5sort_orderint4否DEFAULFNULL排列序號(hào)6is_parenttinyint1否DEFAULF‘1’是否為父類目7createddatetime否NOTNULL創(chuàng)建時(shí)間8updateddatetime否NOTNULL更新時(shí)間內(nèi)容分類表。該表中存放的是內(nèi)容分類的信息,是一個(gè)樹狀級(jí)聯(lián)信息。內(nèi)容分類表結(jié)構(gòu)如表4.5所示。表4.5內(nèi)容分類表(tb_content_category)序號(hào)字段名數(shù)據(jù)類型字段大小是否為主鍵是否為空注釋1idbigint20是NOTNULL內(nèi)容類目id2parent_idbigint20否DEFAULFNULLid=0則為一級(jí)3namevarchar50否DEFAULFNULL內(nèi)容名稱4statusint1否DEFAULF‘1’狀態(tài)5sort_orderint4否DEFAULFNULL排列序號(hào)6is_parenttinyint1否DEFAULF‘1’是否為父類目7createddatetime否NOTNULL創(chuàng)建時(shí)間8updateddatetime否NOTNULL更新時(shí)間內(nèi)容詳情表。儲(chǔ)存廣告基本信息。內(nèi)容詳情表結(jié)構(gòu)如表4.6所示。表4.6內(nèi)容詳情表(tb_content)序號(hào)字段名數(shù)據(jù)類型字段大小是否為主鍵是否為空注釋1idbigint20是NOTNULLid2category_idbigint20否NOTNULL內(nèi)容類目id3titlevarchar200否DEFAULFNULL內(nèi)容標(biāo)題4sub_titlevarchar100否DEFAULFNULL子標(biāo)題5title_descvarchar500否DEFAULFNULL標(biāo)題描述6urldatetime500否DEFAULFNULL鏈接7picdatetime300否DEFAULFNULL圖片絕對(duì)路徑8Pic2datetime300否DEFAULFNULL圖片29contenttext否DEFAULFNULL內(nèi)容10createddatetime否DEFAULFNULL創(chuàng)建時(shí)間11updateddatetime否DEFAULFNULL更新時(shí)間商城信息表。該表中存放的是有關(guān)商城的信息。商城信息表結(jié)構(gòu)如表4.7所示。表4.7商城信息表(tb_about)序號(hào)字段名數(shù)據(jù)類型字段大小是否為主鍵是否為空注釋1about_idbigint20是NOTNULL商城信息id2namevarchar255否DEFAULFNULL商城名3contentvarchar255否DEFAULFNULL商城簡(jiǎn)介4addressvarchar255否DEFAULFNULL公司地址5peoplevarchar255否DEFAULFNULL聯(lián)系人6telbigint20否DEFAULFNULL聯(lián)系電話7mailvarchar255否DEFAULFNULL郵箱信息商品描述表。存放商品描述信息,包括商品id,商品描述等信息。商品描述表結(jié)構(gòu)如表4.8所示。表4.8商品描述表(tb_item_desc)序號(hào)字段名數(shù)據(jù)類型字段大小是否為主鍵是否為空注釋1item_idbigint20是NOTNULL商品id2item_desctext否DEFAULFNULL商品描述3createddatetime否DEFAULFNULL創(chuàng)建時(shí)間4updateddatetime否DEFAULFNULL更新時(shí)間4.6本章小結(jié)本章內(nèi)容是對(duì)系統(tǒng)的設(shè)計(jì),首先對(duì)總體的業(yè)務(wù)流程做了簡(jiǎn)單的分析描述。接著是對(duì)系統(tǒng)總體框架的設(shè)計(jì)進(jìn)行了簡(jiǎn)單說(shuō)明,主要內(nèi)容是系統(tǒng)總體框架設(shè)計(jì)時(shí)使用到了哪些技術(shù)。然后對(duì)系統(tǒng)業(yè)務(wù)模塊的設(shè)計(jì)進(jìn)行了分析論述,詳細(xì)說(shuō)明了系統(tǒng)分為哪幾個(gè)模塊,每個(gè)模塊大致包含哪些功能。最后對(duì)系統(tǒng)中的操作使用頻繁的幾個(gè)數(shù)據(jù)庫(kù)表進(jìn)行了詳細(xì)的介紹。5系統(tǒng)實(shí)現(xiàn)5.1系統(tǒng)開發(fā)環(huán)境為了保證本系統(tǒng)的穩(wěn)定性、擴(kuò)展性以及健壯性,開發(fā)環(huán)境的選擇是十分重要的。根據(jù)前期的調(diào)研準(zhǔn)備,最終選定了本系統(tǒng)的開發(fā)環(huán)境,下面將對(duì)本系統(tǒng)開發(fā)環(huán)境進(jìn)行詳細(xì)的說(shuō)明。具體信息如表5.1所示。表5.1系統(tǒng)開發(fā)環(huán)境信息表序號(hào)技術(shù)(軟件)技術(shù)(軟件)名稱1操作系統(tǒng)Windows102系統(tǒng)開發(fā)語(yǔ)言Java3Jdk版本1.84系統(tǒng)服務(wù)器Tomcat75數(shù)據(jù)庫(kù)MySQL5.7.176開發(fā)工具Eclipse4.6.37負(fù)載均衡服務(wù)器Nginx1.8.08項(xiàng)目管理工具M(jìn)aven3.2.19圖片服務(wù)器FastDFS5.0.510系統(tǒng)整體調(diào)度工具Dubbo2.5.411集群管理工具Zookeeper3.4.612系統(tǒng)緩存服務(wù)器Redis3.0.013全文搜服務(wù)器Solr4.10.314系統(tǒng)消息中間件ActiveMQ5.12.05.2系統(tǒng)工程結(jié)構(gòu)圖5.1系統(tǒng)工程結(jié)構(gòu)圖本項(xiàng)目使用Eclipse4.6.3版本開發(fā),Maven使用的是3.2.1版本,本地倉(cāng)庫(kù)默認(rèn)位置在:~/.m2/respository。5.3系統(tǒng)主要模塊實(shí)現(xiàn)5.3.1SSO單點(diǎn)登錄系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)在一個(gè)完整的商城系統(tǒng)中,登錄功能是必不可少的。與普通登錄系統(tǒng)不同,本項(xiàng)目系統(tǒng)中設(shè)計(jì)實(shí)現(xiàn)的是單點(diǎn)登錄系統(tǒng),即SSO系統(tǒng),英文全稱為SingleSignOn,用戶成功后,不需要多次重復(fù)登錄,就可以在不同頁(yè)面之間進(jìn)行跳轉(zhuǎn)。在本系統(tǒng)中,當(dāng)用戶首次登錄成功后,將以用戶id作為key,使用UUID(UniversallyUniqueIdentifier,通用唯一識(shí)別碼)生成token令牌,再將生成的信息存入Redis數(shù)據(jù)庫(kù)中,并設(shè)置信息的有效時(shí)間。這樣當(dāng)用戶登錄后瀏覽訪問(wèn)本系統(tǒng)中的其他網(wǎng)頁(yè)時(shí),系統(tǒng)會(huì)首先去Redis數(shù)據(jù)庫(kù)中,根據(jù)token檢查用戶是否登錄,若用戶處于登錄狀態(tài),則可以直接獲取到用戶信息并自動(dòng)登錄。該功能實(shí)現(xiàn)的重要接口:登錄接口http://localhost:8088/user/login該接口是實(shí)現(xiàn)單點(diǎn)登錄功能的主要操作,用戶登錄成功后會(huì)返回token信息并存入Redis數(shù)據(jù)庫(kù)中。登錄成功后Redis中的信息如圖5.2所示,發(fā)起的請(qǐng)求信息如圖5.3所示。圖5.2登錄成功,用戶信息存入Redis信息圖圖5.3登錄成功,發(fā)起請(qǐng)求信息圖根據(jù)token查詢用戶信息http://localhost:8088/user/token/{token}該接口中的token值是用戶的登錄憑證,通過(guò)登錄接口查詢返回。退出登錄接口http://localhost:8088/user/logout/{token}通過(guò)接口中所帶的token值,在Redis中查詢已登錄的用戶信息,并刪除,這樣就完成了退出操作。5.3.2網(wǎng)站內(nèi)容管理模塊的設(shè)計(jì)與實(shí)現(xiàn)類別管理模塊的主要功能包括添加類目、顯示類目、刪除類目和重命名操作。具體內(nèi)容管理模塊的功能如圖5.4所示圖5.4內(nèi)容管理模塊功能圖展示類目請(qǐng)求的URL:http://localhost:8081/content/category/list。該操作發(fā)送請(qǐng)求時(shí)的參數(shù)為id,就是指當(dāng)前節(jié)點(diǎn)的id。如果第一次發(fā)起請(qǐng)求時(shí)沒(méi)有參數(shù),那么這時(shí)需要給定默認(rèn)參數(shù)值“0”,即id=0。獲取到參數(shù)后將參數(shù)傳遞給業(yè)務(wù)層,業(yè)務(wù)層通過(guò)id和parentId進(jìn)行查詢列表,得到列表List<TbContentCategory>,最后將該列表轉(zhuǎn)成List<EasyUITreeNode>。該功能的實(shí)現(xiàn)的業(yè)務(wù)邏輯處理代碼如下:publicList<EasyUITreeNode>getContentCatList(longparentId){ //根據(jù)parentid查詢子節(jié)點(diǎn)列表 TbContentCategoryExampleexample=newTbContentCategoryExample(); Criteriacriteria=example.createCriteria(); //設(shè)置查詢條件 criteria.andParentIdEqualTo(parentId); //執(zhí)行查詢 List<TbContentCategory>catList=contentCategoryMapper.selectByExample(example); //轉(zhuǎn)換成EasyUITreeNode的列表 List<EasyUITreeNode>nodeList=newArrayList<>(); for(TbContentCategorytbContentCategory:catList){ EasyUITreeNodenode=newEasyUITreeNode(); node.setId(tbContentCategory.getId()); node.setText(tbContentCategory.getName()); node.setState(tbContentCategory.getIsParent()?"closed":"open"); //添加到列表 nodeList.add(node); } returnnodeList; }添加類目操作通過(guò)請(qǐng)求URL:http://localhost:8081/content/category/create,由前端控制器接收URL中的傳遞的參數(shù)parentId和name,然后將值傳給業(yè)務(wù)層,根據(jù)parentId來(lái)確定類目級(jí)別,封裝對(duì)象后執(zhí)行添加操作。添加類目操作請(qǐng)求響應(yīng)信息如圖5.5所示。圖5.5添加類目操作請(qǐng)求響應(yīng)的數(shù)據(jù)圖重命名操作該操作是根據(jù)當(dāng)前選擇的類目的id進(jìn)行操作,前端控制器根據(jù)請(qǐng)求URL獲取參數(shù)id和name,然后將參數(shù)值傳遞給業(yè)務(wù)層,業(yè)務(wù)層根據(jù)id查詢到給對(duì)象的信息,然后將新的數(shù)據(jù)替換存儲(chǔ)到數(shù)據(jù)庫(kù)表中。刪除操作刪除類目操作發(fā)起請(qǐng)求后,前端控制器從請(qǐng)求URL中獲取到被選中的類目信息的id和parentId,將其作為參數(shù)傳遞給業(yè)務(wù)層,業(yè)務(wù)層首先需要根據(jù)parentId判斷節(jié)點(diǎn)是不是父類目,如果是,就遞歸刪除父類目和其他所有的子類目信息,然后將父類目的isParent的屬性值改為false。如果不是父類目,則直接根據(jù)id刪除該類目。刪除類目操作請(qǐng)求響應(yīng)信息如圖5.6所示。圖5.6刪除類目操作請(qǐng)求響應(yīng)的數(shù)據(jù)圖頁(yè)面內(nèi)容管理模塊包含分頁(yè)展示、添加、編輯和刪除操作。該模塊中的添加、編輯和刪除操作與類目管理模塊的添加類目、刪除類目和重命名操作基本相同。具體頁(yè)面內(nèi)容管理模塊功能如圖5.7所示。圖5.7頁(yè)面內(nèi)容管理模塊功能圖其中不同的是分頁(yè)展示功能。請(qǐng)求的URL:http://localhost:8081/content/query/list,請(qǐng)求的參數(shù)categoryId(內(nèi)容類目id),page(頁(yè)碼),rows(展示條數(shù))。將參數(shù)傳遞給業(yè)務(wù)層后,業(yè)務(wù)層會(huì)根據(jù)id值進(jìn)行查詢內(nèi)容列表的操作,查詢結(jié)果會(huì)得到列表List<TbContent>,然后對(duì)其進(jìn)行分頁(yè)處理。該功能的實(shí)現(xiàn)的業(yè)務(wù)邏輯處理代碼如下:publicEasyUIDataGridResultgetContentList(intpage,introws){ ///設(shè)置分頁(yè)信息 PageHelper.startPage(page,rows); //執(zhí)行查詢 TbContentExampleexample=newTbContentExample(); List<TbContent>list=contentMapper.selectByExample(example); //取分頁(yè)信息 PageInfo<TbContent>pageInfo=newPageInfo<>(list); //創(chuàng)建返回結(jié)果對(duì)象 EasyUIDataGridResultresult=newEasyUIDataGridResult(); result.setTotal(pageInfo.getTotal()); result.setRows(list); returnresult; }5.3.3商品管理模塊設(shè)計(jì)與實(shí)現(xiàn)在后臺(tái)系統(tǒng)中,商品管理模塊主要的功能有商品詳情分頁(yè)展示、添加商品、編輯商品、刪除商品、上架商品以及下架商品等操作。其中商品詳情分頁(yè)展示、添加商品、編輯商品和刪除商品操作與頁(yè)面內(nèi)容管理模塊中的分頁(yè)展示、添加、編輯和刪除操作的業(yè)務(wù)流程相似,因此在這里不再過(guò)多贅述。具體商品管理模塊功能如圖5.8所示。圖5.8商品管理模塊功能圖需要詳細(xì)說(shuō)明的是商品上架以及商品下架功能操作。這兩個(gè)功能操作的業(yè)務(wù)流程相似,因此以商品上架操作為例展開說(shuō)明。管理員在后臺(tái)選擇好商品后點(diǎn)擊上架,系統(tǒng)將把選中的商品的表單數(shù)據(jù)通過(guò)URL轉(zhuǎn)發(fā)給前端控制器,前端控制器接收URL中的傳遞的參數(shù)id,然后將值傳給業(yè)務(wù)層,業(yè)務(wù)層根據(jù)id查詢到給對(duì)象的信息,然后將商品的status(商品狀態(tài))的值進(jìn)行更改,其中商品狀態(tài)status=1時(shí),表示商品上架;商品狀態(tài)status=2時(shí),表示商品下架。該功能的實(shí)現(xiàn)的業(yè)務(wù)邏輯處理代碼如下: //商品上架publicMallResultreshelfItem(Stringids){//找到對(duì)應(yīng)的商品 String[]buff=ids.split(","); for(Stringid:buff){ //修改商品信息 TbItemselectByPrimaryKey=itemMapper.selectByPrimaryKey(Long.parseLong(id)); selectByPrimaryKey.setStatus((byte)1); //更改商品信息 itemMapper.updateByPrimaryKey(selectByPrimaryKey); } returnMallResult.ok(); }前臺(tái)系統(tǒng)中商品模塊除了商品分頁(yè)展示功能外,還有查看商品詳情功能。該功能的實(shí)現(xiàn)是通過(guò)前端控制器從請(qǐng)求URL中獲取到itemId即商品id,將itemId作為參數(shù)傳遞給業(yè)務(wù)層,業(yè)務(wù)層根據(jù)itemId查詢商品的基本信息和商品的描述信息。表現(xiàn)層調(diào)用服務(wù)層,獲取信息封裝到Model對(duì)象中,最后保存到Request域中。前端商品信息頁(yè)面,從域中獲取需要的屬性值,然后就可以實(shí)現(xiàn)商品詳情頁(yè)面的動(dòng)態(tài)展示了。某商品詳情頁(yè)如圖5.9所示。該功能實(shí)現(xiàn)的表現(xiàn)層代碼如下: //商品上架@RequestMapping("/item/{itemId}") publicStringshowItemInfo(@PathVariableLongitemId,Modelmodel){ //調(diào)用服務(wù)取商品基本信息 TbItemtbItem=itemService.geTbItemById(itemId); Itemitem=newItem(tbItem);//取商品描述信息 TbItemDescitemDesc=itemService.geTbItemDescById(itemId);//把信息傳遞給頁(yè)面 model.addAttribute("item",item); model.addAttribute("itemDesc",itemDesc); return"item";//返回邏輯視圖 }圖5.9某商品詳情頁(yè)5.3.4全文搜索系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)本系統(tǒng)的全文搜索組件使用的是Solr。為了提供更優(yōu)化的查詢方式和更優(yōu)異的檢索性能,本系統(tǒng)采用Solr配合Zookeeper搭建了SolrCloud。商品信息導(dǎo)入索引庫(kù)想要在頁(yè)面上展示商品的信息,首先需要將商品的各個(gè)字段信息添加到Solr索引庫(kù)中。本系統(tǒng)將使用Java代碼來(lái)完成這一操作。具體使用代碼完成的操作步驟如下:首先需要先從數(shù)據(jù)庫(kù)中查詢讀取到商品的詳細(xì)信息,然后創(chuàng)建一個(gè)Solr流對(duì)象,將信息封裝到該對(duì)象中,接著就可以寫入到Solr索引庫(kù)中了,最后也是最不可缺少的一步就是發(fā)布服務(wù)。具體Solr索引庫(kù)信息如圖5.10所示。實(shí)現(xiàn)添加Solr索引功能業(yè)務(wù)邏輯層代碼如下: //查詢商品列表publicMallResultimportAllItems(){ try{ List<SearchItem>itemList=itemMapper.getItemList();//遍歷商品列表 for(SearchItemsearchItem:itemList){//創(chuàng)建文檔對(duì)象 SolrInputDocumentdocument=newSolrInputDocument(); //向文檔對(duì)象中添加域 document.addField("id",searchItem.getId()); document.addField("item_title",searchItem.getTitle()); document.addField("item_sell_point",searchItem.getSell_point()); document.addField("item_price",searchItem.getPrice()); document.addField("item_image",searchItem.getImage()); document.addField("item_category_name",searchItem.getCategory_name());//把文檔對(duì)象寫入索引庫(kù) SolrServer.add(document); }//提交 SolrSmit();//返回導(dǎo)入成功 returnMallResult.ok(); }catch(Exceptione){ e.printStackTrace(); returnMallResult.build(500,"數(shù)據(jù)導(dǎo)入時(shí)發(fā)生異常"); } }圖5.10Solr索引庫(kù)信息圖前臺(tái)用戶使用搜索功能請(qǐng)求的URL:http://localhost:8085/search?Keyword=XXX,前端控制器可以根據(jù)請(qǐng)求URL獲取到的參數(shù)有keyword(查詢條件),page(頁(yè)碼,如果沒(méi)有,需給定默認(rèn)值1)和rows(條數(shù))。將參數(shù)傳遞給業(yè)務(wù)層后,業(yè)務(wù)層根據(jù)keyword查詢商品列表,將得到的結(jié)果封裝到searchResult中,返回給表現(xiàn)層。搜索功能操作,業(yè)務(wù)邏輯處理代碼如下: publicSearchResultsearch(Stringkeyword,intpage,introws)throwsException{ //創(chuàng)建一個(gè)SolrQuery對(duì)象 SolrQueryquery=newSolrQuery(); //設(shè)置查詢條件 query.setQuery(keyword); //設(shè)置分頁(yè)條件 if(page<=0)page=1; query.setStart((1)*rows); query.setRows(rows); //設(shè)置默認(rèn)搜索域 query.set("df","item_title"); //開啟高亮顯示 query.setHighlight(true); query.addHighlightField("item_title"); query.setHighlightSimplePre("<emstyle=\"color:red\">"); query.setHighlightSimplePost("</em>"); //調(diào)用dao執(zhí)行查詢 SearchResultsearchResult=searchDao.search(query); //計(jì)算總頁(yè)數(shù) longrecordCount=searchResult.getRecordCount(); inttotalPage=(int)(recordCount/rows); if(recordCount%rows>0) totalPage++; //添加到返回結(jié)果 searchResult.setTotalPages(totalPage); //返回結(jié)果 returnsearchResult; }表現(xiàn)層接收結(jié)果后,可以獲取到商品列表數(shù)據(jù)信息,將獲取到的信息封裝到Model對(duì)象中,然后保存到Request域中,最后返回到視圖。前端search.jsp頁(yè)面可以從域?qū)ο笾蝎@取需要的屬性值,然后就可以實(shí)現(xiàn)查詢頁(yè)面的動(dòng)態(tài)展示了。搜索功能操作,表現(xiàn)層代碼如下:@RequestMapping("/search") publicStringsearchItemList(Stringkeyword, @RequestParam(defaultValue="1")Integerpage,Modelmodel)throwsException{ keyword=newString(keyword.getBytes("iso-8859-1"),"utf-8"); //查詢商品列表 SearchResultsearchResult=searchService.search(keyword,page,SEARCH_RESULT_ROWS); //把結(jié)果傳遞給頁(yè)面 model.addAttribute("query",keyword); model.addAttribute("totalPages",searchResult.getTotalPages()); model.addAttribute("page",page); model.addAttribute("recourdCount",searchResult.getRecordCount()); model.addAttribute("itemList",searchResult.getItemList()); //異常測(cè)試 //inta=1/0; //返回前端頁(yè)面 return"search"; }5.3.5訂單管理模塊設(shè)計(jì)與實(shí)現(xiàn)訂單模塊涉及到前臺(tái)用戶操作和后臺(tái)管理員操作兩部分。其中前臺(tái)用戶主要擁有生成訂單的操作,而后臺(tái)管理員則擁有對(duì)訂單進(jìn)行編輯和刪除的操作。生成訂單當(dāng)用戶在購(gòu)物車展示頁(yè)面點(diǎn)擊去結(jié)算的時(shí)候,首先會(huì)進(jìn)行自動(dòng)驗(yàn)證,驗(yàn)證用戶是否處于登錄狀態(tài),若沒(méi)有登錄則需用戶進(jìn)行登錄,若用戶已登錄就可以生成訂單信息。前臺(tái)提交表單后,前端控制器獲取信息,然后信息傳給業(yè)務(wù)層,業(yè)務(wù)層將獲取的學(xué)習(xí)進(jìn)行封裝對(duì)象最后執(zhí)行生成訂單操作,生成訂單后需要將用戶的購(gòu)物車清空,同時(shí)需要更新Redis中的數(shù)據(jù)。生成訂單操作表現(xiàn)層代碼如下:@RequestMapping(value="/order/create",method=RequestMethod.POST) publicStringcreateOrder(OrderInfoorderInfo,HttpServletRequestrequest){//取用戶信息 TbUseruser=(TbUser)request.getAttribute("user");//把用戶信息添加到orderInfo中。 orderInfo.setUserId(user.getId()); orderInfo.setBuyerNick(user.getUsername());//調(diào)用服務(wù)生成訂單 MallResultmallResult=orderService.createOrder(orderInfo); //如果訂單生成成功,需要?jiǎng)h除購(gòu)物車 if(mallResult.getStatus()==200){//清空購(gòu)物車 cartService.clearCartItem(user.getId()); } //把訂單號(hào)傳遞給頁(yè)面 request.setAttribute("orderId",mallResult.getData()); request.setAttribute("payment",orderInfo.getPayment()); //返回邏輯視圖 return"success"; }修改訂單該操作管理員擁有的操作,該操作根據(jù)當(dāng)前選擇的訂單的id進(jìn)行操作,前端控制器接收URL中的傳遞的參數(shù)id和tbOrder對(duì)象,然后將值傳給業(yè)務(wù)層,業(yè)務(wù)層根據(jù)id查詢到訂單的信息,然后將新的tbOrder對(duì)象的信息更新至數(shù)據(jù)庫(kù)表中。修改訂單操作,業(yè)務(wù)邏輯處理代碼如下: //更新publicMallResultupdateOrder(TbOrderorder,Stringdesc){ //TODOAuto-generatedmethodstub //1、根據(jù)商品id,更新商品表,條件更新TbOrderExampleorderExample=newTbOrderExample();Criteriacriteria=orderExample.createCriteria();criteria.andOrderIdEqualTo(order.getOrderId());orderMapper.updateByExampleSelective(order,orderExample);returnMallResult.ok(); }刪除訂單刪除訂單操作是管理員擁有的操作,該操作將選中的訂單的id作為參數(shù)傳遞,業(yè)務(wù)層需要先根據(jù)id查詢到訂單信息,然后進(jìn)行訂單的刪除操作。刪除訂單操作,業(yè)務(wù)邏輯處理代碼如下: publicMallResultdeleteById(List<String>ids){//根據(jù)id刪除訂單信息 //TODOAuto-generatedmethodstub TbOrderExampletbOrderExample=newTbOrderExample(); TbOrderExample.Criteriacriteria=tbOrderExample.createCriteria(); criteria.andOrderIdIn(ids); inti=orderMapper.deleteByExample(tbOrderExample); if(i>0){ returnMallResult.ok(); }else{ returnMallResult.ok("刪除失敗"); } }5.3.6購(gòu)物車模塊設(shè)計(jì)與實(shí)現(xiàn)購(gòu)物車模塊包含的主要功能有:展示購(gòu)物車列表、添加商品到購(gòu)物車、更新購(gòu)物車商品數(shù)量、刪除購(gòu)物車中的商品以及清空購(gòu)物車等操作。展示購(gòu)物車列表在Controller層模塊中的CartController類中的showCatList()方法中從首先需要判斷用戶是否登錄,若未登錄,則從Cookie中獲取購(gòu)物車列表;若登錄,則根據(jù)用戶id再去查詢購(gòu)物車列表。將獲取到購(gòu)物車的詳細(xì)信息進(jìn)行封裝后,保存到Request域中,最后返回視圖。前端cart.jsp頁(yè)面可以從域中獲取所需要的屬性值,然后可以實(shí)現(xiàn)購(gòu)物車頁(yè)面的動(dòng)態(tài)展示了。具體購(gòu)物車列表如圖5.11所示。圖5.11顯示購(gòu)物車列表顯示購(gòu)物車列表操作,表現(xiàn)層代碼如下:@RequestMapping("/cart/cart") publicStringshowCatList(HttpServletRequestrequest,HttpServletResponseresponse){ //從cookie中取購(gòu)物車列表 List<TbItem>cartList=getCartListFromCookie(request); //判斷用戶是否為登錄狀態(tài) TbUseruser=(TbUser)request.getAttribute("user"); //如果登錄 if(user!=null){ //從cookie中取購(gòu)物車列表 //如果不為空合并購(gòu)物車。 cartService.mergeCart(user.getId(),cartList); //把cookie中的購(gòu)物車刪除 CookieUtils.deleteCookie(request,response,"cart"); //從服務(wù)端取購(gòu)物車列表 cartList=cartService.getCartList(user.getId()); } //把列表傳遞給頁(yè)面 request.setAttribute("cartList",cartList); //返回邏輯視圖 return"cart"; }添加商品到購(gòu)物車本系統(tǒng)中該功能不論用戶登錄與否都可以進(jìn)行將商品添加至購(gòu)物車的操作。添加商品至購(gòu)物車操作時(shí)會(huì)首先獲取itemId(商品id)和num(商品數(shù)量),為了保證在瀏覽器關(guān)閉前,購(gòu)物車中的商品信息能夠持續(xù)存在,需要先信息保存至Cookie中。業(yè)務(wù)層根據(jù)獲取的itemId查詢商品的詳細(xì)信息,然后返回到Controller層,Controller層將獲取到的購(gòu)物車信息,數(shù)據(jù)處理后存到Redis中。添加成功后,Redis中的數(shù)據(jù)如圖5.12所示。圖5.12添加成功后,Redis中的數(shù)據(jù)更新購(gòu)物車商品數(shù)量當(dāng)發(fā)起更新購(gòu)物車商品數(shù)量的請(qǐng)求時(shí),前端控制器會(huì)從URL中的獲取被選中的信息的userId,itemId和num,然后作為參數(shù)傳給業(yè)務(wù)層,業(yè)務(wù)層會(huì)根據(jù)id查詢到購(gòu)物車信息列表,然后再跟進(jìn)itemId查詢要修改的指定商品信息,然后將新的num(商品數(shù)量)更新至數(shù)據(jù)庫(kù)表中,同時(shí)也需要更新Redis中的信息。購(gòu)物車商品數(shù)量更新操作,業(yè)務(wù)邏輯處理代碼如下: publicMallResultupdateCartNum(longuserId,longitemId,intnum){ //從Redis中取商品信息 Stringjson=jedisClient.hget(Redis_CART_PRE+":"+userId,itemId+""); //更新商品數(shù)量 TbItemtbItem=JsonUtils.jsonToPojo(json,TbItem.class); tbItem.setNum(num); //寫入Redis jedisClient.hset(Redis_CART_PRE+":"+userId,itemId+"",JsonUtils.objectToJson(tbItem)); returnMallResult.ok(); }刪除購(gòu)物車中的商品刪除購(gòu)物車中的商品操作是將選中購(gòu)物車中商品的itemId和userId作為參數(shù)傳遞,業(yè)務(wù)層需要先根據(jù)userId查詢到購(gòu)物車列表,然后在根據(jù)itemId進(jìn)行商品的刪除操作,同時(shí)需要更新Redis中的數(shù)據(jù)。刪除購(gòu)物車中選中的商品操作,業(yè)務(wù)邏輯處理代碼如下: publicMallResultdeleteCartItem(longuserId,longitemId){ //刪除購(gòu)物車商品 jedisClient.hdel(Redis_CART_PRE+":"+userId,itemId+""); returnMallResult.ok(); }清空購(gòu)物車清空購(gòu)物車操作是將userId作為參數(shù)傳遞,業(yè)務(wù)層需要先根據(jù)userId查詢到購(gòu)物車列表,然后直接將整個(gè)列表刪除,同時(shí)需要更新Redis中的數(shù)據(jù)。清空購(gòu)物車操作,業(yè)務(wù)邏輯處理代碼如下: publicMallResultclearCartItem(longuserId){ //清空購(gòu)物車信息 jedisClient.del(Redis_CART_PRE+":"+userId); returnMallResult.ok(); }5.4本章小結(jié)本章首先介紹了系統(tǒng)的開發(fā)環(huán)境,然后分析了系統(tǒng)的工程結(jié)構(gòu),最后闡述了系統(tǒng)的主要功能模塊的設(shè)計(jì)與實(shí)現(xiàn),包括SSO的單點(diǎn)登錄系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),網(wǎng)站內(nèi)容管理模塊的設(shè)計(jì)和實(shí)現(xiàn),商品管理模塊的設(shè)計(jì)和實(shí)現(xiàn),全文搜索系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),訂單管理模塊和購(gòu)物車模塊的設(shè)計(jì)與實(shí)現(xiàn)。6系統(tǒng)測(cè)試6.1測(cè)試目的任何一個(gè)系統(tǒng)在開發(fā)完成后都不可缺少測(cè)試環(huán)節(jié)。測(cè)試的主要目的是檢測(cè)項(xiàng)目系統(tǒng)中可能會(huì)存在的問(wèn)題,然后對(duì)系統(tǒng)進(jìn)行優(yōu)化改進(jìn),以提高系統(tǒng)的穩(wěn)定性及可靠性,同時(shí)也提高用戶的使用體驗(yàn)。測(cè)試需要保證完整性和正確性REF_Ref20162\r\h[25],完整全面的測(cè)試是整個(gè)系統(tǒng)質(zhì)量的重要保障,因此本次測(cè)試將從兩個(gè)方面進(jìn)行,分別是系統(tǒng)功能測(cè)試和系統(tǒng)性能測(cè)試。6.2系統(tǒng)功能測(cè)試下面是對(duì)系統(tǒng)各模塊中的各個(gè)功能進(jìn)行測(cè)試的詳細(xì)分析。用戶模塊測(cè)試。詳細(xì)結(jié)果如表6.1所示。表6.1用戶模塊系統(tǒng)功能測(cè)試表所屬功能模塊測(cè)試功能操作預(yù)期結(jié)果測(cè)試結(jié)果用戶模塊用戶注冊(cè)單點(diǎn)登錄輸入注冊(cè)信息輸入用戶名和密碼。輸入符合要求的注冊(cè)信息,則注冊(cè)成功;否則失敗輸入正確的用戶名和密碼,則登錄成功;否則失敗與預(yù)期結(jié)果一致與預(yù)期結(jié)果一致商品模塊測(cè)試。詳細(xì)結(jié)果如表6.2所示。表6.2商品模塊系統(tǒng)功能測(cè)試表所屬功能模塊測(cè)試功能操作預(yù)期結(jié)果測(cè)試結(jié)果商品模塊添加商品信息修改商品信息刪除商品信息查看商品信息點(diǎn)擊添加點(diǎn)擊修改點(diǎn)擊刪除點(diǎn)擊商品詳情(前臺(tái)用戶操作)輸入符合要求的信息,則添加成功;否則失敗輸入符合要求的信息,則編輯成功;否則失敗彈出刪除確認(rèn)頁(yè)面,確定則刪除;否則不刪跳轉(zhuǎn)商品詳情頁(yè)面與預(yù)期結(jié)果一致與預(yù)期結(jié)果一致與預(yù)期結(jié)果一致與預(yù)期結(jié)果一致訂單模塊測(cè)試。詳細(xì)結(jié)果如表6.3所示。表6.3訂單模塊系統(tǒng)功能測(cè)試表所屬功能模塊測(cè)試功能操作預(yù)期結(jié)果測(cè)試結(jié)果訂單模塊提交訂單信息修改訂單信息刪除訂單信息點(diǎn)擊提交訂單(前臺(tái)用戶操作)點(diǎn)擊修改點(diǎn)擊刪除用戶確認(rèn)信息無(wú)誤則提交輸入符合要求的信息,則編輯成功;否則失敗彈出刪除確認(rèn)頁(yè)面,確定則刪除;否則不刪與預(yù)期結(jié)果一致網(wǎng)站內(nèi)容管理模塊測(cè)試。詳細(xì)結(jié)果如表6.4所示。表6.4網(wǎng)站內(nèi)容管理模塊系統(tǒng)功能測(cè)試表所屬功能模塊測(cè)試功能操作預(yù)期結(jié)果測(cè)試結(jié)果網(wǎng)站內(nèi)容管理模塊添加類目信息重命名刪除類目信息點(diǎn)擊添加點(diǎn)擊重命名點(diǎn)擊刪除輸入符合要求的信息,則添加成功;否則失敗輸入符合要求的信息,則重命名成功;否則失敗彈出刪除確認(rèn)頁(yè)面,確定則刪除;否則不刪與預(yù)期結(jié)果一致與預(yù)期結(jié)果一致與預(yù)期結(jié)果一致添加內(nèi)容信息編輯內(nèi)容信息刪除內(nèi)容信息點(diǎn)擊添加點(diǎn)擊編輯點(diǎn)擊刪除輸入符合要求的信息,則添加成功;否則失敗輸入符合要求的信息,則編輯成功;否則失敗彈出刪除確認(rèn)頁(yè)面,確定則刪除;否則不刪與預(yù)期結(jié)果一致與預(yù)期結(jié)果一致與預(yù)期結(jié)果一致(5)購(gòu)物車模塊測(cè)試。詳細(xì)結(jié)果如表6.5所示。表6.5購(gòu)物車模塊系統(tǒng)功能測(cè)試表所屬功能模塊測(cè)試功能操作預(yù)期結(jié)果測(cè)試結(jié)果購(gòu)物車模塊添加商品至購(gòu)物車修改商品數(shù)量刪除選定商品清空購(gòu)物車點(diǎn)擊添加點(diǎn)擊編輯點(diǎn)擊刪除點(diǎn)擊清空添加成功修改成功彈出刪除確認(rèn)頁(yè)面,確定則刪除;否則不刪彈出清空確認(rèn)頁(yè)面,確定則清空;否則不清空與預(yù)期結(jié)果一致與預(yù)期結(jié)果一致與預(yù)期結(jié)果一致與預(yù)期結(jié)果一致6.3系統(tǒng)性能測(cè)試該部分將使用到Apache組織開放源碼的壓力測(cè)試工具ab,這款工具可以很好的用來(lái)測(cè)試本系統(tǒng)性能。通過(guò)命令:ab-c并發(fā)數(shù)-n請(qǐng)求數(shù)請(qǐng)求路徑/。來(lái)模擬真實(shí)環(huán)境下的負(fù)載壓力,完成系統(tǒng)性能的測(cè)試。以商城最常被訪問(wèn)的商城首頁(yè)為例,分別模擬了500并發(fā)數(shù)500請(qǐng)求數(shù)、500并發(fā)數(shù)1000請(qǐng)求數(shù)、500并發(fā)數(shù)5000請(qǐng)求數(shù)三種情況。500并發(fā)數(shù)500請(qǐng)求數(shù)。詳細(xì)結(jié)果如圖6.1所示。執(zhí)行語(yǔ)句:ab-c500

溫馨提示

  • 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ù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論