品優(yōu)購(gòu)-day01-課程講義-V1.2_第1頁(yè)
品優(yōu)購(gòu)-day01-課程講義-V1.2_第2頁(yè)
品優(yōu)購(gòu)-day01-課程講義-V1.2_第3頁(yè)
品優(yōu)購(gòu)-day01-課程講義-V1.2_第4頁(yè)
品優(yōu)購(gòu)-day01-課程講義-V1.2_第5頁(yè)
已閱讀5頁(yè),還剩35頁(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)介

品優(yōu)購(gòu)電商系統(tǒng)開發(fā)第1章分布式框架-Dubbox傳智播客.黑馬程序員課程目標(biāo)目標(biāo)1:了解電商行業(yè)特點(diǎn)以及理解電商的模式目標(biāo)2:了解整體品優(yōu)購(gòu)的架構(gòu)特點(diǎn)目標(biāo)3:能夠運(yùn)用Dubbox+SSM搭建分布式應(yīng)用目標(biāo)4:搭建工程框架,完成品牌列表后端代碼1.走進(jìn)電商1.1電商行業(yè)分析近年來(lái),中國(guó)的電子商務(wù)快速開展,交易額連創(chuàng)新高,電子商務(wù)在各領(lǐng)域的應(yīng)用不斷拓展和深化、相關(guān)效勞業(yè)蓬勃開展、支撐體系不斷健全完善、創(chuàng)新的動(dòng)力和能力不斷增強(qiáng)。電子商務(wù)正在與實(shí)體經(jīng)濟(jì)深度融合,進(jìn)入規(guī)模性開展階段,對(duì)經(jīng)濟(jì)社會(huì)生活的影響不斷增大,正成為我國(guó)經(jīng)濟(jì)開展的新引擎。中國(guó)電子商務(wù)研究中心數(shù)據(jù)顯示,截止到2023年底,中國(guó)電子商務(wù)市場(chǎng)交易規(guī)模達(dá)7.85萬(wàn)億人民幣,同比增長(zhǎng)30.83%。其中,B2B電子商務(wù)交易額達(dá)6.25萬(wàn)億,同比增長(zhǎng)27%。而2023年全年,中國(guó)電子商務(wù)市場(chǎng)交易額達(dá)6萬(wàn)億人民幣,同比增長(zhǎng)33%,占GDP比重上升到13%;2023年,電子商務(wù)占GDP的比重已經(jīng)高達(dá)15%。1.2電商行業(yè)技術(shù)特點(diǎn)技術(shù)新技術(shù)范圍廣分布式高并發(fā)、集群、負(fù)載均衡、高可用海量數(shù)據(jù)業(yè)務(wù)復(fù)雜系統(tǒng)平安1.3主要電商模式1.3.1B2B--企業(yè)對(duì)企業(yè)B2B〔BusinesstoBusiness〕是指進(jìn)行\(zhòng)t"://baike.baidu/_blank"電子商務(wù)交易的供需雙方都是商家〔或企業(yè)、公司〕,她〔他〕們使用了\t"://baike.baidu/_blank"互聯(lián)網(wǎng)的技術(shù)或各種商務(wù)網(wǎng)絡(luò)平臺(tái),完成商務(wù)交易的過(guò)程。電子商務(wù)是現(xiàn)代B2Bmarketing的一種具體主要的表現(xiàn)形式。案例:阿里巴巴、慧聰網(wǎng)1.3.2C2C--個(gè)人對(duì)個(gè)人C2C即Customer〔Consumer〕toCustomer〔Consumer〕,意思就是消費(fèi)者個(gè)人間的電子商務(wù)行為。比方一個(gè)消費(fèi)者有一臺(tái)電腦,通過(guò)網(wǎng)絡(luò)進(jìn)行\(zhòng)t"://baike.baidu/_blank"交易,把它出售給另外一個(gè)消費(fèi)者,此種交易類型就稱為C2C電子商務(wù)。案例:淘寶、易趣、瓜子二手車1.3.3B2C--企業(yè)對(duì)個(gè)人B2C是\t"://baike.baidu/_blank"Business-to-Customer的縮寫,而其中文簡(jiǎn)稱為“商對(duì)客〞。“商對(duì)客〞是\t"://baike.baidu/_blank"電子商務(wù)的一種模式,也就是通常說(shuō)的直接面向\t"://baike.baidu/_blank"消費(fèi)者銷售產(chǎn)品和效勞商業(yè)\t"://baike.baidu/_blank"零售模式。這種形式的電子商務(wù)一般以網(wǎng)絡(luò)零售業(yè)為主,主要借助于互聯(lián)網(wǎng)開展在線銷售活動(dòng)。B2C即\t"://baike.baidu/_blank"企業(yè)通過(guò)互聯(lián)網(wǎng)為消費(fèi)者提供一個(gè)新型的購(gòu)物環(huán)境——\t"://baike.baidu/_blank"網(wǎng)上商店,消費(fèi)者通過(guò)網(wǎng)絡(luò)在\t"://baike.baidu/_blank"網(wǎng)上購(gòu)物、\t"://baike.baidu/_blank"網(wǎng)上支付等消費(fèi)行為。案例:唯品會(huì)、樂(lè)蜂網(wǎng)1.3.4C2B--個(gè)人對(duì)企業(yè)C2B〔ConsumertoBusiness,即消費(fèi)者到企業(yè)〕,是互聯(lián)網(wǎng)經(jīng)濟(jì)時(shí)代新的商業(yè)模式。這一模式改變了原有生產(chǎn)者〔企業(yè)和機(jī)構(gòu)〕和消費(fèi)者的關(guān)系,是一種消費(fèi)者奉獻(xiàn)價(jià)值〔CreateValue〕,企業(yè)和機(jī)構(gòu)消費(fèi)價(jià)值〔ConsumeValue〕。C2B模式和我們熟知的供需模式〔DSM,DemandSupplyModel〕恰恰相反,真正的C2B應(yīng)該先有消費(fèi)者需求產(chǎn)生而后有企業(yè)生產(chǎn),即先有消費(fèi)者提出需求,后有生產(chǎn)企業(yè)按需求組織生產(chǎn)。通常情況為消費(fèi)者根據(jù)自身需求定制產(chǎn)品和價(jià)格,或主動(dòng)參與產(chǎn)品設(shè)計(jì)、生產(chǎn)和定價(jià),產(chǎn)品、價(jià)格等彰顯消費(fèi)者的個(gè)性化需求,生產(chǎn)企業(yè)進(jìn)行定制化生產(chǎn)。案例:海爾商城、

尚品宅配1.3.5O2O--線上到線下O2O即OnlineToOffline〔在線離線/\t"://baike.baidu/_blank"線上到線下〕,是指將線下的商務(wù)時(shí)機(jī)與互聯(lián)網(wǎng)結(jié)合,讓互聯(lián)網(wǎng)成為線下交易的平臺(tái),這個(gè)概念最早來(lái)源于\t"://baike.baidu/_blank"美國(guó)。O2O的概念非常廣泛,既可涉及到線上,又可涉及到線下,可以通稱為O2O。主流商業(yè)管理課程均對(duì)O2O這種新型的商業(yè)模式有所介紹及關(guān)注。案例:美團(tuán)、餓了嗎1.3.6F2C--工廠到個(gè)人F2C指的是Factorytocustomer,即從廠商到消費(fèi)者的電子商務(wù)模式。1.3.7B2B2C-企業(yè)-企業(yè)-個(gè)人\t"s://zhidao.baidu/question/_blank"B2B2C是一種\t"s://zhidao.baidu/question/_blank"電子商務(wù)類型的網(wǎng)絡(luò)購(gòu)物商業(yè)模式,B是BUSINESS的簡(jiǎn)稱,C是CUSTOMER的簡(jiǎn)稱,第一個(gè)B指的是商品或效勞的供給商,第二個(gè)B指的是從事電子商務(wù)的企業(yè),C那么是表示消費(fèi)者。第一個(gè)BUSINESS,并不僅僅局限于品牌供給商、影視制作公司和圖書出版商,任何的商品供給商或效勞供給商都能可以成為第一個(gè)BUSINESS;第二B是\t"s://zhidao.baidu/question/_blank"B2B2C模式的電子商務(wù)企業(yè),通過(guò)統(tǒng)一的經(jīng)營(yíng)管理對(duì)商品和效勞、消費(fèi)者終端同時(shí)進(jìn)行整合,是廣闊供給商和消費(fèi)者之間的橋梁,為供給商和消費(fèi)者提供優(yōu)質(zhì)的效勞,是\t"s://zhidao.baidu/question/_blank"互聯(lián)網(wǎng)電子商務(wù)效勞供給商。C表示消費(fèi)者,在第二個(gè)B構(gòu)建的統(tǒng)一電子商務(wù)平臺(tái)購(gòu)物的消費(fèi)者;\t"s://zhidao.baidu/question/_blank"B2B2C的來(lái)源于目前的B2B、B2C模式的演變和完善,把B2C和C2C完美地結(jié)合起來(lái),通過(guò)B2B2C模式的電子商務(wù)企業(yè)構(gòu)建自己的物流供給鏈系統(tǒng),提供統(tǒng)一的效勞。案例:京東商城、天貓商城2.品優(yōu)購(gòu)-需求分析與系統(tǒng)設(shè)計(jì)2.1品優(yōu)購(gòu)簡(jiǎn)介品優(yōu)購(gòu)網(wǎng)上商城是一個(gè)綜合性的B2B2C平臺(tái),類似京東商城、天貓商城。網(wǎng)站采用商家入駐的模式,商家入駐平臺(tái)提交申請(qǐng),有平臺(tái)進(jìn)行資質(zhì)審核,審核通過(guò)后,商家擁有獨(dú)立的管理后臺(tái)錄入商品信息。商品經(jīng)過(guò)平臺(tái)審核后即可發(fā)布。品優(yōu)購(gòu)網(wǎng)上商城主要分為網(wǎng)站前臺(tái)、運(yùn)營(yíng)商后臺(tái)、商家管理后臺(tái)三個(gè)子系統(tǒng)2.1.1網(wǎng)站前臺(tái)主要包括網(wǎng)站首頁(yè)、商家首頁(yè)、商品詳細(xì)頁(yè)、、搜索頁(yè)、會(huì)員中心、訂單與支付相關(guān)頁(yè)面、秒殺頻道等。2.1.2運(yùn)營(yíng)商后臺(tái)是運(yùn)營(yíng)商的運(yùn)營(yíng)人員的管理后臺(tái)。主要包括商家審核、品牌管理、規(guī)格管理、模板管理、商品分類管理、商品審核、廣告類型管理、廣告管理、訂單查詢、商家結(jié)算等。2.1.3商家管理后臺(tái)入駐的商家進(jìn)行管理的后臺(tái),主要功能是對(duì)商品的管理以及訂單查詢統(tǒng)計(jì)、資金結(jié)算等功能。2.2系統(tǒng)架構(gòu)2.2.1什么是SOA架構(gòu)SOA是Service-OrientedArchitecture的首字母簡(jiǎn)稱,它是一種支持面向效勞的架構(gòu)樣式。從效勞、基于效勞開發(fā)和效勞的結(jié)果來(lái)看,面向效勞是一種思考方式。其實(shí)SOA架構(gòu)更多應(yīng)用于互聯(lián)網(wǎng)工程開發(fā)。為什么互聯(lián)網(wǎng)工程會(huì)采用SOA架構(gòu)呢?隨著互聯(lián)網(wǎng)的開展,網(wǎng)站應(yīng)用的規(guī)模不斷擴(kuò)大,常規(guī)的垂直應(yīng)用架構(gòu)已無(wú)法應(yīng)對(duì),分布式效勞架構(gòu)以及流動(dòng)計(jì)算架構(gòu)勢(shì)在必行,迫切需一個(gè)治理系統(tǒng)確保架構(gòu)有條不紊的演進(jìn)。2.2.2品優(yōu)購(gòu)架構(gòu)分析〔清晰的架構(gòu)圖請(qǐng)看品優(yōu)購(gòu)架構(gòu)圖.xlsx〕2.3數(shù)據(jù)庫(kù)表結(jié)構(gòu)表名稱含義tb_brand品牌tb_specification規(guī)格tb_specification_option規(guī)格選項(xiàng)tb_type_template類型模板:用于關(guān)聯(lián)品牌和規(guī)格tb_item_cat商品分類tb_seller商家tb_goods商品tb_goods_desc商品詳情tb_item商品明細(xì)tb_content內(nèi)容〔廣告〕tb_content_category內(nèi)容〔廣告〕類型tb_user用戶tb_order訂單tb_order_item訂單明細(xì)tb_pay_log支付日志2.4框架組合品優(yōu)購(gòu)采用當(dāng)前流行的前后端編程架構(gòu)。后端框架采用Spring+SpringMVC+mybatis+Dubbox。前端采用angularJS+Bootstrap。3.Dubbox框架3.1Dubbox簡(jiǎn)介Dubbox是一個(gè)分布式效勞框架,其前身是阿里巴巴開源工程Dubbo,被國(guó)內(nèi)電商及互聯(lián)網(wǎng)工程中使用,后期阿里巴巴停止了該工程的維護(hù),當(dāng)當(dāng)網(wǎng)便在Dubbo根底上進(jìn)行優(yōu)化,并繼續(xù)維護(hù),為了與原有的Dubbo區(qū)分,故將其命名為Dubbox。Dubbox致力于提供高性能和透明化的RPC遠(yuǎn)程效勞調(diào)用方案,以及SOA效勞治理方案。簡(jiǎn)單的說(shuō),dubbox就是個(gè)效勞框架,如果沒(méi)有分布式的需求,其實(shí)是不需要用的,只有在分布式的時(shí)候,才有dubbox這樣的分布式效勞框架的需求,并且本質(zhì)上是個(gè)效勞調(diào)用的東東,說(shuō)白了就是個(gè)遠(yuǎn)程效勞調(diào)用的分布式框架。節(jié)點(diǎn)角色說(shuō)明:Provider:暴露效勞的效勞提供方。Consumer:調(diào)用遠(yuǎn)程效勞的效勞消費(fèi)方。Registry:效勞注冊(cè)與發(fā)現(xiàn)的注冊(cè)中心。Monitor:統(tǒng)計(jì)效勞的調(diào)用次調(diào)和調(diào)用時(shí)間的監(jiān)控中心。Container:效勞運(yùn)行容器。調(diào)用關(guān)系說(shuō)明:0.效勞容器負(fù)責(zé)啟動(dòng),加載,運(yùn)行效勞提供者。1.效勞提供者在啟動(dòng)時(shí),向注冊(cè)中心注冊(cè)自己提供的效勞。2.效勞消費(fèi)者在啟動(dòng)時(shí),向注冊(cè)中心訂閱自己所需的效勞。3.注冊(cè)中心返回效勞提供者地址列表給消費(fèi)者,如果有變更,注冊(cè)中心將基于長(zhǎng)連接推送變更數(shù)據(jù)給消費(fèi)者。4.效勞消費(fèi)者,從提供者地址列表中,基于軟負(fù)載均衡算法,選一臺(tái)提供者進(jìn)行調(diào)用,如果調(diào)用失敗,再選另一臺(tái)調(diào)用。5.效勞消費(fèi)者和提供者,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間,定時(shí)每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心。3.2注冊(cè)中心Zookeeper3.2.1Zookeeper介紹官方推薦使用zookeeper注冊(cè)中心。注冊(cè)中心負(fù)責(zé)效勞地址的注冊(cè)與查找,相當(dāng)于目錄效勞,效勞提供者和消費(fèi)者只在啟動(dòng)時(shí)與注冊(cè)中心交互,注冊(cè)中心不轉(zhuǎn)發(fā)請(qǐng)求,壓力較小。Zookeeper是ApacaheHadoop的子工程,是一個(gè)樹型的目錄效勞,支持變更推送,適合作為Dubbox效勞的注冊(cè)中心,工業(yè)強(qiáng)度較高,可用于生產(chǎn)環(huán)境。3.2.2Zookeeper在Linux系統(tǒng)的安裝安裝步驟:第一步:安裝jdk〔此步省略,我給大家提供的鏡像已經(jīng)安裝好JDK〕第二步:把zookeeper的壓縮包〔資源\配套軟件\dubbox\zookeeper-3.4.6.tar.gz〕上傳到linux系統(tǒng)。Alt+P進(jìn)入SFTP,輸入putd:\zookeeper-3.4.6.tar.gz上傳第三步:解壓縮壓縮包tar-zxvfzookeeper-3.4.6.tar.gz第四步:進(jìn)入zookeeper-3.4.6目錄,創(chuàng)立data文件夾。mkdirdata第五步:進(jìn)入conf目錄,把zoo_sample.cfg改名為zoo.cfgcdconfmvzoo_sample.cfgzoo.cfg第六步:翻開zoo.cfg,修改data屬性:dataDir=/root/zookeeper-3.4.6/data3.2.3Zookeeper效勞啟動(dòng)進(jìn)入bin目錄,啟動(dòng)效勞輸入命令./zkServer.shstart輸出以下內(nèi)容表示啟動(dòng)成功關(guān)閉效勞輸入命令./zkServer.shstop輸出以下提示信息查看狀態(tài):./zkServer.shstatus如果啟動(dòng)狀態(tài),提示如果未啟動(dòng)狀態(tài),提示:3.3Dubbox本地JAR包部署與安裝〔了解〕Dubbox的jar包并沒(méi)有部署到Maven的中央倉(cāng)庫(kù)中,大家在Maven的中央倉(cāng)庫(kù)中可以查找到Dubbo的最終版本是2.5.3,阿里巴巴解散了Dubbo團(tuán)隊(duì)后由當(dāng)當(dāng)網(wǎng)繼續(xù)維護(hù)此工程,并改名為Dubbox,坐標(biāo)不變,版本變更了,但是并沒(méi)有提交到中央倉(cāng)庫(kù)。我們現(xiàn)在需要手動(dòng)將Dubbox的jar包安裝到我的本地倉(cāng)庫(kù)中。先將dubbo-2.8.4.jar包放到d:\setup,然后輸入命令mvninstall:install-file-Dfile=d:\setup\dubbo-2.8.4.jar-DgroupId=com.alibaba-DartifactId=dubbo-Dversion=2.8.4-Dpackaging=jar3.4配置離線約束地址:://code.alibabatech/schema/dubbo/dubbo.xsd3.5入門小Demo3.5.1效勞提供者開發(fā)開發(fā)步驟:〔1〕創(chuàng)立Maven工程〔WAR〕dubboxdemo-service,在pom.xml中引入依賴<projectxmlns=":///POM/4.0.0"xmlns:xsi=":///2001/XMLSchema-instance"xsi:schemaLocation=":///POM/4.0.0:///xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.itcast.dubboxdemo</groupId><artifactId>dubboxdemo-service</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><properties> <spring.version>4.2.4.RELEASE</spring.version></properties> <dependencies> <!--Spring--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <!--dubbo相關(guān)--> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.8.4</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>3.11.0.GA</version> </dependency> </dependencies><build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <!--指定端口--> <port>8081</port> <!--請(qǐng)求路徑--> <path>/</path> </configuration> </plugin> </plugins></build></project>〔2〕在工程的webapps下創(chuàng)立WEB-INF文件夾,創(chuàng)立web.xml<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns:xsi=":///2001/XMLSchema-instance" xmlns="://java.sun/xml/ns/javaee" xsi:schemaLocation="://java.sun/xml/ns/javaee://java.sun/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <!--加載spring容器--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app>〔3〕創(chuàng)立業(yè)務(wù)接口創(chuàng)立包c(diǎn)n.itcast.dubbodemo.service,用于存放業(yè)務(wù)接口,創(chuàng)立接口packagecn.itcast.dubbodemo.service;/***業(yè)務(wù)接口*@authorAdministrator**/publicinterfaceUserService{ publicStringgetName(); }〔4〕創(chuàng)立業(yè)務(wù)實(shí)現(xiàn)類創(chuàng)立包c(diǎn)n.itcast.dubbodemo.service.impl,用于存放業(yè)務(wù)實(shí)現(xiàn)類。創(chuàng)立業(yè)務(wù)實(shí)現(xiàn)類:packagecn.itcast.dubbodemo.service.impl;importcom.alibaba.dubbo.config.annotation.Service;importcn.itcast.dubbodemo.service.UserService;@ServicepublicclassUserServiceImplimplementsUserService{ publicStringgetName(){ return"itcast"; }}注意:Service注解與原來(lái)不同,需要引入com.alibaba包下的〔5〕編寫配置文件在src/main/resources下創(chuàng)立applicationContext-service.xml,內(nèi)容如下:<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns=":///schema/beans" xmlns:xsi=":///2001/XMLSchema-instance"xmlns:p=":///schema/p" xmlns:context=":///schema/context" xmlns:dubbo="://code.alibabatech/schema/dubbo"xmlns:mvc=":///schema/mvc" xsi:schemaLocation=":///schema/beans:///schema/beans/spring-beans.xsd:///schema/mvc:///schema/mvc/spring-mvc.xsd://code.alibabatech/schema/dubbo://code.alibabatech/schema/dubbo/dubbo.xsd:///schema/context:///schema/context/spring-context.xsd"> <dubbo:applicationname="dubboxdemo-service"/><dubbo:registryaddress="zookeeper://32:2181"/><dubbo:annotationpackage="cn.itcast.dubboxdemo.service"/></beans>注意:dubbo:annotation用于掃描@Service注解?!?〕測(cè)試運(yùn)行tomcat7:run3.5.2效勞消費(fèi)者開發(fā)開發(fā)步驟:〔1〕創(chuàng)立Maven工程〔WAR〕dubboxdemo-web,在pom.xml引入依賴,同“dubboxdemo-service〞工程。區(qū)別就是把tomcat插件的運(yùn)行端口改為8082?!?〕在webapps目錄下創(chuàng)立WEB-INF目錄,并創(chuàng)立web.xml<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns:xsi=":///2001/XMLSchema-instance" xmlns="://java.sun/xml/ns/javaee" xsi:schemaLocation="://java.sun/xml/ns/javaee://java.sun/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <!--解決post亂碼--> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--指定加載的配置文件,通過(guò)參數(shù)contextConfigLocation加載--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext-web.xml</param-value> </init-param></servlet><servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern></servlet-mapping></web-app>〔3〕拷貝業(yè)務(wù)接口將“dubboxdemo-service〞工程的cn.itcast.dubboxdemo.service包以及下面的接口拷貝至此工程。〔4〕編寫Controllerpackagecn.itcast.dubboxdemo.controller;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;importcn.itcast.dubbodemo.service.UserService;@Controller@RequestMapping("/user")publicclassUserController{ @Reference privateUserServiceuserService; @RequestMapping("/showName") @ResponseBody publicStringshowName(){ returnuserService.getName(); } }〔5〕編寫spring配置文件在src/main/resources下創(chuàng)立applicationContext-web.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns=":///schema/beans" xmlns:xsi=":///2001/XMLSchema-instance"xmlns:p=":///schema/p" xmlns:context=":///schema/context" xmlns:dubbo="://code.alibabatech/schema/dubbo"xmlns:mvc=":///schema/mvc" xsi:schemaLocation=":///schema/beans:///schema/beans/spring-beans.xsd:///schema/mvc:///schema/mvc/spring-mvc.xsd://code.alibabatech/schema/dubbo://code.alibabatech/schema/dubbo/dubbo.xsd:///schema/context:///schema/context/spring-context.xsd"> <mvc:annotation-driven> <mvc:message-convertersregister-defaults="false"> <beanclass="org.springframework..converter.StringMessageConverter"> <constructor-argvalue="UTF-8"/> </bean> </mvc:message-converters> </mvc:annotation-driven> <!--引用dubbo效勞--> <dubbo:applicationname="dubboxdemo-web"/> <dubbo:registryaddress="zookeeper://32:2181"/><dubbo:annotationpackage="cn.itcast.dubboxdemo.controller"/></beans>〔6〕測(cè)試運(yùn)行tomcat7:run在瀏覽器輸入://localhost:8082/user/showName.do,查看瀏覽器輸出結(jié)果3.6管理中心的部署我們?cè)陂_發(fā)時(shí),需要知道注冊(cè)中心都注冊(cè)了哪些效勞,以便我們開發(fā)和測(cè)試。我們可以通過(guò)部署一個(gè)管理中心來(lái)實(shí)現(xiàn)。其實(shí)管理中心就是一個(gè)web應(yīng)用,部署到tomcat即可。3.6.1管理端安裝〔1〕編譯源碼,得到war包給大家下發(fā)的資源中有個(gè)dubbox-master.zip,這個(gè)是dubbox的源碼,我們可以使用maven命令編譯源碼得到“管理端〞的war包將此壓縮包解壓,在命令符下進(jìn)入dubbo-admin目錄,輸入maven命令mvnpackage-Dmaven.skip.test=true如果你看到如下信息,就說(shuō)明成功了〔2〕進(jìn)入target文件夾,你會(huì)看到一個(gè)dubbo-admin-2.8.4.war,在linux效勞器上安裝tomcat,將此war包上傳到linux效勞器的tomcat的webapps下。為了訪問(wèn)方便,你可以把版本號(hào)去掉。啟動(dòng)tomcat后自動(dòng)解壓?!?〕如果你部署在zookeeper同一臺(tái)主機(jī)并且端口是默認(rèn)的2181,那么無(wú)需修改任何配置。如果不是在一臺(tái)主機(jī)上或端口被修改,需要修改WEB-INF下的perties,修改如下配置:dubbo.registry.address=zookeeper://:2181修改后重新啟動(dòng)tomcat3.6.2管理端使用〔1〕翻開瀏覽器,輸入://32:8080/dubbo-admin/,登錄用戶名和密碼均為root進(jìn)入首頁(yè)。(32:)是我部署的linux主機(jī)地址。〔2〕啟動(dòng)效勞提供者工程,即可在效勞治理-提供者查看到該效勞。點(diǎn)擊其中一條數(shù)據(jù)后可以查看詳情?!?〕啟動(dòng)效勞消費(fèi)者工程,運(yùn)行頁(yè)面,觀察“消費(fèi)者〞列表4.品優(yōu)購(gòu)-框架搭建4.1工程結(jié)構(gòu)分析與設(shè)計(jì)最終完整的工程結(jié)構(gòu)如下:工程說(shuō)明:pinyougou-parent聚合工程pinyougou-pojo通用實(shí)體類層pinyougou-dao通用數(shù)據(jù)訪問(wèn)層pinyougou-xxxxx-interface某效勞層接口pinyougou-xxxxx-service某效勞層實(shí)現(xiàn)pinyougou-xxxxx-web某web工程4.2創(chuàng)立數(shù)據(jù)庫(kù)表執(zhí)行資源文件夾中pinyougou-db.sql4.3搭建框架4.3.1父工程創(chuàng)立Maven工程pinyougou-parent〔POM〕,groupId為com.pinyougou,artifactId為pinyougou-parent,在pom.xml中添加鎖定版本信息dependencyManagement與pluginManagement,詳見“資源/配置文件/第一天搭建/父工程/pom.xml〞。以下模塊均繼承自此父工程4.3.2通用實(shí)體類模塊創(chuàng)立通用實(shí)體類模塊-pinyougou-pojo4.3.3通用數(shù)據(jù)訪問(wèn)模塊創(chuàng)立通用數(shù)據(jù)訪問(wèn)模塊pinyougou-dao.添加依賴Mybatis和pinyougou-pojo<dependencies> <!--Mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> </dependency> <dependency> <groupId>com.github.miemiedev</groupId> <artifactId>mybatis-paginator</artifactId> </dependency> <!--MySql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!--連接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </dependency> <dependency> <groupId>com.pinyougou</groupId> <artifactId>pinyougou-pojo</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency></dependencies>將“配置文件/第一天搭建/數(shù)據(jù)訪問(wèn)層工程〞下的配置文件拷貝到pinyougou-dao工程4.3.4通用工具類模塊創(chuàng)立通用工具類模塊pinyougou-common4.3.5商家商品效勞接口模塊創(chuàng)立maven〔jar〕模塊pinyougou-sellergoods-interface,pom.xml添加依賴<dependencies> <dependency> <groupId>com.pinyougou</groupId> <artifactId>pinyougou-pojo</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency></dependencies>4.3.6商家商品效勞模塊創(chuàng)立maven〔war〕模塊pinyougou-sellergoods-service,pom.xml引入依賴<dependencies> <!--Spring--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> </dependency> <!--dubbo相關(guān)--> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> </dependency> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>com.pinyougou</groupId> <artifactId>pinyougou-common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.pinyougou</groupId> <artifactId>pinyougou-dao</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.pinyougou</groupId> <artifactId>pinyougou-sellergoods-interface</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency></dependencies><build> <plugins> <!--配置Tomcat插件--> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <path>/</path> <port>9001</port> </configuration> </plugin> </plugins></build></project>在webapps下創(chuàng)立WEB-INF/web.xml,加載spring容器<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns:xsi=":///2001/XMLSchema-instance" xmlns="://java.sun/xml/ns/javaee" xsi:schemaLocation="://java.sun/xml/ns/javaee://java.sun/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <!--加載spring容器--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring/applicationContext*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener></web-app>創(chuàng)立包c(diǎn)om.pinyougou.sellergoods.service.impl在src/main/resources下創(chuàng)立spring/applicationContext-service.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns=":///schema/beans" xmlns:xsi=":///2001/XMLSchema-instance"xmlns:p=":///schema/p" xmlns:context=":///schema/context" xmlns:dubbo="://code.alibabatech/schema/dubbo"xmlns:mvc=":///schema/mvc" xsi:schemaLocation=":///schema/beans:///schema/beans/spring-beans.xsd:///schema/mvc:///schema/mvc/spring-mvc.xsd://code.alibabatech/schema/dubbo://code.alibabatech/schema/dubbo/dubbo.xsd:///schema/context:///schema/context/spring-context.xsd"><dubbo:protocolname="dubbo"port="20881"></dubbo:protocol> <dubbo:applicationname="pinyougou-sellergoods-service"/><dubbo:registryaddress="zookeeper://29:2181"/><dubbo:annotationpackage="com.pinyougou.sellergoods.service.impl"/></beans>4.3.7運(yùn)營(yíng)商管理后臺(tái)創(chuàng)立maven〔war〕模塊pinyougou-manager-web,pom.xml引入依賴<dependencies> <!--Spring--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> </dependency> <!--dubbo相關(guān)--> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> </dependency> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>com.pinyougou</groupId> <artifactId>pinyougou-common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.pinyougou</groupId> <artifactId>pinyougou-sellergoods-interface</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency></dependencies><build> <plugins> <!--配置Tomcat插件--> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <path>/</path> <port>9101</port> </configuration> </plugin> </plugins></build>在webapps下創(chuàng)立WEB-INF/web.xml,加載spring容器<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns:xsi=":///2001/XMLSchema-instance" xmlns="://java.sun/xml/ns/javaee" xsi:schemaLocation="://java.sun/xml/ns/javaee://java.sun/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <!--解決post亂碼--> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--指定加載的配置文件,通過(guò)參數(shù)contextConfigLocation加載--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/springmvc.xml</param-value> </init-param></servlet><servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern></servlet-mapping></web-app>創(chuàng)立包c(diǎn)om.pinyougou.manager.controller在src/main/resources下創(chuàng)立spring/springmvc.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns=":///schema/beans" xmlns:xsi=":///2001/XMLSchema-instance"xmlns:p=":///schema/p" xmlns:context=":///schema/context" xmlns:dubbo="://code.alibabatech/schema/dubbo"xmlns:mvc=":///schema/mvc" xsi:schemaLocation=":///schema/beans:///schema/beans/spring-beans.xsd:///schema/mvc:///schema/mvc/spring-mvc.xsd://code.alibabatech/schema/dubbo://code.alibabatech/schema/dubbo/dubbo.xsd:///schema/context:///schema/context/spring-context.xsd"> <mvc:annotation-driven> <mvc:message-convertersregister-defaults="true"> <beanclass="com.alibaba.fastjson.support.spring.FastJsonMessageConverter"> <propertyname="supportedMediaTypes"value="application/json"/> <propertyname="features"> <array> <value>WriteMapNullValue</value> <value>WriteDateUseDateFormat</value> </array> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> <!--引用dubbo效勞--> <dubbo:applicationname="pinyougou-manager-web"/> <dubbo:registryaddress="zookeeper://32:2181"/> <dubbo:annotationpackage="com.pinyougou.manager.controller"/> </beans>4.3.8商家管理后臺(tái)構(gòu)建web模塊pinyougou-shop-web與運(yùn)營(yíng)商管理后臺(tái)的構(gòu)建方式類似。區(qū)別:〔1〕定義tomcat的啟動(dòng)端口為9102〔2〕springmvc.xml<!--引用dubbo效勞--> <dubbo:applicationname="pinyougou-shop-web"/> <dubbo:registryaddress="zookeeper://32:2181"/> <dubbo:annotationpackage="com.pinyougou.shop.controller"/>4.4實(shí)體類與數(shù)據(jù)訪問(wèn)層模塊4.4.1生成代碼利用反向工程generatorSqlmapCustom實(shí)現(xiàn)實(shí)體類與數(shù)據(jù)訪問(wèn)層代碼的自動(dòng)生成4.4.2拷貝代碼將com.pinyougou.pojo包拷貝到pojo工程將com.pinyougou.mapper包和resouce下的com.pinyougou.mapper文件夾拷貝到dao工程4.4.3修改實(shí)體類代碼修改每個(gè)實(shí)體類,讓其實(shí)現(xiàn)Serializable接口5.品牌列表-后端代碼5.1需求分析完成品牌管理的后端代碼,在瀏覽器可查詢品牌的數(shù)據(jù)〔json格式〕5.2數(shù)據(jù)庫(kù)表tb_brand品牌表字段類型長(zhǎng)度含義IdBigint主鍵NameVarchar255品牌名稱First_charVarchar1品牌首字母5.3后端代碼5.2.1效勞層接口在pinyougou-sellergoods-interface工程創(chuàng)立BrandService接口packagecom.pinyougou.

溫馨提示

  • 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)論