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

下載本文檔

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

文檔簡介

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

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

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

4、goryMapper; Overridepublic List getCategoryList(long parentId) /根據(jù)parentid節(jié)點列表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接收頁面?zhèn)鬟f過來的 parentid,根據(jù) parentid響應(yīng) json 數(shù)據(jù)。節(jié)點列表。返回 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)建一個節(jié)點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)容添加需求分析請求的 url:/content/category/create參數(shù):1、parentId 父節(jié)點 id2、name:當(dāng)前節(jié)點的名稱返回值:TaotaoResult。其中包含節(jié)點 pojo 對象。Dao 層可以使用逆向工程生成的代碼傳智播客 Java 學(xué)院 傳智.入云龍Servi

8、ce 層功能:接收兩個參數(shù) parentId 父節(jié)點 id、name:當(dāng)前節(jié)點的名稱。向 tb_content_category 表中添加一條。返回 TaoTaoResult 包含的 pojo 對象。需要返回主鍵:需要修改 mapper 文件,返回主鍵。Overridepublic TaotaoResult insertContentCategory(long parentId, String name) /創(chuàng)建一個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é)點的isPa

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

11、2.4Controller 層接收兩個參數(shù) parentid、name。調(diào)用Service 添加據(jù)。返回 TaotaoResult。應(yīng)該返回 json 數(shù)3.1.3 內(nèi)容刪除需求分析: 請求的 url:/content/category/delete/參數(shù):1、parentId 2、Id返回值:TaotaoResult業(yè)務(wù)邏輯:接收 parentid、id 兩個參數(shù)。刪除 id 對應(yīng)的節(jié)點。如果沒有子節(jié)點。需要把 parentid 對應(yīng)的注意:刪除直接是物理刪除。需要parentid 對應(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é)點1、2、當(dāng)編輯完成后會觸發(fā) onAfterEdit。請求的 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)容列表需求分析請求 url:/content/query/list參數(shù):page、rows、categoryId返回值:EUDataGridResultTotal、rows:內(nèi)容 pojo 列表。傳智播客 Java 學(xué)院 傳智.入云龍業(yè)務(wù)邏輯:根據(jù)內(nèi)容id內(nèi)容列表。需要實現(xiàn)分頁。返回 EUDataGridResult3.2.2 內(nèi)容添加需求分析:圖片上傳初始化:內(nèi)容表單提交:傳智播客Java 學(xué)院傳智.入云龍請求的 url:/content/save請求的:post請求內(nèi)容:表單中

14、的內(nèi)容。返回的結(jié)果:TaotaoResult。3.2.3 Dao 層向 tb_content 表中數(shù)據(jù)??梢允褂媚嫦蚬こ躺傻拇a。3.2.4 Service 層接收表 tb_content 對應(yīng)的pojo 對象。把 pojo 對象返回 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 展示商城首頁大廣告位4.1 首頁大廣告方案前端系統(tǒng)獲取

16、后端系統(tǒng)提供的接口,如何獲???4.1.1 方案 1jsonp 跨域請求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、請求首頁內(nèi)容Taotao-portal瀏覽器2、響應(yīng)首頁htmlTaotao-rest服務(wù)層3、ajax請求廣告位4、響應(yīng)json數(shù)據(jù)需要當(dāng)首頁加載完畢后,大廣告位就應(yīng)該顯示。沒有觸發(fā)優(yōu)點:不需要二次請求,頁面直接加載內(nèi)容數(shù)據(jù)。減少缺點:需要延遲加載。不利于 seo 優(yōu)化。不是太合適。的。4.1.2 第二種方案:2、調(diào)用服務(wù)接口1、請求首頁內(nèi)容4、響應(yīng)首頁html3、響應(yīng)json數(shù)據(jù)優(yōu)點:有利于 seo 優(yōu)化??梢栽?taotao-portal 中對數(shù)據(jù)進(jìn)行。缺點:系統(tǒng)直接需要調(diào)用服務(wù)內(nèi)容。多了一次 http 請求。系統(tǒng)直接服務(wù)的調(diào)用,需要使用 ht

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

19、緩存刪除指定key的內(nèi)容清空redis緩存返回OK內(nèi)容維護(hù)內(nèi)容展示內(nèi)容添加是接收返回結(jié)果修改內(nèi)容展示首頁接收結(jié)果接收內(nèi)容請求展示首頁保存內(nèi)容傳智播客 Java 學(xué)院 傳智.入云龍4.3 內(nèi)容服務(wù)發(fā)布4.3.1 需求分析根據(jù)內(nèi)容的id內(nèi)容列表,從 tb_content 表中。服務(wù)是一個 restFul 形式的服務(wù)。使用 http 協(xié)議傳遞 json 格式的數(shù)據(jù)。4.3.2 Dao 層從 tb_content 表中,根據(jù)內(nèi)容id。是??梢允褂媚嫦蚬こ躺傻拇a。4.3.3 Service 層接收內(nèi)容參數(shù):id,根據(jù)id列表。返回一個內(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)容列表。返回一個 json 格式的數(shù)據(jù)??梢允褂?TaotaoResult 包裝此列表。4.4 Http的使用4.4.1 什么是 httpHttp富的支持是 Apache Jak

22、arta Common 下的子項目,用來提供高效的、最新的、功能豐HTTP 協(xié)議的客戶端編程工具包,并且它支持 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 添加依賴需要把 http的 jar 包添加到工程中。只需要在工程中添加 http的依賴。4.4.3 使用使用 http執(zhí)行 get 請求Te

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

25、ttps.createDefault();/創(chuàng)建一個 post 對象Testpublic void doGetWithParam() throws Exception/創(chuàng)建一個http對象ableHttphttp= Https.createDefault();/創(chuàng)建一個uri 對象/執(zhí)行請求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 請求4.4.4 Http封裝成工具類其他項目也可能會用到 http,所以把工具類放到 taotao-common 中。Testpubli

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

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

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

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

溫馨提示

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

評論

0/150

提交評論