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</scope> </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> <dependency> <groupId>com.github.miemiedev</groupId> <artifactId>mybatis-paginator</artifactId> <version>${mybatis.paginator.version}</version> </dependency> <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> <!-- 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> </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> <plugins> <!-- 配置Tomcat插件 可以直接使用maven命令啟動項目 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> </plugin> </plugins> </pluginManagement> </build> </project> 

將項目發布到maven本地倉庫

 
 
 

4.3 創建taotao-common項目
  taotao-common項目繼承taotao-parent,用於編寫項目共用的工具類
  項目創建方式與taotao-parent一樣,之后修改pom.xml文件內容如下:

<?xml version="1.0" encoding="UTF-8"?> <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.wxc</groupId> <artifactId>taotao-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>com.wxc</groupId> <artifactId>common</artifactId> <version>1.0-SNAPSHOT</version> </project> 

  與taotao-parent一樣,當開發完成后,需要將項目發布到本地倉庫,用於其他項目進行依賴添加

4.4 創建聚合項目taotao-manager
  taotao-common項目繼承taotao-parent,並且添加taotao-common的jar包依賴,之后進行taotao-pojo、taotao-service、taotao-mapper、taotao-web項目聚合
  項目創建方式與taotao-parent一樣
  新建聚合項目taotao-pojo、taotao-service、taotao-mapper、taotao-web(創建方式一樣,只是項目名稱不一樣)

 
 
 
 

修改taotao-manager的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.wxc</groupId> <artifactId>taotao-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>com.wxc</groupId> <artifactId>taotao-manager</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <dependencies> <!-- 依賴taotao-common工程 --> <dependency> <groupId>com.wxc</groupId> <artifactId>common</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> <modules> <module>taotao-manager-pojo</module> <module>taotao-manager-mapper</module> <module>taotao-manager-service</module> <module>taotao-manager-web</module> <module>taotao-manager-pojo</module> </modules> <build> <plugins> <!-- 配置Tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8080</port> <path>/</path> </configuration> </plugin> </plugins> </build> </project> 

修改taotao-pojo的pom.xml文件內容如下:

<?xml version="1.0" encoding="UTF-8"?> <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"> <parent> <artifactId>taotao-manager</artifactId> <groupId>com.wxc</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>taotao-manager-pojo</artifactId> </project> 

修改taotao-mapper的pom.xml文件內容如下:

<?xml version="1.0" encoding="UTF-8"?> <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"> <parent> <artifactId>taotao-manager</artifactId> <groupId>com.wxc</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>taotao-manager-mapper</artifactId> </project> 

修改taotao-service的pom.xml文件內容如下:

<?xml version="1.0" encoding="UTF-8"?> <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"> <parent> <artifactId>taotao-manager</artifactId> <groupId>com.wxc</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>taotao-manager-service</artifactId> </project> 

修改taotao-web的pom.xml文件內容如下:

<?xml version="1.0" encoding="UTF-8"?> <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"> <parent> <artifactId>taotao-manager</artifactId> <groupId>com.wxc</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>taotao-manager-web</artifactId> <packaging>war</packaging> </project> 

4.5 taotao-manage子模塊依賴關系

 

依賴關系:
web依賴service
service依賴mapper
mapper依賴pojo

4.6 maven啟動項目

 
 
 

溫馨提示:因為該項目暫未配置spring mvc相關內容,因為啟動后暫時無法訪問。

四、svn代碼管理

1. idea添加svn配置

 
 

溫馨提示:圖片中需要配置客戶端的svn所在安裝包的svn.exe文件,如果找不到該文件,說明是在安裝客戶端的時候,選擇了默認安裝,因此可以重裝,之后選擇以下的內容進行安裝即可(將紅X去掉)

 
 
 

填寫svn對應地址和賬號密碼即可。

2. 項目上傳與更新

本人習慣做法是:先將項目在本地磁盤某個位置進行首次上傳或者更新,之后用idea打開項目,之后提交、更新方式如下:

 
 

五、項目源碼與資料下載

鏈接:https://pan.baidu.com/s/1GEaws804XRaQkkii-LUqQQ
提取碼:osvy

六、參考文章

http://yun.itheima.com/course?hm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM