淘淘商城第六天筆記_第1頁(yè)
淘淘商城第六天筆記_第2頁(yè)
淘淘商城第六天筆記_第3頁(yè)
淘淘商城第六天筆記_第4頁(yè)
淘淘商城第六天筆記_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、傳智播客 Java 學(xué)院 傳智.入云龍?zhí)蕴陨坛堑诹? 課程計(jì)劃1、前臺(tái)系統(tǒng)搭建a)b) 2、首頁(yè)a)b)Taotao-rest:服務(wù)層沒(méi)有 jsp 頁(yè)面Taotao-portal:門(mén)戶(hù),表現(xiàn)層。列表展示使用 ajax 調(diào)用服務(wù)層的服務(wù)??缬騿?wèn)題。使用 jsonp 解決。內(nèi)容首頁(yè)大廣告位的實(shí)現(xiàn)。1、cms 系統(tǒng)的實(shí)現(xiàn)2、發(fā)布服務(wù)3、調(diào)用服務(wù)展示內(nèi)容2 首頁(yè)大廣告位的實(shí)現(xiàn)分析首頁(yè)的內(nèi)容需要?jiǎng)討B(tài)管理,需要管理功能。抽取首頁(yè)展示內(nèi)容的共性:1、有一張圖片2、有接3、有一個(gè)標(biāo)題傳智播客 Java 學(xué)院 傳智.入云龍4、有鏈接的提示5、價(jià)格需要把內(nèi)容進(jìn)行,應(yīng)該是一個(gè)樹(shù)形結(jié)構(gòu)。在展示首頁(yè)時(shí),可以根據(jù)取內(nèi)容

2、,把內(nèi)容展示到頁(yè)面。在管理內(nèi)容及內(nèi)容的系統(tǒng)就叫做 cms 系統(tǒng)。3Cms 系統(tǒng)先實(shí)現(xiàn)內(nèi)容的管理再實(shí)現(xiàn)內(nèi)容管理。傳智播客Java 學(xué)院傳智.入云龍3.1 內(nèi)容管理3.1.1 內(nèi)容初始化需求分析初始化樹(shù)形視圖的 url:/content/category/list傳智播客 Java 學(xué)院 傳智.入云龍參數(shù)是 id,當(dāng)前節(jié)點(diǎn) id 屬性,應(yīng)該根據(jù)此 id子節(jié)點(diǎn)列表。返回值:包含 id、text、state 三個(gè)屬性的 json 數(shù)據(jù)列表Dao 層表結(jié)構(gòu):Sql 語(yǔ)句:根據(jù) parentid節(jié)點(diǎn)列表SELECT * FROM tb_content_category WHER

3、E parent_id = 30;可以實(shí)現(xiàn)逆向工程生成的代碼。Service 層功能:接收 parentid。根據(jù) parentid節(jié)點(diǎn)列表,返回返回一個(gè) EasyUI 異步 Tree 要求的節(jié)點(diǎn)列表。每個(gè)節(jié)點(diǎn)包含三個(gè)屬性 id、text、state 三個(gè)屬性??梢允褂?EUTreeNode。參數(shù):id返回值:ListServicepublic class ContentCategoryServiceImpl implements ContentCategoryService Autowiredprivate TbContentCategoryMapper contentCate

4、goryMapper; Overridepublic List getCategoryList(long parentId) /根據(jù)parentid節(jié)點(diǎn)列表TbContentCategoryExample example = new TbContentCategoryExample(); Criteria criteria = example.createCriteria(); criteria.andParentIdEqualTo(parentId);/執(zhí)行List list = contentCategoryMapper.selectByExample(example); List res

5、ultList = new ArrayList();for (TbContentCategory tbContentCategory : list) 傳智播客Java 學(xué)院傳智.入云龍Controller接收頁(yè)面?zhèn)鬟f過(guò)來(lái)的 parentid,根據(jù) parentid響應(yīng) json 數(shù)據(jù)。節(jié)點(diǎn)列表。返回 List。需要ControllerRequestMap(/content/category)public class ContentCategoryController Autowiredprivate ContentCategoryService contentCategorySe

6、rvice;RequestMap(/list) ResponseBodypublic List getContentCatList(RequestParam(value=id, defaultValue=0)Long parentId) List list = contentCategoryService.getCategoryList(parentId);return list;/創(chuàng)建一個(gè)節(jié)點(diǎn)EUTreeNode node = new EUTreeNode(); node.setId(tbContentCategory.getId(); node.setText(tbContentCateg

7、ory.getName(); node.setState(tbContentCategory.getIsParent()?d:open);resultList.add(node);return resultList;傳智播客Java 學(xué)院傳智.入云龍3.1.2 內(nèi)容添加需求分析請(qǐng)求的 url:/content/category/create參數(shù):1、parentId 父節(jié)點(diǎn) id2、name:當(dāng)前節(jié)點(diǎn)的名稱(chēng)返回值:TaotaoResult。其中包含節(jié)點(diǎn) pojo 對(duì)象。Dao 層可以使用逆向工程生成的代碼傳智播客 Java 學(xué)院 傳智.入云龍Servi

8、ce 層功能:接收兩個(gè)參數(shù) parentId 父節(jié)點(diǎn) id、name:當(dāng)前節(jié)點(diǎn)的名稱(chēng)。向 tb_content_category 表中添加一條。返回 TaoTaoResult 包含的 pojo 對(duì)象。需要返回主鍵:需要修改 mapper 文件,返回主鍵。Overridepublic TaotaoResult insertContentCategory(long parentId, String name) /創(chuàng)建一個(gè)pojoTbContentCategory contentCategory = new TbContentCategory(); contentCategory.setName(n

9、ame); contentCategory.setIsParent(false);/狀態(tài)。可選值:1(正常),2(刪除),contentCategory.setStatus(1); contentCategory.setParentId(parentId); contentCategory.setSortOrder(1); contentCategory.setCreated(new Date(); contentCategory.setUpdated(new Date();/添加contentCategoryMapper.insert(contentCategory);/查看父節(jié)點(diǎn)的isPa

10、rent 列是否為 true,如果不是true 改成trueTbContentCategory parentCat = contentCategoryMapper.selectByPrimaryKey(parentId);/是否為trueif(!parentCat.getIsParent() parentCat.setIsParent(true);/更新父節(jié)點(diǎn)contentCategoryMapper.updateByPrimaryKey(parentCat);/返回結(jié)果return TaotaoResult.ok(contentCategory);傳智播客 Java 學(xué)院傳智.入云龍3.1.

11、2.4Controller 層接收兩個(gè)參數(shù) parentid、name。調(diào)用Service 添加據(jù)。返回 TaotaoResult。應(yīng)該返回 json 數(shù)3.1.3 內(nèi)容刪除需求分析: 請(qǐng)求的 url:/content/category/delete/參數(shù):1、parentId 2、Id返回值:TaotaoResult業(yè)務(wù)邏輯:接收 parentid、id 兩個(gè)參數(shù)。刪除 id 對(duì)應(yīng)的節(jié)點(diǎn)。如果沒(méi)有子節(jié)點(diǎn)。需要把 parentid 對(duì)應(yīng)的注意:刪除直接是物理刪除。需要parentid 對(duì)應(yīng)的的 isparent 改成 false。下是否有子RequestMap(/create) Respons

12、eBodypublic TaotaoResult createContentCategory(Long parentId, String name) TaotaoResult result = contentCategoryService.insertContentCategory(parentId, name);return result;傳智播客Java 學(xué)院傳智.入云龍3.1.4 重命名節(jié)點(diǎn)1、2、當(dāng)編輯完成后會(huì)觸發(fā) onAfterEdit。請(qǐng)求的 url:/content/category/update參數(shù):id、name返回值:返回 TaotaoResult。Json 格式業(yè)務(wù)邏輯:

13、根據(jù) id 更新的 name 列即可。3.2 內(nèi)容管理內(nèi)容管理表:傳智播客Java 學(xué)院傳智.入云龍3.2.1 內(nèi)容列表需求分析請(qǐng)求 url:/content/query/list參數(shù):page、rows、categoryId返回值:EUDataGridResultTotal、rows:內(nèi)容 pojo 列表。傳智播客 Java 學(xué)院 傳智.入云龍業(yè)務(wù)邏輯:根據(jù)內(nèi)容id內(nèi)容列表。需要實(shí)現(xiàn)分頁(yè)。返回 EUDataGridResult3.2.2 內(nèi)容添加需求分析:圖片上傳初始化:內(nèi)容表單提交:傳智播客Java 學(xué)院傳智.入云龍請(qǐng)求的 url:/content/save請(qǐng)求的:post請(qǐng)求內(nèi)容:表單中

14、的內(nèi)容。返回的結(jié)果:TaotaoResult。3.2.3 Dao 層向 tb_content 表中數(shù)據(jù)??梢允褂媚嫦蚬こ躺傻拇a。3.2.4 Service 層接收表 tb_content 對(duì)應(yīng)的pojo 對(duì)象。把 pojo 對(duì)象返回 TaotaoResult。到 tb_content 表中。Servicepublic class ContentServiceImpl implements ContentService Autowiredprivate TbContentMapper contentMapper;Overridepublic TaotaoResult insertConten

15、t(TbContent content) /補(bǔ)全pojo 內(nèi)容content.setCreated(new Date(); content.setUpdated(new Date(); contentMapper.insert(content);return TaotaoResult.ok();傳智播客 Java 學(xué)院 傳智.入云龍3.2.5 Controller 層接收表單中的內(nèi)容,使用 pojo 接收。要求 pojo 的屬性要和表單中的 name 一致。調(diào)用 Service內(nèi)容。返回 TaotaoResult。Json 格式的數(shù)據(jù)。4 展示商城首頁(yè)大廣告位4.1 首頁(yè)大廣告方案前端系統(tǒng)獲取

16、后端系統(tǒng)提供的接口,如何獲取?4.1.1 方案 1jsonp 跨域請(qǐng)求ControllerRequestMap(/content)public class ContentController Autowiredprivate ContentService contentService;RequestMap(/save) ResponseBodypublic TaotaoResult insertContent(TbContent content) TaotaoResult result = contentService.insertContent(content); return result

17、;傳智播客 Java 學(xué)院 傳智.入云龍1、請(qǐng)求首頁(yè)內(nèi)容Taotao-portal瀏覽器2、響應(yīng)首頁(yè)htmlTaotao-rest服務(wù)層3、ajax請(qǐng)求廣告位4、響應(yīng)json數(shù)據(jù)需要當(dāng)首頁(yè)加載完畢后,大廣告位就應(yīng)該顯示。沒(méi)有觸發(fā)優(yōu)點(diǎn):不需要二次請(qǐng)求,頁(yè)面直接加載內(nèi)容數(shù)據(jù)。減少缺點(diǎn):需要延遲加載。不利于 seo 優(yōu)化。不是太合適。的。4.1.2 第二種方案:2、調(diào)用服務(wù)接口1、請(qǐng)求首頁(yè)內(nèi)容4、響應(yīng)首頁(yè)html3、響應(yīng)json數(shù)據(jù)優(yōu)點(diǎn):有利于 seo 優(yōu)化??梢栽?taotao-portal 中對(duì)數(shù)據(jù)進(jìn)行。缺點(diǎn):系統(tǒng)直接需要調(diào)用服務(wù)內(nèi)容。多了一次 http 請(qǐng)求。系統(tǒng)直接服務(wù)的調(diào)用,需要使用 ht

18、tp來(lái)實(shí)現(xiàn)。Taotao-portal 和 taotao-rest 是在同一個(gè)局域網(wǎng)內(nèi)部。速度非???,調(diào)用時(shí)間可以忽略不計(jì)。展示首頁(yè)內(nèi)容功能,使用方案二實(shí)現(xiàn)。瀏覽器Taotao-portalTaotao-rest服務(wù)層傳智播客Java 學(xué)院 傳智.入云龍4.2 展示流程首頁(yè)內(nèi)容展示流程CMS門(mén)戶(hù)(taotao-portal)服務(wù)層(taotao-rest)Redis(緩存)Mysql內(nèi)容保存內(nèi)容內(nèi)容維護(hù)調(diào)用服務(wù)層的服務(wù)首頁(yè)接收請(qǐng)求內(nèi)容根據(jù)key,到redis中并返回結(jié)果是否命中否到mysql中根據(jù)內(nèi)容返回內(nèi)容內(nèi)容內(nèi)容把結(jié)果寫(xiě)保存結(jié)果入redis更新mysql數(shù)據(jù)庫(kù)更新內(nèi)容更新調(diào)用服務(wù)層服務(wù)清空

19、緩存刪除指定key的內(nèi)容清空redis緩存返回OK內(nèi)容維護(hù)內(nèi)容展示內(nèi)容添加是接收返回結(jié)果修改內(nèi)容展示首頁(yè)接收結(jié)果接收內(nèi)容請(qǐng)求展示首頁(yè)保存內(nèi)容傳智播客 Java 學(xué)院 傳智.入云龍4.3 內(nèi)容服務(wù)發(fā)布4.3.1 需求分析根據(jù)內(nèi)容的id內(nèi)容列表,從 tb_content 表中。服務(wù)是一個(gè) restFul 形式的服務(wù)。使用 http 協(xié)議傳遞 json 格式的數(shù)據(jù)。4.3.2 Dao 層從 tb_content 表中,根據(jù)內(nèi)容id。是。可以使用逆向工程生成的代碼。4.3.3 Service 層接收內(nèi)容參數(shù):id,根據(jù)id列表。返回一個(gè)內(nèi)容 pojo 列表。id返回值:pojo 列表Servicepu

20、blic class ContentServiceImpl implements ContentService Autowiredprivate TbContentMapper contentMapper; Overridepublic List getContentList(long contentCid) /根據(jù)內(nèi)容id內(nèi)容列表TbContentExample example = new TbContentExample(); Criteria criteria = example.createCriteria(); criteria.andCategoryIdEqualTo(conten

21、tCid);/執(zhí)行List list = contentMapper.selectByExample(example);return list;傳智播客 Java 學(xué)院 傳智.入云龍4.3.4 Controller 層發(fā)布服務(wù)。接收參數(shù)。Restful 風(fēng)格內(nèi)容id 應(yīng)該從url 中取。/rest/content/list/contentCategoryId從 url 中取內(nèi)容id,調(diào)用 Service內(nèi)容列表。返回內(nèi)容列表。返回一個(gè) json 格式的數(shù)據(jù)??梢允褂?TaotaoResult 包裝此列表。4.4 Http的使用4.4.1 什么是 httpHttp富的支持是 Apache Jak

22、arta Common 下的子項(xiàng)目,用來(lái)提供高效的、最新的、功能豐HTTP 協(xié)議的客戶(hù)端編程工具包,并且它支持 HTTP 協(xié)議最新的版本和建議。地址:ControllerRequestMap(/content)public class ContentController Autowiredprivate ContentService contentService;RequestMap(/list/contentCategoryId) ResponseBodypublic TaotaoResult getContentList(PathVariable Long contentCategoryI

23、d) try List list = contentService.getContentList(contentCategoryId);return TaotaoResult.ok(list); catch (Exception e) e.printStackTrace();return TaotaoResult.build(500, ExceptionUtil.getStackTrace(e);傳智播客Java 學(xué)院傳智.入云龍4.4.2 添加依賴(lài)需要把 http的 jar 包添加到工程中。只需要在工程中添加 http的依賴(lài)。4.4.3 使用使用 http執(zhí)行 get 請(qǐng)求Te

24、stpublic void doGet() throws Exception /創(chuàng)建一個(gè)http對(duì)象ableHttphttp= Https.createDefault();/創(chuàng)建一個(gè)GET 對(duì)象HttpGet get = new HttpGet();/執(zhí)行請(qǐng)求ableHttpResponse response = http.execute(get);/取響應(yīng)的結(jié)果傳智播客Java 學(xué)院傳智.入云龍執(zhí)行 get 請(qǐng)求帶參數(shù)使用 http執(zhí)行 post 請(qǐng)求Testpublic void doPost() throws Exception ableHttphttp= H

25、ttps.createDefault();/創(chuàng)建一個(gè) post 對(duì)象Testpublic void doGetWithParam() throws Exception/創(chuàng)建一個(gè)http對(duì)象ableHttphttp= Https.createDefault();/創(chuàng)建一個(gè)uri 對(duì)象/執(zhí)行請(qǐng)求ableHttpResponse response = http.execute(get);/取響應(yīng)的結(jié)果int statusCode = response.getStatusLine().getStatusCode(); System.out.println(statusCode);HttpEntity

26、entity = response.getEntity();String string = EntityUtils.toString(entity, utf-8); System.out.println(string);/關(guān)閉httpresponse.();http.();URIBuilder uriBuilder = new URIBuilder(); uriBuilder.addParameter(query, 花千骨);HttpGet get = new HttpGet(uriBuilder.build();int statusCode = response.getStatusLine(

27、).getStatusCode(); System.out.println(statusCode);HttpEntity entity = response.getEntity();String string = EntityUtils.toString(entity, utf-8); System.out.println(string);/關(guān)閉http response.();http.();傳智播客Java 學(xué)院傳智.入云龍帶參數(shù) post 請(qǐng)求4.4.4 Http封裝成工具類(lèi)其他項(xiàng)目也可能會(huì)用到 http,所以把工具類(lèi)放到 taotao-common 中。Testpubli

28、c void doPostWithParam() throws ExceptionableHttphttp= Https.createDefault();/創(chuàng)建一個(gè)post 對(duì)象HttpPost post = new HttpPost();/執(zhí)行post 請(qǐng)求ableHttpResponse response = http.execute(post); String string = EntityUtils.toString(response.getEntity(); System.out.println(string);response.();http.();/創(chuàng)建一個(gè)Entity。模擬一個(gè)

29、表單List kvList = new ArrayList();kvList.add(new BasicNameValuePair(username, zhangsan); kvList.add(new BasicNameValuePair(password, 123);/包裝成一個(gè)Entity 對(duì)象StringEntity entity = new UrlEncodedFormEntity(kvList, utf-8);/設(shè)置請(qǐng)求的內(nèi)容post.setEntity(entity);HttpPost post = new HttpPost();/執(zhí)行 post 請(qǐng)求ableHttpRespon

30、se response = http.execute(post); String string = EntityUtils.toString(response.getEntity(); System.out.println(string);response.();http.();傳智播客Java 學(xué)院傳智.入云龍5 大廣告位展示5.1 需求分析需要?jiǎng)?chuàng)建一個(gè) json 字符串傳遞給 jsp:傳智播客 Java 學(xué)院 傳智.入云龍Json 字符串如何傳遞給 jsp:使用 mAndView 對(duì)象把 json 字符串傳遞給 jsp。如何獲得 json 字符串:獲得一個(gè)廣告位對(duì)應(yīng)的內(nèi)容列表,需要調(diào)用 t

31、aotao-rest 的服務(wù)。把列表轉(zhuǎn)換成 json 數(shù)據(jù)格式要求的 pojo 對(duì)象列表。需要使用 http調(diào)用 taotao-rest 的服務(wù)。5.2 Dao 層沒(méi)有5.3 Service 層根據(jù)內(nèi)容id的內(nèi)容列表,需要使用 http調(diào)用 taotao-rest 的服務(wù)。得到一個(gè) json 字符串。需要把字符串轉(zhuǎn)換成 java 對(duì)象 taotaoResult 對(duì)象。從 taotaoResult 對(duì)象中取data 屬性,得到內(nèi)容列表。把內(nèi)容列表轉(zhuǎn)換成 jsp 頁(yè)面要求的 json 格式。返回一個(gè) json 字符串。參數(shù):沒(méi)有參數(shù)返回值:json 字符串。Servicepublic class ContentServiceImpl implements ContentServi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論