day68_淘淘商城項目_01_電商介紹 + 互聯網術語 + SOA + 分佈式 + 集羣介紹 + 環境配置 + 框架搭建_匠心筆記

課程計劃html

  • 第一天:
    • 一、電商行業的背景介紹--電子商務
    • 二、淘淘商城的系統架構
      • a) 功能介紹
      • b) 架構講解
    • 三、工程搭建--後臺工程
      • a) 使用maven搭建工程(工程大)
      • b) 使用maven的tomcat插件啓動工程
    • 四、SVN的使用
  • 次日:
    • 一、服務中間件dubbo--遠程調用技術
    • 二、SSM框架整合
    • 三、整合測試
    • 四、商品列表查詢功能實現
  • 第三天:
    • 一、商品類目選擇
    • 二、圖片上傳
      • a) 圖片服務器FastDFS
      • b) 圖片上傳功能實現
    • 三、富文本編輯器KindEditor的使用
    • 四、商品添加功能完成
  • 第四天:
    • 一、前臺系統搭建
    • 二、CMS系統的實現--內容管理系統
      • a) 內容分類管理
      • b) 內容管理
    • 三、前臺內容動態展現
  • 第五天:
    • 一、Redis服務器搭建--緩存
    • 二、向業務邏輯中添加緩存
    • 三、使用redis作緩存
    • 四、緩存同步
    • 五、Solr服務器安裝--搜索
  • 第六天:
    • 一、Solrj使用測試--Solr服務的java客戶端
    • 二、把數據庫中的數據導入索引庫
    • 三、搜索功能的實現
  • 第七天:
    • 一、Solr集羣搭建--SlorCloud
    • 二、使用solrj管理solr集羣
    • 三、把搜索功能切換到集羣版
  • 第八天:
    • 一、什麼是MQ--消息隊列
    • 二、MQ的應用場景
    • 三、ActiveMQ的使用方法
    • 四、使用消息隊列實現商品同步
  • 第九天:
    • 一、商品詳情頁面展現--動態展現 jsp + redis
    • 二、使用freemarker實現網頁靜態化
    • 三、ActiveMq同步生成靜態網頁
  • 第十天:
    • 一、Nginx的安裝--訪問靜態資源
    • 二、Nginx配置虛擬機
    • 三、Nginx實現反向代理
    • 四、Nginx實現負載均衡
    • 五、SSO系統工程搭建--單點登陸系統
  • 第十一天:
    • 一、SSO註冊功能實現
    • 二、SSO登陸功能實現
    • 三、經過token得到用戶信息
    • 四、Ajax跨域請求(jsonp)
  • 第十二天:
    • 一、購物車實現
    • 二、訂單確認頁面展現
  • 第十三天:
    • 一、訂單系統完成
    • 二、系統部署--上線流程
  • 第十四天~十六天:
    • 項目實戰--需求、分組、實現
    • 項目總結

一、電商行業的背景介紹--電子商務

  近年來,中國的電子商務快速發展,交易額連創新高,電子商務在各領域的應用不斷拓展和深化、相關服務業蓬勃發展、支撐體系不斷健全完善、創新的動力和能力 不斷加強。電子商務正在與實體經濟深度融合,進入規模性發展階段,對經濟社會生活的影響不斷增大,正成爲我國經濟發展的新引擎。
  中國電子商務研究中心數據顯示,截止到2012年末,中國電子商務市場交易規模達7.85萬億人民幣,同比增加30.83%。其中,B2B電子商務交易額達6.25萬億,同比增加27%。而2011年整年,中國電子商務市場交易額達6萬億人民幣,同比增加33%,佔GDP比重上升到13%;2012年,電子商務佔GDP的比重已經高達15%。預計2013年我國電子商務規模將突破十萬億大關。java

1.一、11.11

  • 結論:
    • 一、電商行業很掙錢,找互聯網相關的工做。
    • 二、電商行業技術要求很高、高可用、海量數據的存儲。

1.二、電商行業技術特色

  • 技術新
  • 技術範圍廣
  • 分佈式
  • 高併發、集羣、負載均衡、高可用
  • 海量數據
  • 業務複雜
  • 系統安全

二、淘淘商城的系統架構

2.一、淘淘商城介紹

  淘淘網上商城是一個綜合性的B2C平臺,相似京東商城、天貓商城。會員能夠在商城瀏覽商品、下訂單,以及參加各類活動。
  管理員、運營能夠在平臺後臺管理系統中管理商品、訂單、會員等。
  客服能夠在後臺管理系統中處理用戶的詢問以及投訴。mysql

  • 電商模式:
    • B2B:商家到商家。阿里巴巴、1688(批發)、慧聰網、銘萬網。
    • B2C:商家(京東)到用戶。京東(自營)。
    • C2C:用戶到用戶。淘寶(趕集)。
    • B2B2C:商家(天貓)到商家(耐克)到用戶。天貓(開發票)。
    • O2O:線上到線下。百度外賣、美團外賣、餓了麼。

2.二、功能介紹

  • 後臺管理系統:管理商品、訂單、類目、商品規格屬性、用戶管理以及內容發佈等功能。
  • 前臺系統:用戶能夠在前臺系統中進行註冊、登陸、瀏覽商品、首頁、下單等操做。
  • 會員系統:用戶能夠在該系統中查詢已下的訂單、收藏的商品、個人優惠券、團購等信息。
  • 訂單系統:提供下單、查詢訂單、修改訂單狀態、定時處理訂單。
  • 搜索系統:提供商品的搜索功能。
  • 單點登陸系統:爲多個系統之間提供用戶登陸憑證以及查詢登陸用戶的信息。

2.三、系統架構

2.3.一、傳統架構

  • 存在的問題:
    • 一、功能耦合度高
    • 二、系統維護成本高
    • 三、若是併發量大,沒法解決高併發的問題

2.3.二、1000個併發

  • 存在的問題:
    • 一、系統沒法有效進行水平擴展(集羣不能針對功能模塊)
    • 二、用戶存在重複登陸的問題
      • 針對第二點:須要session共享,是以session廣播的形式,比較消耗資源(寬帶)。
  • 若是要達到10000併發
    • 須要20臺服務器作tomcat集羣。
    • 注意:當tomcat集羣中節點數量增長,服務能力先增長後降低。因此集羣中節點數量不能太多,通常也就`5個`左右。

2.3.三、分佈式架構(10000個併發)

  • 須要按照功能點把系統拆分,拆分紅獨立的功能。單獨爲某一個節點添加服務器。須要系統之間配合才能完成整個業務邏輯。叫作分佈式
  • 分佈式架構:多個子系統相互協做才能完成業務流程。系統之間須要進行通訊
  • 集羣同一個工程部署到多臺服務器上。至關於同一個工程代碼拷貝多份部署到多臺服務器,每臺服務器單獨獨立部署運行。
  • 分佈式架構:
    • 把系統按照模塊拆分紅多個子系統,多個子系統相互協做才能完成業務流程系統之間須要進行通訊。
  • 優勢:
    • 一、把模塊拆分,`使用接口通訊`,`下降`模塊之間的`耦合度`。
    • 二、把項目拆分紅若干個子項目,不一樣的團隊負責不一樣的子項目。
    • 三、增長功能時只須要再增長一個子項目,調用其餘系統的接口就能夠。
    • 四、能夠`靈活`的進行分佈式`部署`。
  • 缺點:
    • 一、系統之間交互須要使用遠程通訊,接口開發`增長工做量`。
    • 二、各個模塊有一些通用的`業務邏輯沒法共用`。

2.3.四、基於SOA的架構

SOA:Service Oriented Architecture 面向服務的架構。也就是把工程拆分紅服務層表現層兩個工程。服務層中包含業務邏輯,只須要對外提供服務便可。表現層只須要處理和頁面的交互,業務邏輯都是調用服務層的服務來實現。git

2.3.五、淘淘商城系統架構

三、技術選型和開發環境

3.一、技術選型

  • Spring、SpringMVC、Mybatis
  • JSP、JSTL、jQuery、EasyUI、KindEditor(富文本編輯器)
  • Redis(緩存服務器,單點登陸,購物車)
  • Solr(全文搜索)
  • dubbo(分佈式服務框架)
  • HttpClient(HTTP 協議訪問客戶端)
  • ActiveMQ(消息隊列)
  • Quartz(定時任務)
  • FastDFS(圖片服務器)
  • FreeMarker(網頁靜態化)
  • Nginx(反向代理服務器)
  • MyCat(數據庫中間件)

3.二、開發工具版本和環境

  • Eclipse Mars.2 Release (4.5.2)
  • Maven 3.5.4
  • Tomcat 7.0.47(Maven Tomcat Plugin)
  • JDK 1.7
  • Mysql 5.7
  • Dubbo 2.5.3
  • Nginx 1.8.0
  • Redis 3.0.0
  • ActiveMQ 5.13.0
  • Win10 操做系統
  • SVN (版本管理)

四、工程搭建--後臺工程

4.一、使用maven的好處

  • 使用maven管理工程的好處以下:
    • 1) jar包的管理
    • 2) 工程之間的依賴管理
    • 3) 自動打包
    • 4) 統一的版本的控制

4.二、後臺工程搭建分析

詳解以下:github

Maven的常見打包方式:jar、war、pom
pom工程通常都是父工程,管理jar包的版本、maven插件的版本、統一的依賴管理。聚合工程。

taotao-parent:父工程,打包方式pom,管理jar包的版本號。
    |          項目中全部工程都應該繼承父工程。
    |--taotao-common:通用的工具類、通用的pojo。打包方式jar
    |--taotao-manager:服務層工程。聚合工程。pom工程
        |--taotao-manager-pojo:打包方式jar
        |--taotao-manager-dao:打包方式jar
        |--taotao-manager-interface:打包方式jar
        |--taotao-manager-service:打包方式war (爲了發佈服務的方便)
    |--taotao-manager-web:表現層工程。打包方式war

4.三、工程搭建

Maven相關配置:web

  • M2Eclipse是eclipse中的Maven插件。(低版本的ecplise須要手動安裝,高版本的eclipse自帶,本博主用的是高版本的ecplise)
  • M2Eclipse是MyEclipse中自帶的Maven插件。
    • 注意:
      • 若是咱們單獨用命令行的方式進行maven的使用時,咱們用戶的配置文件默認在~/.m2/setting.xml
      • 若是咱們使用Eclipse或者MyEclipse的方式進行maven的使用時,咱們用戶的配置文件能夠想放哪裏就放哪裏,只須要指定配置文件的路徑便可。
  • 本地倉庫目錄:默認位置在:~/.m2/repository
  • 由於咱們使用eclipse開發,因此咱們把本地倉庫放到咱們安排好的目錄中,須要在eclipse中指定用戶的配置文件路徑便可。以下圖:
  • 本地倉庫的使用,咱們既能夠提早下好所須要的jar包,也能夠邊開發邊聯網下載!

Eclipse相關配置:redis

  • eclipse 設置默認編碼爲Utf-8
  • 須要設置的幾處地方爲:
    • Window --> Preferences --> General --> Content Type --> Text --> JSP 最下面設置爲UTF-8
    • Window --> Preferences --> General --> Workspace 面板Text file encoding 選擇UTF-8
    • Window --> Preferences --> Web --> JSP Files 面板選擇 ISO 10646/Unicode(UTF-8)
    • Window --> Preferences --> General --> Workspace 面板 New text file line delimiter 選擇 Unix

4.3.一、taotao-parent

  • 父工程必須是pom工程。
    • 建立步驟以下:
      (1)

      (2)

      (3)
  • pom.xml
<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>
    <groupId>com.taotao</groupId>
    <artifactId>taotao-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <!-- 集中定義依賴版本號 -->
    <properties>
        <junit.version>4.12</junit.version>
        <spring.version>4.2.4.RELEASE</spring.version>
        <mybatis.version>3.2.8</mybatis.version>
        <mybatis.spring.version>1.2.2</mybatis.spring.version>
        <mybatis.paginator.version>1.2.15</mybatis.paginator.version>
        <mysql.version>5.1.32</mysql.version>
        <slf4j.version>1.6.4</slf4j.version>
        <jackson.version>2.4.2</jackson.version>
        <druid.version>1.0.9</druid.version>
        <httpclient.version>4.3.5</httpclient.version>
        <jstl.version>1.2</jstl.version>
        <servlet-api.version>2.5</servlet-api.version>
        <jsp-api.version>2.0</jsp-api.version>
        <joda-time.version>2.5</joda-time.version>
        <commons-lang3.version>3.3.2</commons-lang3.version>
        <commons-io.version>1.3.2</commons-io.version>
        <commons-net.version>3.3</commons-net.version>
        <pagehelper.version>3.4.2-fix</pagehelper.version>
        <jsqlparser.version>0.9.1</jsqlparser.version>
        <commons-fileupload.version>1.3.1</commons-fileupload.version>
        <jedis.version>2.7.2</jedis.version>
        <solrj.version>4.10.3</solrj.version>
        <dubbo.version>2.5.3</dubbo.version>
        <zookeeper.version>3.4.7</zookeeper.version>
        <zkclient.version>0.1</zkclient.version>
        <activemq.version>5.13.0</activemq.version>
        <freemarker.version>2.3.23</freemarker.version>
        <quartz.version>2.2.2</quartz.version>
    </properties>
    <!-- 統一依賴jar包版本的管理, 其下的標籤dependencies只是版本的管理,並非依賴jar包-->
    <dependencyManagement>
        <dependencies>
            <!-- 時間操做組件 -->
            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>${joda-time.version}</version>
            </dependency>
            <!-- Apache工具組件 -->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons-lang3.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-io</artifactId>
                <version>${commons-io.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-net</groupId>
                <artifactId>commons-net</artifactId>
                <version>${commons-net.version}</version>
            </dependency>
            <!-- Jackson Json處理工具包 -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <!-- httpclient -->
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>${httpclient.version}</version>
            </dependency>
            <!-- quartz任務調度框架 -->
            <dependency>
                <groupId>org.quartz-scheduler</groupId>
                <artifactId>quartz</artifactId>
                <version>${quartz.version}</version>
            </dependency>
            <!-- 單元測試 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope><!-- test表示該範圍傳遞不到下面去 -->
            </dependency>
            <!-- 日誌處理 -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <!-- Mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>${mybatis.spring.version}</version>
            </dependency>
            <!-- mybatis分頁 相關的,暫時沒有用到 -->
            <dependency>
                <groupId>com.github.miemiedev</groupId>
                <artifactId>mybatis-paginator</artifactId>
                <version>${mybatis.paginator.version}</version>
            </dependency>
            <!-- 分頁插件pagehelper -->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>${pagehelper.version}</version>
            </dependency>
            <!-- MySql -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <!-- 鏈接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <!-- Spring -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jms</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!-- JSP相關 -->
            <dependency>
                <groupId>jstl</groupId>
                <artifactId>jstl</artifactId>
                <version>${jstl.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>${servlet-api.version}</version>
            <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jsp-api</artifactId>
                <version>${jsp-api.version}</version>
                <scope>provided</scope>
            </dependency>
            <!-- 文件上傳組件 -->
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>${commons-fileupload.version}</version>
            </dependency>
            <!-- Redis客戶端 -->
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>${jedis.version}</version>
            </dependency>
            <!-- solr客戶端 -->
            <dependency>
                <groupId>org.apache.solr</groupId>
                <artifactId>solr-solrj</artifactId>
                <version>${solrj.version}</version>
            </dependency>
            <!-- dubbo相關 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>dubbo</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>${zookeeper.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.sgroschupf</groupId>
                <artifactId>zkclient</artifactId>
                <version>${zkclient.version}</version>
            </dependency>
            <!-- activemq -->
            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>activemq-all</artifactId>
                <version>${activemq.version}</version>
            </dependency>
            <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>${freemarker.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <!-- 資源文件拷貝插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <!-- java編譯插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
        <!-- 統一插件版本的管理,pluginManagement是控制版本的,若是在子工程要使用該插件,須要在子工程中再配置座標 -->
        <pluginManagement>
            <plugins>
                <!-- 配置Tomcat插件 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                </plugin>
                <!-- 配置打包時跳過測試 ,首次配置使用的時候會自動聯網進行下載 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.12.4</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

4.3.二、taotao-common

  • taotao-common:是通用的工具類、通用的pojo。打包方式jar。須要繼承父工程。
  • 新建一個Maven Project,不使用骨架進行建立該工程。
  • pom.xml
<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>
    <artifactId>taotao-common</artifactId>
    <dependencies>
        <!-- 時間操做組件 -->
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
        </dependency>
        <!-- Apache工具組件 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
        </dependency>
        <!-- Jackson Json處理工具包 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <!-- httpclient -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
        <!-- quartz任務調度框架 -->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
        </dependency>
        <!-- 單元測試 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope><!-- test表示該範圍傳遞不到下面去 -->
        </dependency>
        <!-- 日誌處理 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </dependency>
    </dependencies>
</project>

4.3.三、taotao-manager

  • taotao-manager:是聚合工程。打包方式pom。須要繼承父工程。
  • 新建一個Maven Project,不使用骨架進行建立該工程。
  • pom.xml
<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>
    <artifactId>taotao-manager</artifactId>
    <packaging>pom</packaging>
    <dependencies>
        <!-- 配置對taotao-common的依賴-->
        <dependency>
            <groupId>com.taotao</groupId>
            <artifactId>taotao-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

4.3.四、taotao-manager-pojo

  • taotao-manager-pojo:是一個Maven模塊工程,打包方式jar。
  • 新建一個Maven 模塊工程,不使用骨架進行建立該工程。過程同下圖。再也不贅述!
  • pom.xml
<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-manager</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>taotao-manager-pojo</artifactId>
</project>

4.3.五、taotao-manager-dao

  • taotao-manager-dao:是一個Maven模塊工程,打包方式jar。
  • 新建一個Maven 模塊工程,不使用骨架進行建立該工程。
  • pom.xml
<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-manager</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>taotao-manager-dao</artifactId>
    <dependencies>
        <!-- 配置對taotao-manager-pojo的依賴 -->
        <dependency>
            <groupId>com.taotao</groupId>
            <artifactId>taotao-manager-pojo</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!-- 配置對mybatis的依賴 -->
        <!-- Mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
        </dependency>
        <!-- mybatis分頁 相關的,暫時沒有用到 -->
        <dependency>
            <groupId>com.github.miemiedev</groupId>
            <artifactId>mybatis-paginator</artifactId>
        </dependency>
        <!-- 分頁插件pagehelper -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
        </dependency>
        <!-- MySql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- 鏈接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
    </dependencies>
</project>

4.3.六、taotao-manager-interface

  • taotao-manager-interface:是一個Maven模塊工程,打包方式jar。
  • 新建一個Maven 模塊工程,不使用骨架進行建立該工程。過程同上圖。再也不贅述!
  • pom.xml
<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-manager</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>taotao-manager-interface</artifactId>
    <dependencies>
        <!-- 配置對taotao-manager-pojo的依賴 -->
        <dependency>
            <groupId>com.taotao</groupId>
            <artifactId>taotao-manager-pojo</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

4.3.七、taotao-manager-service

  • taotao-manager-service:是一個Maven模塊工程,注意:打包方式war
  • 新建一個Maven 模塊工程,不使用骨架進行建立該工程。過程同上圖。再也不贅述!
  • 注意:須要在目錄webapp下補齊所缺的目錄WEB-INF和文件web.xml
  • pom.xml
<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-manager</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>taotao-manager-service</artifactId>
    <packaging>war</packaging>
    <dependencies>
        <!-- 配置對taotao-manager-dao的依賴 -->
        <dependency>
            <groupId>com.taotao</groupId>
            <artifactId>taotao-manager-dao</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!-- 配置對taotao-manager-interface的依賴:服務層發佈服務要經過該接口 -->
        <dependency>
            <groupId>com.taotao</groupId>
            <artifactId>taotao-manager-interface</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!-- 配置對spring的依賴 -->
        <!-- 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>
    </dependencies>
</project>
  • web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 
    version="2.5">

    <display-name>taotao-manager-service</display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <!-- 暫時不須要配置什麼東西 -->
</web-app>

4.3.八、taotao-manager-web

  • taotao-manager-web:是一個Maven工程,注意:打包方式war。須要繼承父工程。
  • 新建一個Maven工程,不使用骨架進行建立該工程。過程同上圖。再也不贅述!
  • 注意:須要在目錄webapp下補齊所缺的目錄WEB-INF和文件web.xml
  • pom.xml
<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>
    <artifactId>taotao-manager-web</artifactId>
    <packaging>war</packaging>
    <dependencies>
        <!-- 配置對taotao-common的依賴-->
        <dependency>
            <groupId>com.taotao</groupId>
            <artifactId>taotao-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!-- 配置對taotao-manager-interface的依賴:表現層調用服務要經過該接口 -->
        <dependency>
            <groupId>com.taotao</groupId>
            <artifactId>taotao-manager-interface</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!-- 配置對spring的依賴 -->
        <!-- 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>
        <!-- JSP相關 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <!-- 文件上傳組件 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
        </dependency>   
    </dependencies>
</project>

web.xmlspring

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 
    version="2.5">

    <display-name>taotao-manager-web</display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <!-- 暫時不須要配置什麼東西 -->
</web-app>

4.四、使用maven的tomcat插件啓動web工程

  • 啓動taotao-manager-web工程。
  • 須要在taotao-manager-web工程的pom中,配置tomcat插件。配置啓動的端口號和工程名稱。
  • 在taotao-manager-web的pom文件中添加以下配置:
  • pom.xml
    <build>
        <plugins>
            <!-- 配置Tomcat插件  -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <configuration>
                    <port>8081</port>
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>
  • 在taotao-manager-web工程的webapp目錄下新建啓動首頁jsp文件index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h1>hello 淘淘商城</h1>
</body>
</html>
  • 先把工程taotao-parent、taotao-common安裝到本地倉庫中。而後再啓動tomcat插件。不然會報以下錯誤:
    • 右鍵項目taotao-parent --> Run As --> Maven install
    • 右鍵項目taotao-common --> Run As --> Maven install
  • 選中工程taotao-manager-web,再啓動tomcat插件:
    • 選中項目右鍵--> Run As --> Maven build… --> 在Goals中輸入:clean tomcat7:run
  • 測試:訪問地址:http://localhost:8081/

4.五、使用maven的tomcat插件啓動聚合工程

  • 因爲聚合工程taotao-manager也是web工程(聚合工程中有web工程),因此它的啓動該是怎樣的呢?
  • 因爲聚合工程taotao-manager沒有表現層,但咱們也打成了一個war包,咱們是該運行聚合工程taotao-manager的總體?仍是運行其中的web工程taotao-manager-service呢?
    • 答:運行他們兩個均可以,可是不建議運行聚合工程中的web工程taotao-manager-service,由於運行該工程須要依賴dao,dao依賴pojo,這些依賴須要先安裝至本地倉庫中,該工程才能夠運行,若是dao更改一下,taotao-manager-service想運行就須要從新安裝至本地倉庫,很麻煩!因此咱們直接運行聚合工程taotao-manager該多好呢!聚合工程taotao-manager知道本身的裏面有什麼模塊,它會把這幾個模塊打成一個war包運行。
  • 那麼下面咱們使用maven的tomcat插件啓動聚合工程:
  • 須要在taotao-manager工程的pom中,配置tomcat插件。配置啓動的端口號和工程名稱。
  • 在聚合工程taotao-manager的pom文件中添加以下配置:
  • pom.xml
    <build>
        <plugins>
            <!-- 配置Tomcat插件  -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <configuration>
                    <port>8080</port>
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>
  • 在taotao-manager-service工程的webapp目錄下新建啓動首頁jsp文件index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h1>hello 淘淘商城</h1>
</body>
</html>
  • 先把工程taotao-parent、taotao-common安裝到本地倉庫中。而後再啓動tomcat插件。
    • 右鍵項目taotao-parent --> Run As --> Maven install
    • 右鍵項目taotao-common --> Run As --> Maven install
  • 選中工程taotao-manager,再啓動tomcat插件:
    • 選中項目右鍵--> Run As --> Maven build… --> 在Goals中輸入:clean tomcat7:run
  • 測試:訪問地址:http://localhost:8080/

五、SVN的使用

5.一、SVN服務端

5.二、SVN客戶端

相關文章
相關標籤/搜索