1. 程式人生 > >day72_淘淘商城專案_05_匠心筆記

day72_淘淘商城專案_05_匠心筆記

課程計劃:

  • 第五天
    • 1、首頁輪播圖的展示
    • 2、首頁大廣告展示流程圖
    • 3、Redis的安裝及使用
    • 4、Redis叢集的搭建
    • 5、向業務邏輯中新增快取
    • 6、Jedis的使用(redis的客戶端)
    • 7、快取同步
    • 8、Solr伺服器安裝

1、首頁輪播圖的展示

taotao-portal-web工程中,動態展示內容資訊。
前端團隊:負責JS,html等開發。
後端團隊:負責後臺的開發並提供資料給前端。

1.1、功能分析

只需要動態生成一個json資料,輪播圖就可以動態展示。
taotao-portal-web工程下的index.jsp中:
Json資料格式:

[
    {
        "srcB""http://image.taotao.com/images/2015/03/03/2015030304360302109345.jpg",
        "height"240,
        "alt""",
        "width"
670,
        "src""http://image.taotao.com/images/2015/03/03/2015030304360302109345.jpg",
        "widthB"550,
        "href""http://sale.jd.com/act/e0FMkuDhJz35CNt.html?cpdad=1DLSUE"
,
        "heightB"240
    },
    {
        "srcB""http://image.taotao.com/images/2015/03/03/2015030304353109508500.jpg",
        "height"240,
        "alt""",
        "width"670,
        "src""http://image.taotao.com/images/2015/03/03/2015030304353109508500.jpg",
        "widthB"550,
        "href""http://sale.jd.com/act/UMJaAPD2VIXkZn.html?cpdad=1DLSUE",
        "heightB"240
    },
    ......
]

分析:
  taotao-portal-web 需要自己自定義的POJO的型別資料的列表。
  taotao-content 是服務層公用的,可以被其他的系統(表現層的系統)來呼叫。
  為了通用性:taotao-content 服務層中獲取tb_content的內容列表 即:list<TbContent>
  taotao-portal-web 表現層需要拿到tb_content的列表,然後進行轉換成自定義的型別的資料列表即可。
  從tb_content表中取資料,根據(葉子節點)內容分類id查詢列表(內容列表)。
  內容分類id固定,需要配置在屬性檔案中
  圖片的width、height配置在屬性檔案中
  alt屬性從欄位sub_title中獲取。
  src --> pic
  srcB --> pic2
  href --> url


URL:/index
引數:無。
返回值:首頁頁面(資料是JSON,設定在Model中)

業務邏輯:
  1、根據分類的id 查詢內容列表(List<TbContent>)
  2、服務層釋出服務。
  3、表現層引入服務。
  4、呼叫服務,轉換成自定義的資料型別(Ad1Node)的列表。
  5、將資料列表設定到Model中,返回給頁面。

需要建立一個pojo轉換成頁面需要的json資料格式。放入taotao-portal-web工程的com.taotao.portal.pojo中。
AD1Node.java

/**
 * 前臺大廣告位需要的pojo資料型別
 * @author chenmingjun
 * @date 2018年11月18日下午4:03:34
 * @version 1.0
 */

public class AD1Node implements Serializable {

    private static final long serialVersionUID = 1L;

    private String srcB;
    private Integer height;
    private String alt;
    private Integer width;
    private String src;
    private Integer widthB;
    private String href;
    private Integer heightB;

    public String getSrcB() {
        return srcB;
    }

    public void setSrcB(String srcB) {
        this.srcB = srcB;
    }

    public Integer getHeight() {
        return height;
    }

    public void setHeight(Integer height) {
        this.height = height;
    }

    public String getAlt() {
        return alt;
    }

    public void setAlt(String alt) {
        this.alt = alt;
    }

    public Integer getWidth() {
        return width;
    }

    public void setWidth(Integer width) {
        this.width = width;
    }

    public String getSrc() {
        return src;
    }

    public void setSrc(String src) {
        this.src = src;
    }

    public Integer getWidthB() {
        return widthB;
    }

    public void setWidthB(Integer widthB) {
        this.widthB = widthB;
    }

    public String getHref() {
        return href;
    }

    public void setHref(String href) {
        this.href = href;
    }

    public Integer getHeightB() {
        return heightB;
    }

    public void setHeightB(Integer heightB) {
        this.heightB = heightB;
    }

    @Override
    public String toString() {
        return "AD1Node [srcB=" + srcB + ", height=" + height + ", alt=" + alt + ", width=" + width + ", src=" + src
                + ", widthB=" + widthB + ", href=" + href + ", heightB=" + heightB + "]";
    }
}

1.2、Dao層

從tb_content表中取出資料,根據內容分類id查詢內容列表。可以使用逆向工程生成的Mapper。

1.3、Service層

引數:Long categoryId
返回值:List<TbContent>

    @Override
    public List<TbContent> getContentListByCategoryId(Long categoryId) {
        TbContentExample contentExample = new TbContentExample();
        Criteria criteria = contentExample.createCriteria();
        criteria.andCategoryIdEqualTo(categoryId);
        List<TbContent> list = contentMapper.selectByExample(contentExample);
        return list;
    }

1.3.1、釋出服務

在taotao-content-service工程applicationContext-service.xml中釋出服務

1.4、表現層

在taotao-portal-web中實現,查詢首頁輪播圖的內容。

1.4.1、引用服務

先在taotao-protal-web專案中引入對taotao-content-interface的依賴,如圖:


在taotao-content-web工程springmvc.xml中引入服務

1.4.2、Controller

在首頁展示之前,對資料進行處理,然後展示首頁,需要在IndexController中實現。

/**
 * 前臺首頁展示Controller
 * @author    chenmingjun
 * @date    2018年11月14日下午11:22:22
 * @version 1.0
 */

@Controller
public class IndexController {

    @Autowired
    private ContentService contentService;

    @Value("${AD1_CATEGORY_ID}")
    private Long AD1_CATEGORY_ID;

    @Value("${AD1_HEIGHT}")
    private Integer AD1_HEIGHT;

    @Value("${AD1_HEIGHT_B}")
    private Integer AD1_HEIGHT_B;

    @Value("${AD1_WIDTH}")
    private Integer AD1_WIDTH;

    @Value("${AD1_WIDTH_B}")
    private Integer AD1_WIDTH_B;

    /**
     * 展示前臺首頁,並展示首頁輪播圖
     * @return
     */

    @RequestMapping("/index")
    public String showIndex(Model model) {
        // 1、引入服務
        // 2、注入服務
        // 3、呼叫方法查詢TbContent的列表
        List<TbContent> contentList = contentService.getContentListByCategoryId(AD1_CATEGORY_ID);
        // 4、把TbContent的列表轉換為AD1Node列表
        List<AD1Node> aD1NodeList = new ArrayList<>();
        for (TbContent tbContent : contentList) {
            AD1Node aD1Node = new AD1Node();
            aD1Node.setAlt(tbContent.getSubTitle());
            aD1Node.setHref(tbContent.getUrl());
            aD1Node.setSrc(tbContent.getPic());
            aD1Node.setSrcB(tbContent.getPic2());
            aD1Node.setHeight(AD1_HEIGHT);
            aD1Node.setHeightB(AD1_HEIGHT_B);
            aD1Node.setWidth(AD1_WIDTH);
            aD1Node.setWidthB(AD1_WIDTH_B);
            aD1NodeList.add(aD1Node);
        }
        // 5、把AD1Node列表轉換為JSON資料
        String json = JsonUtils.objectToJson(aD1NodeList);
        // 6、把JSON資料設定到request域中去(Model)
        model.addAttribute("ad1", json);
        return "index";
    }
}

屬性檔案所在位置:


在taotao-portal-web中的springmvc.xml中還需要配置:
    <!-- 配置載入屬性檔案 -->
    <context:property-placeholder location="classpath:resource/resource.properties"/>

相關推薦

day72_商城專案_05_匠心筆記

課程計劃: 第五天 1、首頁輪播圖的展示 2、首頁大廣告展示流程圖 3、Redis的安裝及使用 4、Redis叢集的搭建 5、向業務邏輯中新增快取 6、Jedis的使用(redis的客戶端) 7、快取同步

day71_商城專案_04_匠心筆記

課程計劃 1、門戶(前臺)系統的搭建 2、顯示前臺商城首頁 3、CMS內容管理系統的介紹 4、CMS內容管理系統的建立 5、CMS內容管理系統的實現 a) 內容分類管理 b) 內容管理

day72_商城專案_05_首頁輪播圖顯示實現 + redis的安裝及使用 + redis叢集環境搭建 + redis實現快取 + 快取同步_匠心筆記

淘淘商城專案_05 1、首頁輪播圖的展示 1.1、功能分析 1.2、Dao層 1.3、Service層 1.3.1、釋出服務 1.4、表現層 1.

day74_商城專案_07_solrcloud搭建 + zookeeper叢集搭建 + 搜尋功能切換到叢集版 + httpclient學習 + 全域性異常處理器 + 附錄_匠心筆記

課程計劃 1、solr叢集的搭建 2、使用solrJ管理solr叢集 3、把搜尋功能切換到solr叢集版 4、httpclient 5、全域性異常處理 1、什麼是SolrCloud   SolrCloud(solr 雲)是Solr提供的分散式搜尋

商城專案_同步索引庫問題分析 + ActiveMQ介紹/安裝/使用 + ActiveMQ整合spring + 使用ActiveMQ實現新增商品後同步索引庫_匠心筆記

文章目錄 1、同步索引庫問題分析 2、ActiveM的介紹 2.1、什麼是ActiveMQ 2.2、ActiveMQ的訊息形式 3、ActiveMQ的安裝 3.1、安裝環境 3.2、安裝步驟

day79_商城專案_12_購物車流程 + 商城購物車系統的搭建 + 商城購物車系統的實現分析 + 購物車實現增刪改查_匠心筆記

課程計劃 1、購物車的流程 2、購物車的實現 a) 登入狀態下的購物車實現 b) 未登入狀態下的購物車實現 1、購物車流程 1.1、以前的購物車流程 使用者將商品新增到購物車時,判斷使用者是否登入,如果已經登入將購物車放入se

day81_商城專案_14_專案釋出 + Linux下安裝mysql + tomcat熱部署 + 資料庫分庫分表 + Mycat學習_匠心筆記

第十四天: 1、Linux上mysql的安裝 2、系統的部署 3、mycat的介紹 4、專案總結 5、面試中的問題 1、開發流程淺解 2、專案釋出前的準備 1、測試  a) 本地單元測試  b) 測試環境測試(1,2,3,4,5)  c) 使用

day82_商城_15_專案的總結 + 專案中的問題_匠心筆記

專案的總結 第一天: 學習電商行業的背景,電商模式:B2B、B2C、B2B2C、O2O。分散式,叢集的理解,系統的架構,基於SSO的架構。使用Maven搭建後臺工程,及SVN的使用。 第二天: dubbo的學習和使用,系統和系統之間通訊的中介軟體。webservice :系統之間通訊。應

day73_商城專案_06_solr索引庫搭建 + solr搜尋功能實現 + 圖片顯示等問題解決_匠心筆記

課程計劃 第六天: 1、搜尋工程的搭建 2、linux下solr服務的搭建 3、測試使用solrJ管理索引庫 4、把商品資料匯入到索引庫中(後臺功能) 5、商品搜尋功能實現(前臺功能) 1、搜尋工程的搭建 要實現搜尋功能,需要搭建solr服務、搜尋服務工程、搜尋系統(表

day82_商城專案_15_專案總結 + 專案中的問題_匠心筆記

專案總結 第一天 1、電商行業的背景,b2b、b2c、b2b2c、c2c、o2o2。 2、系統的架構。基於SOA的架構。 3、工程搭建。使用maven管理工程。 4、svn的使用。 第二天 1、ssm框架整合。 2、使用dubbo進行通訊   1)服務提供者   2)服務消費者

day81_商城專案_14_專案釋出 + Linux下安裝mysql + tomcat熱部署 + 反向代理的配置 + 資料庫分庫分表 + Mycat學習_匠心筆記

淘淘商城專案_14 1、開發流程淺解 2、專案釋出前的準備 3、專案部署 3.1、Linux下安裝mysql 3.2、專案架構講解 3.3、系統功能介紹 3.4、網路拓撲圖 3.5

day80_商城專案_13_訂單系統搭建 + 展示訂單確認頁面 + 使用者身份認證(SpringMVC攔截器) + 實現提交訂單功能_匠心筆記

淘淘商城專案_13 1、訂單系統搭建 1.1、功能分析 1.2、工程搭建 1.2.1、建立訂單服務層工程 1.2.2、建立訂單表現層工程 2、展示訂單確認頁面

day79_商城專案_12_購物車流程 + 商城購物車系統的搭建 + 商城購物車系統的實現分析(cookie+redis方案) + 購物車實現增刪改查_匠心筆記

淘淘商城專案_12 1、購物車流程 1.1、以前的購物車流程 1.2、現在的購物車流程 2、商城購物車系統的搭建 2.1、購物車系統的架構 2.2、服務層工程搭建

day78_商城專案_11_實現SSO系統的登入註冊功能 + 門戶首頁展示使用者名稱 + ajax請求跨域問題詳解_匠心筆記

淘淘商城專案_11 1、服務介面實現 1.1、檢查資料是否可用介面開發 1.1.1、功能分析 1.1.2、Dao 1.1.3、Service 1.1.4、釋出服務

day77_商城專案_10_ Linux下的Nginx代理詳解(配置虛擬主機+實現反向代理+實現負載均衡+高可用) + 單點登入系統工程搭建 + SSO系統介面文件講解_匠心筆記

淘淘商城專案_10 1、目前訪問系統使用的方式存在的問題 2、什麼是nginx 3、nginx的應用場景 4、nginx的安裝 4.1、要求的安裝環境 4.2、安裝步驟 4.3、啟動nginx

day76_商城專案_09_商品詳情頁動態展示實現(jsp+redis) + FreeMarker模板引擎入門 + 商品詳情頁靜態化實現(Win版本的nginx作http伺服器)_匠心筆記

淘淘商城專案_09 1、商品詳情頁面展示,動態展示(jsp + redis) 1.1、工程搭建 1.1.1、pom檔案 1.1.2、框架整合 1.1.3、springmvc.xml

day75_商城專案_08_同步索引庫問題分析 + ActiveMQ介紹/安裝/使用 + ActiveMQ整合spring + 使用ActiveMQ實現新增商品後同步索引庫_匠心筆記

淘淘商城專案_08 1、同步索引庫問題分析 2、ActiveM的介紹 2.1、什麼是ActiveMQ 2.2、ActiveMQ的訊息形式 3、ActiveMQ的安裝 3.1、安裝環

day74_商城專案_07_ zookeeper叢集搭建 + solrcloud叢集搭建 + 搜尋功能切換到叢集版 + httpclient學習 + 全域性異常處理器 + 附錄_匠心筆記

淘淘商城專案_07 1、什麼是SolrCloud 2、Solr叢集的系統架構 2.1、SolrCloud的物理結構 2.2、SolrCloud的邏輯結構 2.2.1、Collection

day73_商城專案_06_搜尋工程的搭建 + linux下solr索引庫的搭建 + 把商品資料匯入到索引庫中(後臺) + 商品搜尋功能實現(前臺) + 圖片顯示等問題解決_匠心筆記

淘淘商城專案_06 1、搜尋工程的搭建 1.1、Solr服務搭建 1.1.1、solr的環境 1.1.2、solr的搭建步驟 1.1.3、solr的使用 1.2、配置

day71_商城專案_04_入口網站介紹 + 商城首頁搭建 + CMS內容管理系統的建立 + CMS內容管理系統的實現_匠心筆記

淘淘商城專案_04 1、門戶(前臺)系統的搭建 1.1、什麼是門戶系統 1.2、系統架構 1.3、搭建taotao-portal-web工程 1.3.1、建立Maven工程 1.3