ssm(Spring、Springmvc、Mybatis)實戰之淘淘商城-第一天(非原創)

文章大綱

一、課程介紹
二、淘淘商城基本介紹
三、後臺管理系統工程結構與搭建
四、svn代碼管理
五、項目源碼與資料下載
六、參考文章

 

一、課程介紹

1. 課程大綱

一共14天課程
(1)第一天:電商行業的背景。淘淘商城的介紹。搭建項目工程。Svn的使用。
(2)第二天:框架的整合。後臺管理商品列表的實現。分頁插件。
(3)第三天:後臺管理。商品添加。商品類目的選擇、圖片上傳、富文本編輯器的使用。
(4)第四天:商品規格的實現。
(5)第五天:商城前臺系統的搭建。首頁商品分類的展示。Jsonp。
(6)第六天:cms系統的實現。前臺大廣告位的展示。
(7)第七天:cms系統添加緩存。Redis。緩存同步。
(8)第八天:搜索功能的實現。使用solr實現搜索。
(9)第九天:商品詳情頁面的展示。
(10)第十天:單點登錄系統。Session共享。
(11)第十一天:購物車訂單系統的實現。
(12)第十二天:nginx。反向代理工具。
(13)第十三天:redis集羣的搭建、solr集羣的搭建。系統的部署。
(14)項目總結。

2. 今日課程

(1)電商行業的背景。
(2)淘淘商城的介紹。
(3)工程項目的搭建。
(4)svn的使用。

二、淘淘商城基本介紹

1. 電商行業技術特點

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

2. 淘淘商城簡介

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

3. 功能架構

3.1 系統功能圖

 

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

4. 技術架構

4.1 傳統架構

 

思考:有什麼問題?
1、模塊之間耦合度太高,其中一個升級其他都得升級
2、開發困難,各個團隊開發最後都要整合一起
3、系統的擴展性差
4、不能靈活的進行分佈式部署。

4.2 分佈式系統架構

 
 
項目最後架構

分佈式架構:
把系統按照模塊拆分成多個子系統。
優點:
1、把模塊拆分,使用接口通信,降低模塊之間的耦合度。
2、把項目拆分成若干個子項目,不同的團隊負責不同的子項目。
3、增加功能時只需要再增加一個子項目,調用其他系統的接口就可以。
4、可以靈活的進行分佈式部署。

缺點:
系統之間交互需要使用遠程通信,接口開發增加工作量。

5. 項目技術選型

Spring、SpringMVC、Mybatis(重點掌握)
JSP、JSTL、jQuery、jQuery plugin、EasyUI、KindEditor(富文本編輯器)、CSS+DIV(瞭解即可)
Redis(緩存服務器,重點掌握)
Solr(搜索,重點掌握)
httpclient(調用系統服務,重點掌握)
Mysql(重點掌握)
Nginx(web服務器,重點掌握)

6. 開發工具和環境

idea
Maven 3.5
Tomcat 8.5.3
JDK 1.8
Mysql 5.7
Nginx 1.8.0
Redis 3.0.0
Win8 操作系統
SVN(版本管理)

三、後臺管理系統工程結構與搭建

1. Maven基礎

Maven功能包括依賴管理、項目構建、工程聚合。工程類型包括pom、jar、war,具體功能請參考文章:https://www.cnblogs.com/WUXIAOCHANG/p/10784540.html

2. 淘淘商城後臺項目之Maven使用

2.1 pom工程
(1)taotao-parent:
  taotao-parent是整個項目的父工程,它是一個pom工程。用來做整個項目的版本控制,也就是項目中所有要使用到的jar包的版本都集中由父工程管理。這樣你在寫其他工程pom文件中maven依賴時就不需要寫版本號了。當然所有的項目都要先繼承它才行。
(2)taotao-manager:
  創建taotao-manager用來做聚合工程,它也是一個pom工程。創建四個model分別是taotao-manager-pojo,taotao-manager-dao,taotao-manager-service,taotao-manager-web,同時會自動生成4個獨立的maven工程。聚合工程只是用來幫助其他模塊構建的工具,本身並沒有實質的內容。具體每個工程代碼的編寫還是在生成的工程中去寫。
  使用聚合工程taotao-manager的意義就是:原本這些模塊也是一個個獨立的工程,現在將它們聚合到taotao-manager中,這樣我們構建項目的時候就只要構建taotao-manager一個就行了。我們只要使用maven構建這個聚合工程taotao-manager就行了而不用去操心模塊的構建,比如install時只要install taotao-manager就行。總之就是簡化操作。正常的編碼工作還是在對應的taotao-manager-pojo,taotao-manager-dao,taotao-manager-service,taotao-manager-web。工程中進行的。
2.2 war工程
(1)taotao-rest,taotao-portal這些
  這些工程都是要部署在服務器上的,所以要打包成war形式。這些工程有的是用戶通過瀏覽器直接訪問,有的是通過發佈服務被別的工程調用。
2.3 jar工程
(1)taotao-common
  這個就是打包成jar的工程。它就是存放一些其他工程都會使用的類,工具類。我們可以在其他工程的pom文件中去引用它,和引用別的jar包沒什麼區別。

3. Maven搭建後的項目結構

 

4. 代碼實戰

4.1 配置idea的maven地址

 
 

4.2 創建 taotao-parent項目
  taotao-parent項目是整個商場的父項目,用於定義各個maven依賴的版本和配置tomcat插件及jdk版本,不編寫任何實際代碼

 
 
 
 

創建後項目結構如下

 

修改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.wxc</groupId>
    <artifactId>taotao-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <!--1.pom工程:用在父級工程或聚合工程中。用來做jar包的版本控制。
        2.war工程:將會打包成war,發佈在服務器上的工程。如網站或服務。
        3.jar工程:將會打包成jar用作jar包使用。-->
    <packaging>pom</packaging>

    <!-- 集中定義依賴版本號 -->
    <properties>
        <junit.version>4.12</junit.version>
        <spring.version>4.1.3.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>
    </properties>

    <!--只是定義版本,並未添加實際依賴-->
    <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>
            <!-- 單元測試 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章