版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
品優(yōu)購電商系統(tǒng)開發(fā)第1章分布式框架-Dubbox傳智播客.黑馬程序員課程目標目標1:了解電商行業(yè)特點以及理解電商的模式目標2:了解整體品優(yōu)購的架構特點目標3:能夠運用Dubbox+SSM搭建分布式應用目標4:搭建工程框架,完成品牌列表后端代碼1.走進電商1.1電商行業(yè)分析近年來,中國的電子商務快速開展,交易額連創(chuàng)新高,電子商務在各領域的應用不斷拓展和深化、相關效勞業(yè)蓬勃開展、支撐體系不斷健全完善、創(chuàng)新的動力和能力不斷增強。電子商務正在與實體經(jīng)濟深度融合,進入規(guī)模性開展階段,對經(jīng)濟社會生活的影響不斷增大,正成為我國經(jīng)濟開展的新引擎。中國電子商務研究中心數(shù)據(jù)顯示,截止到2023年底,中國電子商務市場交易規(guī)模達7.85萬億人民幣,同比增長30.83%。其中,B2B電子商務交易額達6.25萬億,同比增長27%。而2023年全年,中國電子商務市場交易額達6萬億人民幣,同比增長33%,占GDP比重上升到13%;2023年,電子商務占GDP的比重已經(jīng)高達15%。1.2電商行業(yè)技術特點技術新技術范圍廣分布式高并發(fā)、集群、負載均衡、高可用海量數(shù)據(jù)業(yè)務復雜系統(tǒng)平安1.3主要電商模式1.3.1B2B--企業(yè)對企業(yè)B2B〔BusinesstoBusiness〕是指進行\(zhòng)t"://baike.baidu/_blank"電子商務交易的供需雙方都是商家〔或企業(yè)、公司〕,她〔他〕們使用了\t"://baike.baidu/_blank"互聯(lián)網(wǎng)的技術或各種商務網(wǎng)絡平臺,完成商務交易的過程。電子商務是現(xiàn)代B2Bmarketing的一種具體主要的表現(xiàn)形式。案例:阿里巴巴、慧聰網(wǎng)1.3.2C2C--個人對個人C2C即Customer〔Consumer〕toCustomer〔Consumer〕,意思就是消費者個人間的電子商務行為。比方一個消費者有一臺電腦,通過網(wǎng)絡進行\(zhòng)t"://baike.baidu/_blank"交易,把它出售給另外一個消費者,此種交易類型就稱為C2C電子商務。案例:淘寶、易趣、瓜子二手車1.3.3B2C--企業(yè)對個人B2C是\t"://baike.baidu/_blank"Business-to-Customer的縮寫,而其中文簡稱為“商對客〞?!吧虒通暿荺t"://baike.baidu/_blank"電子商務的一種模式,也就是通常說的直接面向\t"://baike.baidu/_blank"消費者銷售產(chǎn)品和效勞商業(yè)\t"://baike.baidu/_blank"零售模式。這種形式的電子商務一般以網(wǎng)絡零售業(yè)為主,主要借助于互聯(lián)網(wǎng)開展在線銷售活動。B2C即\t"://baike.baidu/_blank"企業(yè)通過互聯(lián)網(wǎng)為消費者提供一個新型的購物環(huán)境——\t"://baike.baidu/_blank"網(wǎng)上商店,消費者通過網(wǎng)絡在\t"://baike.baidu/_blank"網(wǎng)上購物、\t"://baike.baidu/_blank"網(wǎng)上支付等消費行為。案例:唯品會、樂蜂網(wǎng)1.3.4C2B--個人對企業(yè)C2B〔ConsumertoBusiness,即消費者到企業(yè)〕,是互聯(lián)網(wǎng)經(jīng)濟時代新的商業(yè)模式。這一模式改變了原有生產(chǎn)者〔企業(yè)和機構〕和消費者的關系,是一種消費者奉獻價值〔CreateValue〕,企業(yè)和機構消費價值〔ConsumeValue〕。C2B模式和我們熟知的供需模式〔DSM,DemandSupplyModel〕恰恰相反,真正的C2B應該先有消費者需求產(chǎn)生而后有企業(yè)生產(chǎn),即先有消費者提出需求,后有生產(chǎn)企業(yè)按需求組織生產(chǎn)。通常情況為消費者根據(jù)自身需求定制產(chǎn)品和價格,或主動參與產(chǎn)品設計、生產(chǎn)和定價,產(chǎn)品、價格等彰顯消費者的個性化需求,生產(chǎn)企業(yè)進行定制化生產(chǎn)。案例:海爾商城、
尚品宅配1.3.5O2O--線上到線下O2O即OnlineToOffline〔在線離線/\t"://baike.baidu/_blank"線上到線下〕,是指將線下的商務時機與互聯(lián)網(wǎng)結合,讓互聯(lián)網(wǎng)成為線下交易的平臺,這個概念最早來源于\t"://baike.baidu/_blank"美國。O2O的概念非常廣泛,既可涉及到線上,又可涉及到線下,可以通稱為O2O。主流商業(yè)管理課程均對O2O這種新型的商業(yè)模式有所介紹及關注。案例:美團、餓了嗎1.3.6F2C--工廠到個人F2C指的是Factorytocustomer,即從廠商到消費者的電子商務模式。1.3.7B2B2C-企業(yè)-企業(yè)-個人\t"s://zhidao.baidu/question/_blank"B2B2C是一種\t"s://zhidao.baidu/question/_blank"電子商務類型的網(wǎng)絡購物商業(yè)模式,B是BUSINESS的簡稱,C是CUSTOMER的簡稱,第一個B指的是商品或效勞的供給商,第二個B指的是從事電子商務的企業(yè),C那么是表示消費者。第一個BUSINESS,并不僅僅局限于品牌供給商、影視制作公司和圖書出版商,任何的商品供給商或效勞供給商都能可以成為第一個BUSINESS;第二B是\t"s://zhidao.baidu/question/_blank"B2B2C模式的電子商務企業(yè),通過統(tǒng)一的經(jīng)營管理對商品和效勞、消費者終端同時進行整合,是廣闊供給商和消費者之間的橋梁,為供給商和消費者提供優(yōu)質的效勞,是\t"s://zhidao.baidu/question/_blank"互聯(lián)網(wǎng)電子商務效勞供給商。C表示消費者,在第二個B構建的統(tǒng)一電子商務平臺購物的消費者;\t"s://zhidao.baidu/question/_blank"B2B2C的來源于目前的B2B、B2C模式的演變和完善,把B2C和C2C完美地結合起來,通過B2B2C模式的電子商務企業(yè)構建自己的物流供給鏈系統(tǒng),提供統(tǒng)一的效勞。案例:京東商城、天貓商城2.品優(yōu)購-需求分析與系統(tǒng)設計2.1品優(yōu)購簡介品優(yōu)購網(wǎng)上商城是一個綜合性的B2B2C平臺,類似京東商城、天貓商城。網(wǎng)站采用商家入駐的模式,商家入駐平臺提交申請,有平臺進行資質審核,審核通過后,商家擁有獨立的管理后臺錄入商品信息。商品經(jīng)過平臺審核后即可發(fā)布。品優(yōu)購網(wǎng)上商城主要分為網(wǎng)站前臺、運營商后臺、商家管理后臺三個子系統(tǒng)2.1.1網(wǎng)站前臺主要包括網(wǎng)站首頁、商家首頁、商品詳細頁、、搜索頁、會員中心、訂單與支付相關頁面、秒殺頻道等。2.1.2運營商后臺是運營商的運營人員的管理后臺。主要包括商家審核、品牌管理、規(guī)格管理、模板管理、商品分類管理、商品審核、廣告類型管理、廣告管理、訂單查詢、商家結算等。2.1.3商家管理后臺入駐的商家進行管理的后臺,主要功能是對商品的管理以及訂單查詢統(tǒng)計、資金結算等功能。2.2系統(tǒng)架構2.2.1什么是SOA架構SOA是Service-OrientedArchitecture的首字母簡稱,它是一種支持面向效勞的架構樣式。從效勞、基于效勞開發(fā)和效勞的結果來看,面向效勞是一種思考方式。其實SOA架構更多應用于互聯(lián)網(wǎng)工程開發(fā)。為什么互聯(lián)網(wǎng)工程會采用SOA架構呢?隨著互聯(lián)網(wǎng)的開展,網(wǎng)站應用的規(guī)模不斷擴大,常規(guī)的垂直應用架構已無法應對,分布式效勞架構以及流動計算架構勢在必行,迫切需一個治理系統(tǒng)確保架構有條不紊的演進。2.2.2品優(yōu)購架構分析〔清晰的架構圖請看品優(yōu)購架構圖.xlsx〕2.3數(shù)據(jù)庫表結構表名稱含義tb_brand品牌tb_specification規(guī)格tb_specification_option規(guī)格選項tb_type_template類型模板:用于關聯(lián)品牌和規(guī)格tb_item_cat商品分類tb_seller商家tb_goods商品tb_goods_desc商品詳情tb_item商品明細tb_content內容〔廣告〕tb_content_category內容〔廣告〕類型tb_user用戶tb_order訂單tb_order_item訂單明細tb_pay_log支付日志2.4框架組合品優(yōu)購采用當前流行的前后端編程架構。后端框架采用Spring+SpringMVC+mybatis+Dubbox。前端采用angularJS+Bootstrap。3.Dubbox框架3.1Dubbox簡介Dubbox是一個分布式效勞框架,其前身是阿里巴巴開源工程Dubbo,被國內電商及互聯(lián)網(wǎng)工程中使用,后期阿里巴巴停止了該工程的維護,當當網(wǎng)便在Dubbo根底上進行優(yōu)化,并繼續(xù)維護,為了與原有的Dubbo區(qū)分,故將其命名為Dubbox。Dubbox致力于提供高性能和透明化的RPC遠程效勞調用方案,以及SOA效勞治理方案。簡單的說,dubbox就是個效勞框架,如果沒有分布式的需求,其實是不需要用的,只有在分布式的時候,才有dubbox這樣的分布式效勞框架的需求,并且本質上是個效勞調用的東東,說白了就是個遠程效勞調用的分布式框架。節(jié)點角色說明:Provider:暴露效勞的效勞提供方。Consumer:調用遠程效勞的效勞消費方。Registry:效勞注冊與發(fā)現(xiàn)的注冊中心。Monitor:統(tǒng)計效勞的調用次調和調用時間的監(jiān)控中心。Container:效勞運行容器。調用關系說明:0.效勞容器負責啟動,加載,運行效勞提供者。1.效勞提供者在啟動時,向注冊中心注冊自己提供的效勞。2.效勞消費者在啟動時,向注冊中心訂閱自己所需的效勞。3.注冊中心返回效勞提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者。4.效勞消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。5.效勞消費者和提供者,在內存中累計調用次數(shù)和調用時間,定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心。3.2注冊中心Zookeeper3.2.1Zookeeper介紹官方推薦使用zookeeper注冊中心。注冊中心負責效勞地址的注冊與查找,相當于目錄效勞,效勞提供者和消費者只在啟動時與注冊中心交互,注冊中心不轉發(fā)請求,壓力較小。Zookeeper是ApacaheHadoop的子工程,是一個樹型的目錄效勞,支持變更推送,適合作為Dubbox效勞的注冊中心,工業(yè)強度較高,可用于生產(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進入SFTP,輸入putd:\zookeeper-3.4.6.tar.gz上傳第三步:解壓縮壓縮包tar-zxvfzookeeper-3.4.6.tar.gz第四步:進入zookeeper-3.4.6目錄,創(chuàng)立data文件夾。mkdirdata第五步:進入conf目錄,把zoo_sample.cfg改名為zoo.cfgcdconfmvzoo_sample.cfgzoo.cfg第六步:翻開zoo.cfg,修改data屬性:dataDir=/root/zookeeper-3.4.6/data3.2.3Zookeeper效勞啟動進入bin目錄,啟動效勞輸入命令./zkServer.shstart輸出以下內容表示啟動成功關閉效勞輸入命令./zkServer.shstop輸出以下提示信息查看狀態(tài):./zkServer.shstatus如果啟動狀態(tài),提示如果未啟動狀態(tài),提示:3.3Dubbox本地JAR包部署與安裝〔了解〕Dubbox的jar包并沒有部署到Maven的中央倉庫中,大家在Maven的中央倉庫中可以查找到Dubbo的最終版本是2.5.3,阿里巴巴解散了Dubbo團隊后由當當網(wǎng)繼續(xù)維護此工程,并改名為Dubbox,坐標不變,版本變更了,但是并沒有提交到中央倉庫。我們現(xiàn)在需要手動將Dubbox的jar包安裝到我的本地倉庫中。先將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相關--> <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> <!--請求路徑--> <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è)務接口創(chuàng)立包cn.itcast.dubbodemo.service,用于存放業(yè)務接口,創(chuàng)立接口packagecn.itcast.dubbodemo.service;/***業(yè)務接口*@authorAdministrator**/publicinterfaceUserService{ publicStringgetName(); }〔4〕創(chuàng)立業(yè)務實現(xiàn)類創(chuàng)立包cn.itcast.dubbodemo.service.impl,用于存放業(yè)務實現(xiàn)類。創(chuàng)立業(yè)務實現(xiàn)類:packagecn.itcast.dubbodemo.service.impl;importcom.alibaba.dubbo.config.annotation.Service;importcn.itcast.dubbodemo.service.UserService;@ServicepublicclassUserServiceImplimplementsUserService{ publicStringgetName(){ return"itcast"; }}注意:Service注解與原來不同,需要引入com.alibaba包下的〔5〕編寫配置文件在src/main/resources下創(chuàng)立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:applicationname="dubboxdemo-service"/><dubbo:registryaddress="zookeeper://32:2181"/><dubbo:annotationpackage="cn.itcast.dubboxdemo.service"/></beans>注意:dubbo:annotation用于掃描@Service注解?!?〕測試運行tomcat7:run3.5.2效勞消費者開發(fā)開發(fā)步驟:〔1〕創(chuàng)立Maven工程〔WAR〕dubboxdemo-web,在pom.xml引入依賴,同“dubboxdemo-service〞工程。區(qū)別就是把tomcat插件的運行端口改為8082。〔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"> <!--解決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> <!--指定加載的配置文件,通過參數(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è)務接口將“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〕測試運行tomcat7:run在瀏覽器輸入://localhost:8082/user/showName.do,查看瀏覽器輸出結果3.6管理中心的部署我們在開發(fā)時,需要知道注冊中心都注冊了哪些效勞,以便我們開發(fā)和測試。我們可以通過部署一個管理中心來實現(xiàn)。其實管理中心就是一個web應用,部署到tomcat即可。3.6.1管理端安裝〔1〕編譯源碼,得到war包給大家下發(fā)的資源中有個dubbox-master.zip,這個是dubbox的源碼,我們可以使用maven命令編譯源碼得到“管理端〞的war包將此壓縮包解壓,在命令符下進入dubbo-admin目錄,輸入maven命令mvnpackage-Dmaven.skip.test=true如果你看到如下信息,就說明成功了〔2〕進入target文件夾,你會看到一個dubbo-admin-2.8.4.war,在linux效勞器上安裝tomcat,將此war包上傳到linux效勞器的tomcat的webapps下。為了訪問方便,你可以把版本號去掉。啟動tomcat后自動解壓。〔3〕如果你部署在zookeeper同一臺主機并且端口是默認的2181,那么無需修改任何配置。如果不是在一臺主機上或端口被修改,需要修改WEB-INF下的perties,修改如下配置:dubbo.registry.address=zookeeper://:2181修改后重新啟動tomcat3.6.2管理端使用〔1〕翻開瀏覽器,輸入://32:8080/dubbo-admin/,登錄用戶名和密碼均為root進入首頁。(32:)是我部署的linux主機地址?!?〕啟動效勞提供者工程,即可在效勞治理-提供者查看到該效勞。點擊其中一條數(shù)據(jù)后可以查看詳情。〔3〕啟動效勞消費者工程,運行頁面,觀察“消費者〞列表4.品優(yōu)購-框架搭建4.1工程結構分析與設計最終完整的工程結構如下:工程說明:pinyougou-parent聚合工程pinyougou-pojo通用實體類層pinyougou-dao通用數(shù)據(jù)訪問層pinyougou-xxxxx-interface某效勞層接口pinyougou-xxxxx-service某效勞層實現(xiàn)pinyougou-xxxxx-web某web工程4.2創(chuàng)立數(shù)據(jù)庫表執(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通用實體類模塊創(chuàng)立通用實體類模塊-pinyougou-pojo4.3.3通用數(shù)據(jù)訪問模塊創(chuàng)立通用數(shù)據(jù)訪問模塊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ù)訪問層工程〞下的配置文件拷貝到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相關--> <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)立包com.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運營商管理后臺創(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相關--> <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> <!--指定加載的配置文件,通過參數(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)立包com.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商家管理后臺構建web模塊pinyougou-shop-web與運營商管理后臺的構建方式類似。區(qū)別:〔1〕定義tomcat的啟動端口為9102〔2〕springmvc.xml<!--引用dubbo效勞--> <dubbo:applicationname="pinyougou-shop-web"/> <dubbo:registryaddress="zookeeper://32:2181"/> <dubbo:annotationpackage="com.pinyougou.shop.controller"/>4.4實體類與數(shù)據(jù)訪問層模塊4.4.1生成代碼利用反向工程generatorSqlmapCustom實現(xiàn)實體類與數(shù)據(jù)訪問層代碼的自動生成4.4.2拷貝代碼將com.pinyougou.pojo包拷貝到pojo工程將com.pinyougou.mapper包和resouce下的com.pinyougou.mapper文件夾拷貝到dao工程4.4.3修改實體類代碼修改每個實體類,讓其實現(xiàn)Serializable接口5.品牌列表-后端代碼5.1需求分析完成品牌管理的后端代碼,在瀏覽器可查詢品牌的數(shù)據(jù)〔json格式〕5.2數(shù)據(jù)庫表tb_brand品牌表字段類型長度含義IdBigint主鍵NameVarchar255品牌名稱First_charVarchar1品牌首字母5.3后端代碼5.2.1效勞層接口在pinyougou-sellergoods-interface工程創(chuàng)立BrandService接口packagecom.pinyougou.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年限定房地產(chǎn)營銷策劃與推廣合作合同版B版
- 2025年度消防工程人工費承包合同含消防安全培訓服務范本3篇
- 2025企業(yè)加盟合同協(xié)議書
- 2025版工程承包借款反擔保合同規(guī)范3篇
- 2025信息工程監(jiān)理合同
- 2025年度消防應急照明系統(tǒng)補充協(xié)議范本(公共設施)3篇
- 2024年食品冷藏運輸途中的質量保障合同
- 2025年度VIP客戶文化創(chuàng)意產(chǎn)業(yè)合作協(xié)議2篇
- 2025版婚姻解除及財產(chǎn)分配協(xié)議書-二零二五年度自愿離婚合同
- 二零二五年度PDA設備采購與智慧物流系統(tǒng)集成合同3篇
- 相關方人員入場安全告知書
- 蘇教版譯林三年級上下冊單詞表
- 腫瘤病例隨訪調查表
- 游樂園、滑雪場、冰雪樂園建設合作協(xié)議
- 粉末涂料有限公司檢維修作業(yè)安全風險分級清單
- 【蘇教版】2022-2023學年六年級數(shù)學上冊期末試卷(及答案)
- 2023-2024學年連云港市灌云縣四年級數(shù)學第一學期期末學業(yè)水平測試模擬試題含答案
- 湖南省懷化市鶴城區(qū)2023年數(shù)學三下期末監(jiān)測試題含解析
- 項目工程安全管理責任區(qū)域劃分表
- 2023年學校食堂審計發(fā)現(xiàn)問題整改報告3篇
- 教育培訓學校(機構)課堂教學反饋表
評論
0/150
提交評論