第1天講義項目概述cms接口開發(fā)_第1頁
第1天講義項目概述cms接口開發(fā)_第2頁
第1天講義項目概述cms接口開發(fā)_第3頁
第1天講義項目概述cms接口開發(fā)_第4頁
第1天講義項目概述cms接口開發(fā)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1項目的功能構(gòu)架受互聯(lián)網(wǎng)+概念的催化,中國教育市場的發(fā)展可謂是百花齊放、如火如荼。按照市場領域細分為:學前教育、K12教育、高等教育、留學教育、職業(yè)教育、語言教育、教育以及綜合平臺,其中,職業(yè)教育和語言教育的市場優(yōu)勢突出。根據(jù)ysys易觀發(fā)布的數(shù)據(jù)顯示,預計年中國互聯(lián)網(wǎng)教育市場規(guī)模將達到億元,未來三年互聯(lián)網(wǎng)教育市場規(guī)模保持高速增長。學成借鑒了MOOC(大型開放式網(wǎng)絡課程,即MOOC(massiveopenonlinecourses))的設計思想,是個提供IT職業(yè)課程學習的平臺,它為即將和已經(jīng)加入IT領域的技術(shù)人才提供學習服務,用戶通過學習、當前市場的教育模式多種多樣,包括:B2C、CC、B2B2C等業(yè)務模式,學成采用B2B2C業(yè)務模式,即向企業(yè)或個人提供教育平臺提供教學服務,老師和學生通過平臺完成整個教學和學習的過程,市場上類似的平臺有:網(wǎng)易云課堂、騰訊課堂等,學成的特點是IT職業(yè)課程教學。功能模塊教學管理系統(tǒng)管理通過項目原型進一步了解項目的功能,包括:門戶首頁、課程搜索頁、學習頁面、個人中心等參考“項目原型”。2、系統(tǒng)應用CDN技術(shù),對一些、CSS、等資源從CDN調(diào)度1用戶層描述了本系統(tǒng)所支持的用戶類型包括:pc用戶、app用戶、h5用戶。pc用戶通過瀏覽器系統(tǒng)、app用戶通過ndid、is系統(tǒng),H5用戶通過h5頁面系統(tǒng)。2N全稱ContentDelveryNetork,即內(nèi)容分發(fā)網(wǎng)絡,本系統(tǒng)所有靜態(tài)資源全部通過N加速來提高速度。系統(tǒng)靜態(tài)資源包括:ml頁面、s文件、css文件、image圖片、pdfppt及doc教學文檔、 等。3系統(tǒng)的CDN層、I層、服務層及數(shù)據(jù)層均設置了負載均衡服務,上圖僅在UI層前邊標注了負載均衡。每一層的負載均衡會根據(jù)系統(tǒng)的需求來確定負載均衡器的類型,系統(tǒng)支持4層負載均衡+7層負載均衡結(jié)合的方式,4層負載均衡是指在網(wǎng)絡傳輸層進行流程轉(zhuǎn)發(fā),根據(jù)IP和端口進行轉(zhuǎn)發(fā),7層負載均衡完成TTP協(xié)議負載均衡及反向的功能,根據(jù)url進行請求轉(zhuǎn)發(fā)。4I層描述了系統(tǒng)向pc用戶、app用戶、h5用戶提供的產(chǎn)品界面。根據(jù)系統(tǒng)功能模塊特點確定了UI層包括如下產(chǎn)品界面類型:1)面向pc用戶的門戶系統(tǒng)、學習中心系統(tǒng)、教學管理系統(tǒng)、系統(tǒng)。2)面向h5用戶的門戶系統(tǒng)、學習中心系統(tǒng)。3)面向app用戶的門戶系統(tǒng)、學習中心系統(tǒng)未在上圖標注,在app項目中有詳細說明。5用戶提供學習服務。后端服務:主要為管理用戶提供教學管理服務。系統(tǒng)服務:公共服務,為系統(tǒng)的所有微服務提供公共服務功能。服務網(wǎng)關(guān):提供服務路由、負載均衡、6數(shù)據(jù)層描述了系統(tǒng)的數(shù)據(jù)的內(nèi)容類型,持久化的業(yè)務數(shù)據(jù)使用MySQL和MongoDB保存,其中MongoDB中主要保存系統(tǒng)日志信息。消息隊列:系統(tǒng)服務間通信的消息,本身提供消息存取服務,與微服務層的系統(tǒng)服務連接。庫程信的索引信息,本身提供索引及搜索的服務,與微服務層的系統(tǒng)服務連接。系統(tǒng)的緩存服務,課程信息、分類信息、用戶信息等,與微服務層的所有服務連接。文件:提供系統(tǒng)靜態(tài)資源文件的分布式服務,文件服務器作為CDN服務器的數(shù)據(jù)來源,N上的靜態(tài)資源將最終在文件服務器上保存多份。流服務:作為流服務器,所有的流文件。7 QQ、的賬號和即可登錄本系統(tǒng)。2) 4)接口,本系統(tǒng)與第平臺對接發(fā)送接口。5)郵件接口,本系統(tǒng)需要連接第的smpt郵件服務器對外發(fā)送電子郵件。6),本系統(tǒng)與平臺接口,用戶通過H5頁面。7)點播、,前期點播與采用務。8)OSS,前期靜態(tài)資源文件的采用第服務方式,本系統(tǒng)與第提上。9)CDN,本系統(tǒng)與第CDN服務對接,使用CDN加速服務來提高本系統(tǒng)的8vOps(英文vlpmnt和Opeations的組合)是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進開發(fā)(應用程序/軟件工程)、技術(shù)運營和(A)部門之間的溝通、協(xié)作與整合。本項目供了許多開發(fā)、運營、支撐的系統(tǒng),包括:Eueka服務治理中心:提供服務治理服務,包括:服務、服務獲取等。SprigClodC?g服務配置:提供服務配置管理服務,包括:配置文件更新、配置文件下發(fā)等。HystrixDashboa服務熔斷:熔斷的請求響應時間、成功率等。Zpkin服務追蹤監(jiān)控:服務調(diào)用鏈路健康情況。Jenkis持續(xù)集成服務:提供系統(tǒng)持續(xù)集成服務。Gt/GtLab代碼管理服務:提供gt代碼管理服務。ELK日志分析服務:提供elk日志分析服務,包括系統(tǒng)運行日志分析、告務。Docer容器化部署服務:將本系統(tǒng)所有服務采用容器化部署方式。Maven項目管理工具:提供管理項目所有的Java打包服務。學成服務端基于SpringBoot構(gòu)建,采用SpringCloud微服務框架。數(shù)據(jù)層:使用SpringDataJPA、Mybatis、SpringDataMongodb業(yè)務層:SpringIOC、Aop事務控制、SpringTask任務調(diào)度、Feign、Ribbon、SpringAMQP、SpringData控制層:SpringMVC、FastJSON、RestTemte、SpringSecurityOauth2+JWT等微服務治理:Eureka、Zuul、Hystrix、SpringCloudCon?g等項目是基于前后端分離的架構(gòu)進行開發(fā),前后端分離架構(gòu)總體上包括前端和服務端,通常是多人協(xié)作并行開發(fā),開發(fā)步驟如下:CMS(ContentManagementSystem)即內(nèi)容管理系統(tǒng),不同的項目對CMS的定位不同,比如:一個教育站,有些公司認為CMS系統(tǒng)是對所有的課程資源進行管理,而在早期剛開始盛行時很多公司的業(yè)務是制作,上邊也談到每個公司對每個項目的MS定位不同,CMS基本上分為:針對數(shù)據(jù)內(nèi)容的管理、針對前端頁面的管理、針對樣式風格的管理等。比如:一個給企業(yè)做的公司,其MS系統(tǒng)主要是頁面管理及樣式風格的管理。本項目作為一個大型的教育平臺,對CMS系統(tǒng)的定位是對各各(子站點)頁面的管理,主要管理由于運營本項目CMS是對頁面進行管理,對頁面如何進行管理呢?我們首先搭建學成網(wǎng)的靜態(tài)門戶工程,根據(jù)門戶的頁面結(jié)構(gòu)來分析頁面的管理方案。本nginx- : ssion;ssi_silent_errorson;location/{ index}}F:/teach/xcEdu/xcEduUI/xc-ui-pc-static-portal/ 即為門戶的 本的開發(fā)環(huán)境使用Windows7,修改C:\Windows\System32\drivers\etc\hosts文將頁面拆分成一個一個的小頁面,通過cms去管理這些小頁面,當要更改部分頁面內(nèi)容時只需要更改具體某個小頁面即可。ssi包含類似于jp頁面中的incluce指令,si是在we服務端將include指定的頁面包含在網(wǎng)頁中,渲染tml。ix、ace等多數(shù)web容器都支持SI指令。 ssion;ssi_silent_errorson;ss的配置參數(shù)如下:ssion:開啟ss支持ssi_sil_rrorson:默認為o?,設置為on則在處理I出錯息ssi_tyes認為ssi_tyestext/html,如果需要支持shtml(服務器執(zhí)行,類似于jsp)則需要設置為ss_tyestext/stml一個有很多子站點,比如:學成有主門戶、學習中心、問答系統(tǒng)等子站點。具體的哪個頁面是歸屬于具體的站點,所以要管理頁面,先要管理頁面所屬的站點。頁面如何創(chuàng)建呢?比如的商品詳情頁面,每個頁面的內(nèi)容布局、板式是相同的,不同的只是內(nèi)容,這個頁面的布局、板式就是頁面模板,模板+數(shù)據(jù)就組成一個完整的頁面,最終要創(chuàng)建一個頁面文件需要先定義此頁面的模板,最終拿到頁面的數(shù)據(jù)再結(jié)合模板就拼裝成一個完整的頁面。頁面預覽是頁面發(fā)布前的一項工作,頁面預覽使用靜態(tài)化技術(shù)根據(jù)頁面模板和數(shù)據(jù)生成頁面內(nèi)容,并通過瀏覽器預覽頁面。頁面發(fā)布前進行頁面預覽的目是為了保證頁面發(fā)布后的正確性。頁面發(fā)布成功,用戶即可在瀏覽器瀏覽到發(fā)布的頁面,整個頁面添加、發(fā)布的過程由于軟件自動執(zhí)行,無需人工登錄服務器操作。 idea可以自動優(yōu)化導入包,但是有多個同名的類調(diào)用不同的包,必須自己手動At+Entr設置idea導入包-Xms1024m-Xmx4096m-XX:MaxPermSize=1024m-XX:2、點擊ImportModel,選擇parent 安裝1、Mongodb是非關(guān)系型數(shù)據(jù)庫,Json格式數(shù)據(jù),數(shù)據(jù)格式靈活。參考“mongodb安裝.md”安裝MongodbServer及Studio3T使用Studio3T軟件導入cms數(shù)據(jù)庫2、導入cms打開窗口,選擇第一個json在梳理完用戶需求后就要去定義前后端的接口,接口定義后前端和后端就可以依據(jù)接口去開發(fā)功能了。本次定義頁面查詢接口,本接口供前端請求查詢頁面列表,支持分頁及自定義條件查詢方式。3、接口基于HttpGet請求,響應Json數(shù)據(jù) publicclassCmsPage{ privateStringprivateStringprivateStringprivateStringprivateStringprivateStringprivateStringprivateStringprivateDateprivateStringtemprivateList<CmsPageParam> privateStringtemprivateStringprivateString}多個頁面可以使用相同的模板,比如:商品信息模板,每個商品就是一個頁面,所有商品使用同一個商品信息模板注解說明:@Data、@ToString、@注解表示什么意思 5.2.3Lombok是一個實用的java工具,使用它可以消除java代碼的臃腫,Lombok提供一系列的注解,使用這些注解可以不用定義gett/sterequals、構(gòu)造方法等,它會在編譯時在字節(jié)碼文件自動生成這些通用的方法,簡化開發(fā)人員的工作。項目地址比如上節(jié)創(chuàng)建的Usrest模型,Dta注解可以自動生成gett/settr方法,@oString生成tostring使用方法:1、定義請求模型QueryPageRequestRequestData類型。packagepackageimportimportpublicclassQueryPageRequestextendsRequestDataprivateStringprivateStringprivateStringprivateStringprivateString }publicpublicinterfaceCmsPageControllerApipublicQueryResponseResultfindList(intpage,intsize,QueryPageRequestqueryPageRequest)}創(chuàng)建maven工程,CMS工程的名稱為xc-service-manage-cms,父工程為xc-framework-parent。<?xml<?xmlversion="1.0"<projectinstance""‐<artifactId>spring‐boot‐starter‐由于cms工程要連接mongodb所以需要在在cms項目使用springdatamongdb操作mnob數(shù)據(jù)庫 name:uri:mongodb://root:123@localhost:27017database:xc_cms4、SpringBootSpringBoot應用需要創(chuàng)建一個應用啟動類,啟動過程中會掃描Bean并注入spring容器注意:此類創(chuàng)建在本工程com.xuecheng.manage_cms包下:publicclassManageCmsApplication{publicstaticvoidmain(String[]{}}測試packagepackageimportimportcom.xuecheng.framework. importcom.xuecheng.framework.model.response.QueryResponseResult;importcom.xuecheng.manage_cms.service.PageService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation.RestController;publicclassCmsPageControllerimplementsCmsPageControllerApi publicQueryResponseResultfindList(@PathVariable("page")intpage,@PathVariable("size")intsize,QueryPageRequestqueryPageRequest){QueryResultqueryResult=newQueryResult();Listlist=newArrayList();CmsPagecmsPage=newCmsPage();return}}輸入:查詢第1頁,每頁顯示10條記錄本項目使用SpringDataMongodb完成Mongodb數(shù)據(jù)庫的查詢,SpringDataMongodb提供一套快捷操作publicpublicinterfaceCmsPageRepositoryextendsMongoRepository<CmsPage,String>}測試程序使用@SpringBootest和@RunWith(SprngRunner.cass)注解,啟動測試類會從main下找springBot啟動類,加載spring容器。packagepackageimportimportimportimportimportorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;importorg.springframework.data. importpublicclassCmsPageRepositoryTestCmsPageRepositoryCmsPageRepository}publicvoid{intpage=0;//從0開始intsize10;//每頁記錄數(shù)Pageablepageable=PageRequest.of(page,size);}oMMy中定義了很多現(xiàn)成的方法,如ee等,通過下邊的代碼來測試這里父類方法。publicvoid cmsPage.setPageCreateTime(newDate());List<CmsPageParam>cmsPageParams=newArrayList<>();CmsPageParamcmsPageParam=newCmsPageParam();}publicvoid{}publicvoidtestUpdate()Optional<CmsPage>optional=cmsPageRepository.findOne("5b17a34211fe5e2ee8c116c9");CmsPagecmsPage=optional.get();}}Oinl是jdk1.8引入的類型,Oil是一個容器對象,它包括了我們需要的對象,使用isPesetisPeset方法返回false則表示Oinl包含對象為空,否則可以使用get()取出對象進行操作。同SpringDataJPA一樣SpringDatamongodbpublicpublicinterfaceCmsPageRepositoryextendsMongoRepository<CmsPage,String>CmsPagefindByPageName(StringCmsPagefindByPageNameAndPageType(StringpageName,StringintcountBySiteIdAndPageType(StringsiteId,StringPage<CmsPage>findBySiteIdAndPageType(StringsiteId,StringpageType,Pageable}packageimportcom.xuecheng.framework.importcom.xuecheng.framework..cms.request.QueryPageRequest;importcom.xuecheng.framework. importcom.xuecheng.framework.model.response.QueryResponseResult;importcom.xuecheng.framework.model.response.QueryResult;importcom.xuecheng.manage_cms.dao.CmsPageRepository;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.data..Page;importorg.springframework.data..PageRequest;importorg.springframework.data..Pageable;importorg.springframework.stereotype.Service;publicclass{CmsPageRepository@paramsize@paramqueryPageRequest@returnqueryPageRequest){if(queryPageRequest==null){queryPageRequest=new}if(page<={page=}pagepage1;//為了適應mongodb的接口將頁碼減1if(size<=0){size=}Pageablepageable=newPageRequest(page,Page<CmsPage>all=cmsPageRepository.findAll(pageable);returnnew}}packagepackageimportimportcom.xuecheng.framework. importcom.xuecheng.framework.model.response.QueryResponseResult;importcom.xuecheng.manage_cms.service.PageService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation.RestController;publicclassCmsPageControllerimplements{@AutowiredPageServicepageService; intsize,QueryPageRequestqueryPageRequest){return}}輸入:查詢第1頁,每頁顯示10條記錄 2、t請求時,可以提交form表單數(shù)據(jù)(aplicatin/x-www-frm-urlncded)和Json數(shù)據(jù)(Ctet-ype=appation/json),文件等多部件類型(mutiprt/frm-data)三種數(shù)據(jù)格式,pringM接收Json使用@RqestBdy注解解析請求的json數(shù)據(jù)。1、@PathVariable統(tǒng)一指定參數(shù)名稱,如:@PathVariable("id")2、@RequestParam統(tǒng)一指定參數(shù)名稱,如:上邊的代碼是基于服務端編寫接口,如果前端人員等待服務端人員將接口開發(fā)完畢再去開發(fā)前端內(nèi)容這樣做效率是非常低下的,所以當接口定義完成,可以使用工具生成接口文檔,前端人員查看接口文檔即可進行前端開發(fā),這樣前端和服務人員并行開發(fā),大大提高了生產(chǎn)效率。OpenAPI規(guī)范(OpenAPISpeci?cation簡稱OAS)是Linux的一個項目,試圖通過定義一種用來描述API格

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論