淘淘商城(第一天)

注:xx商城是培训网站(itcast)出的SSM培训视频,使用的技术还是现在比较靠前的技术~源码会在以后陆续放出~想要源码以及视频的小伙伴可以加本人qq,,272273581  (注:由于本人最近考研,所以不经常看qq,大家想要源码视频的话,可以直接发邮件给我,我看到之后第一时间会把资料分享出去哒~)

或者在下面留言放邮箱,我用空就会把资料发给你们哒~
顺便给个赞也是极好的~


下载地址呀~嫌麻烦的直接加我qq呗嘿嘿嘿点击打开链接

课程计划

一共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、项目总结。


今天的内容:

1、电商行业的背景。

2、淘淘商城的介绍。

3、工程项目的搭建。

4、Svn的使用。


电商行业的模式:

B2B:企业到企业,商家到商家。代表:阿里巴巴、慧聪网。

B2C:商家到客户。代表:京东、淘宝商城(B2B2C)。

C2C:客户到客户。淘宝集市。

O2O:线上到线下。


1.1 功能模块



1.1.1 功能描述

后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。

前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。

会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。

订单系统:提供下单、查询订单、修改订单状态、定时处理订单。

搜索系统:提供商品的搜索功能。

单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。


1.1.1 传统架构

 

 

思考:有什么问题

1、 模块之间耦合度太高,其中一个升级其他都得升级

2、 开发困难,各个团队开发最后都要整合一起

3、 系统的扩展性差

4、 不能灵活的进行分布式部署。

 

解决方法:

优点:

把模块拆分成独立的工程,单点运行。如果某一个点压力大可以对这一个点单独增加配置。其他的点不受影响。

缺点:

系统之间交互需要额外的工作量来进行接口的开发。

 

把系统拆分成多个工程,要完成系统的工程需要多个工程协作完成。这种形式叫做分布式。

 

1.1.2 分布式的架构

 

分布式架构

把系统按照模块拆分成多个子系统。

优点:

1、把模块拆分,使用接口通信,降低模块之间的耦合度。

2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。

3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。

4、可以灵活的进行分布式部署。

 

缺点:

系统之间交互需要使用远程通信,接口开发增加工作量。


1.1.1 技术选型(主要技术

spring、SpringMVC、Mybatis

l JSP、JSTL、jQueryjquery plugin、EasyUI、KindEditor(富文本编辑器)、CSS+DIV

l Redis(缓存服务器)

l Solr(搜索)

l httpclient(调用系统服务)

MySQL

l Nginx(web服务器)

1.1.2 开发工具和环境

Eclipse 4.5.0(Mars),自带maven插件,需要手工安装svn插件。

Maven 3.3.3(开发工具自带)

Tomcat 7.0.53Maven Tomcat Plugin

JDK 1.7

mysql 5.6

Nginx 1.8.0

Redis 3.0.0

Win7 操作系统

SVN(版本管理)

1.1 人员配置

产品经理:3人,确定需求以及给出产品原型图。

项目经理:1人,项目管理。

前端团队:5人,根据产品经理给出的原型制作静态页面。

后端团队:20人,实现产品功能。

测试团队:5人,测试所有的功能。

运维团队:3人,项目的发布以及维护。

 

后台管理系统工程搭建

2.1 Maven

1、依赖管理、jar包、工程之间的依赖。

2、项目构建。实现项目的一步构建。

3、工程聚合、继承、依赖。

 

2.2 Maven的工程类型:

1、war包工程

2、Jar包工程

3、Pom工程。

 

3  父工程的搭建

父工程应该是一个pom工程。在父工程中定义依赖的jar包的版本信息。Maven插件的版本。

3.1 创建maven工程



1.1.1 修改pom文件

<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.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插件 –>

<plugin>

<groupId>org.apache.tomcat.maven</groupId>

<artifactId>tomcat7-maven-plugin</artifactId>

<version>2.2</version>

</plugin>

</plugins>

</pluginManagement>

</build>

</project>

 

3.2创建一个common工程

也需要继承taotao-parent工程。


3.2.1 创建工程


Pom文件

<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-common</artifactId>

<version>0.0.1-SNAPSHOT</version>

<!– jar包的依赖 –>

<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>

<!– 单元测试 –>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<scope>test</scope>

</dependency>

<!– 日志处理 –>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

</dependency>

</dependencies>

</project>

 

1.1 后台管理工程创建

搭建一个聚合工程:

1.1.1 工程结构

传统工程结构:

 

Maven管理的工程结构:

 

不使用maven:工程部署时需要手动复制jar包。完成工程构建。非常繁琐。

使用maven进行工程构建:

使用maven可以实现一步构建。

后台管理系统工程结构:

taotao-parent – 管理依赖jar的版本,全局,公司级别

|–taotao-common  — 通用组件、工具类

|–taotao-manage  – 后台系统

  |–com.taotao.manage.web

  |–com.taotao.manage.service

  |–com.taotao.manage.mapper

  |–com.taotao.manage.pojo

测试maven工程

4.1 运行的工程

要运行工程,需要运行聚合工程也就是taotao-manager


4.1 Tomcat插件

taotao-manager工程的pom文件中添加如下内容:

<build>

<!– 配置插件 –>

<plugins>

<plugin>

<groupId>org.apache.tomcat.maven</groupId>

<artifactId>tomcat7-maven-plugin</artifactId>

<configuration>

<port>8080</port>

<path>/</path>

</configuration>

</plugin>

</plugins>

</build>

 

1.2 启动工程

使用maven命令:

clean tomcat7:run

tomcat7指定使用tomcat7的插件。

 

注意:

1、需要把taotao-parent工程安装到本地仓库。Install

2、需要把taotao-common安装到本地仓库。