1. 程式人生 > >商城專案實戰26:CMS內容管理系統工程搭建

商城專案實戰26:CMS內容管理系統工程搭建

上文我們一起搭建了表現層中的商城門戶系統——taotao-portal-web,本文我將教大家如何搭建CMS內容管理系統這個工程。在這之前,我們還是一起分析一下商城門戶系統中的表的設計。

商城門戶系統中表的設計

我們以京東的首頁為例,如下圖所示,可以看到內容顯示是分組顯示的,廣告位輪播圖是一組,輪播圖下面那兩張圖片是一組,右邊的”促銷”、”公告”是一組,但是它與輪播圖又有所不同,不同之處在於它下面分了兩個小組——”促銷”組和”公告”組,每個小組下面有標題列表,每個標題都是一個連結,點選”促銷”這組的任何一個標題進入會是一個新的網站,點選”公告”這組的任何一個標題進去則是公告的具體內容(相當於一篇文章),”更多”表示還有其它分組。另外”京東秒殺”這也是一組,這組內容的特點是有標題有圖片有價格。”發現好貨”這組則是有圖片有標題。 
這裡寫圖片描述


從上圖京東首頁的展示不難看出,我們應該將內容進行分類,每個分類下面有多條內容,它們是一對多的關係,這樣的關係就適合用兩張表來進行儲存。一張表示內容分類表,另一張表示內容表。首先我們來看下內容分類表,如下圖所示。 
這裡寫圖片描述
表中有parent_id欄位,這樣便可以實現樹形分級展示,所以內容分類表儲存的是樹形結構的資料。分類要有分類名稱,即name欄位,status欄位用來表示該分類目前是否應該顯示(如果已經邏輯刪除了,那麼便不再顯示了),sort_order則是同級類目的展現次序,is_parent欄位直接記錄是否是父級類目(這個欄位在樹形展示時很有用)。 
下面我們便來看一下內容表,內容表中肯定是有內容分類表的外來鍵的(category_id),內容展示有的有標題,因此需要標題(title)這麼一個欄位,有的文章是有小標題的,因此我們應該加上小標題欄位(sub_title),有的內容需要對標題進行描述,因此需要標題描述欄位(title_desc),連結欄位是必須要有的,因為內容涉及最多的便是跳轉。我們可以看到內容表中設計了兩個圖片欄位,之所以這張表設計了兩個圖片欄位,是因為考慮到不同的顯示屏所顯示的圖片會不一樣,寬屏則應該顯示寬屏圖片,窄屏則應該顯示窄屏圖片,歸根結底是為了適應不同的螢幕。 
這裡寫圖片描述

分析完商城門戶系統中表的設計之後,下面我們來搭建內容管理系統工程。

搭建taotao-content工程

我們可參考taotao-manager工程的建立來搭建CMS內容管理系統工程,它是後臺的服務層工程。這個工程裡面需要很多模組,我們須把這些模組單獨拆分,所以它應該是一個聚合工程。 
首先點選【File】選單選項,並在下拉框中選中【New】,接著點選【Other】,如下: 
這裡寫圖片描述
在輸入框中輸入maven,並選擇Maven Project,如下: 
這裡寫圖片描述
點選【Next】,勾選Create a simple project複選框,如果你不打上這個勾,它會讓你選擇一個骨架,但骨架裡面是沒有pom這個模板的。 
這裡寫圖片描述


點選【Next】,出現如下對話方塊,在該對話方塊中定義maven工程的座標,如下: 
這裡寫圖片描述
最後點選【Finish】,taotao-content工程即可建立完畢。

搭建taotao-content-interface模組

現在我們來搭建taotao-content-interface模組,方法是在taotao-content工程上右鍵→Maven→New Maven Module Project,如下圖所示。 
這裡寫圖片描述
彈出如下對話方塊,勾選”Create a simple project”,在Module Name中輸入taotao-content-interface,然後點選”Next”。 
這裡寫圖片描述
選擇該模組的打包方式,我們使用預設的jar,直接點選”Finish”。 
這裡寫圖片描述

搭建taotao-content-service模組

搭建taotao-content-service模組,步驟基本上同上,只是打包方式換成war即可,如下圖所示。 
這裡寫圖片描述
至於dao和pojo這兩個模組我們不用在taotao-content工程再新建一遍了,因為我們在taotao-manager工程當中便建立好了,我們只需要引用這兩個模組就可以了。

配置taotao-content工程的pom.xml檔案

主要新增對taotao-common工程的依賴,我們最好啟動聚合工程,因此我們在聚合工程中配置tomcat啟動外掛,由於8080、8081、8082都已經被佔用了,我們這裡使用8083,如下所示。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.taotao</groupId>
        <artifactId>taotao-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-content</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <modules>
        <module>taotao-content-interface</module>
        <module>taotao-content-service</module>
    </modules>

    <dependencies>
        <dependency>
            <groupId>com.taotao</groupId>
            <artifactId>taotao-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
    <!-- 配置tomcat外掛 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <configuration>
                    <port>8083</port>
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

配置taotao-content-interface模組的pom.xml檔案

主要新增對taotao-manager-pojo的依賴,如下所示。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.taotao</groupId>
        <artifactId>taotao-content</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>taotao-content-interface</artifactId>

    <dependencies>
        <dependency>
            <groupId>com.taotao</groupId>
            <artifactId>taotao-manager-pojo</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

配置taotao-content-service模組的pom.xml檔案

主要新增對taotao-manager-dao、taotao-content-interface、spring、dubbo的依賴,如下所示。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.taotao</groupId>
        <artifactId>taotao-content</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>taotao-content-service</artifactId>
    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>com.taotao</groupId>
            <artifactId>taotao-manager-dao</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.taotao</groupId>
            <artifactId>taotao-content-interface</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!-- 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>

        <!-- dubbo相關 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <!-- 排除依賴 -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.jboss.netty</groupId>
                    <artifactId>netty</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- zookeeper的客戶端,你要連線zookeeper,需要把以下兩個jar包加進來 -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
        </dependency>
    </dependencies>
</project>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80

框架整合

我們把taotao-manager-service的src/main/resources目錄下的mybatis、properties、spring三個目錄貼上到taotao-content-service的src/main/resources目錄中。SqlMapConfig.xml檔案不用動,如下圖所示。 
這裡寫圖片描述
properties目錄下的db.properties配置檔案也不用修改,如下圖所示。 
這裡寫圖片描述
spring目錄下的applicationContext-dao.xml檔案也不用修改,如下圖所示。 
這裡寫圖片描述
為了大家方便複製,現把該檔案的內容黏貼出來。

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">

    <!-- 資料庫連線池 -->
    <!-- 載入配置檔案 -->
    <context:property-placeholder location="classpath:properties/db.properties" />
    <!-- 資料庫連線池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
        destroy-method="close">
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="maxActive" value="10" />
        <property name="minIdle" value="5" />
    </bean>
    <!-- 讓spring管理sqlsessionfactory 使用mybatis和spring整合包中的 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 資料庫連線池 -->
        <property name="dataSource" ref="dataSource" />
        <!-- 載入mybatis的全域性配置檔案 -->
        <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" />
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.taotao.mapper" />
    </bean>
</beans>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

applicationContext-service.xml檔案需要修改掃描的包為”com.taotao.content.service”,然後我們到taotao-content-interface的src/main/Java目錄下新建一個com.taotao.content.service包,並接著在taotao-content-service的src/main/java目錄下新建一個com.taotao.content.service.impl包。記得還要將dubbo服務名稱修改為”taotao-content”,如下圖所示。 
這裡寫圖片描述
applicationContext-trans.xml檔案的內容我們是需要修改的,只須修改切面的包為com.taotao.content.service,如下圖所示。 
這裡寫圖片描述
最後,我們把taotao-manager-service下的WEB-INF及web.xml,貼上到taotao-content-service的webapp目錄下,修改web.xml檔案中的<display-name>為”taotao-content”。 
這裡寫圖片描述
至此,我們的框架就整合好了。希望大家渡過愉快的一天!