要讲的内容目录,我做的是简化版笔记。

新手:前提是你先的看一遍教程,后跟着本教程动手。

老手:直接跟着本教程动手。

淘淘商城架构图 淘淘商城电商项目_淘淘商城架构图

背景说一堆,说明下面几点,结论:
1、电商行业很挣钱,找互联网相关的工作。
2、电商行业技术要求很高、高可用、海量数据的存储。

电商行业技术特点:

 技术新、技术范围广、分布式、高并发、集群、负载均衡、高可用、冗余、海量数据、业务复杂、系统安全

视频中教了很多没用的,上面的是重点,且因为有技术特点,程序员们才有事干,有饭可吃。

要做的淘淘网上商城 =》 是一个综合性的B2C平台,类似京东商城、天猫商城。

功能列表

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

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

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

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

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

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

淘淘商城系统架构

淘淘商城架构图 淘淘商城电商项目_淘淘商城架构图_02


工程搭建

Taotao-parent:父工程,打包方式pom,管理jar包的版本号。

 |           项目中所有工程都应该继承父工程。

|--Taotao-common:通用的工具类通用的pojo工程。打包方式jar

|--Taotao-manager:服务层工程。聚合工程。Pom工程

jar

jar

jar

war

|--taotao-manager-web:表现层工程。打包方式war


开发环境:eclipsemars2

Maven:3.3.9

本地仓库:默认位置在~/.m2/repository

Eclipse需要配置maven3.39目录,及setting.xml文件配置指定repository目录。

开始新建项目!


一、taotao-parent    new > mavne  project > pom工程

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.0http://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.11.2</activemq.version>
         <freemarker.version>2.3.23</freemarker.version>
         <quartz.version>2.2.2</quartz.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>
              <!-- 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>
              </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>
              <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>
              <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>
              <plugins>
                   <!-- 配置Tomcat插件 -->
                   <plugin>
                       <groupId>org.apache.tomcat.maven</groupId>
                       <artifactId>tomcat7-maven-plugin</artifactId>
                       <version>2.2</version>
                   </plugin>
              </plugins>
         </pluginManagement>
     </build>
</project>

二、taotao-common   new >maven project

通用的工具类,打包方式jar。需要

继承父工程。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.0http://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>
         <!-- quartz任务调度框架 -->
         <dependency>
              <groupId>org.quartz-scheduler</groupId>
              <artifactId>quartz</artifactId>
         </dependency>
         <!-- 单元测试 -->
         <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
         </dependency>
         <!-- 日志处理 -->
         <dependency>
              <groupId>org.slf4j</groupId>
              <artifactId>slf4j-log4j12</artifactId>
         </dependency>
     </dependencies>
</project>

三、taotao-manager

聚合工程,打包方式pom。它下面有四个子模块,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-manager</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <packaging>pom</packaging>
     <dependencies>
         <dependency>
              <groupId>com.taotao</groupId>
              <artifactId>taotao-common</artifactId>
              <version>0.0.1-SNAPSHOT</version>
         </dependency>
     </dependencies>
</project>

三、1.Taotao-manager-pojo  new > maven module

maven模块,打包方式jar。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-manager</artifactId>
         <version>0.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>taotao-manager-pojo</artifactId>
</project>

三、2.taotao-manager-dao   maven module

Maven模块,打包方式jar。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-manager</artifactId>
          <version>0.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>taotao-manager-dao</artifactId>
     <!-- 依赖的jar包 -->
     <dependencies>
<dependency>
              <groupId>com.taotao</groupId>
              <artifactId>taotao-manager-pojo</artifactId>
              <version>0.0.1-SNAPSHOT</version>
         </dependency>
         <!-- Mybatis -->
         <dependency>
              <groupId>org.mybatis</groupId>
              <artifactId>mybatis</artifactId>
         </dependency>
         <dependency>
              <groupId>org.mybatis</groupId>
              <artifactId>mybatis-spring</artifactId>
         </dependency>
         <dependency>
              <groupId>com.github.miemiedev</groupId>
              <artifactId>mybatis-paginator</artifactId>
         </dependency>
         <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>

三、3.Taotao-manager-interface

maven module

Maven模块,打包方式jar。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-manager</artifactId>
         <version>0.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>taotao-manager-interface</artifactId>
     <dependencies>
         <dependency>
              <groupId>com.taotao</groupId>
              <artifactId>taotao-manager-pojo</artifactId>
              <version>0.0.1-SNAPSHOT</version>
         </dependency>
     </dependencies>
</project>

三、4.taotao-manager-service  maven module

打包方式war包。还要配置置webapp>WEB-INF>web.xml

Project Facets >DynamicWeb Module 3.0 à取消勾选,应用 à再勾选,下角有配置。地址:src/main/webapp

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-manager</artifactId>
         <version>0.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>taotao-manager-service</artifactId>
     <packaging>war</packaging>
     <dependencies>
         <dependency>
              <groupId>com.taotao</groupId>
              <artifactId>taotao-manager-dao</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>

四、Taotao-manager-web  new > maven project

表现层,打包方式war。还要配置置webapp>WEB-INF>web.xml

Project Facets >DynamicWeb Module 3.0 à取消勾选,应用 à再勾选,下角有配置。地址:src/main/webapp

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>
     <artifactId>taotao-manager-web</artifactId>
     <packaging>war</packaging>
     <dependencies>
<!-- 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>
              <version>${jstl.version}</version>
           </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>
     </dependencies>
</project>



上面搭建工程,接下来。


启动工程

taotao-manager,port:8080,   taotao-manager-web,port:8081,

添加tomcat插件,在pom工程中,配置tomcat插件,启动的端口号,和工程名称。

在taotao-manager 和 taotao-manager-web 的pom文件中添加如下配置:

<!-- 配置tomcat插件 -->
     <build>
         <plugins>
              <plugin>
                   <groupId>org.apache.tomcat.maven</groupId>
                   <artifactId>tomcat7-maven-plugin</artifactId>
                   <configuration>
                       <port>8080</port>
                       <path>/</path>  用/的话,就不要在http://www.taobao.com上填项目名了
                   </configuration>
              </plugin>
         </plugins>
     </build>

且在这两个WAR工程中,添加文件。webapp 》添加index.jsp  > hello!

RunAS..>maven build >启动tomcat插件:clean tomcat7:run

启动taotao-manager-web项目,或,taotao-manager

先把taotao-parent、taotao-common安装到本地仓库。然后再启动。

这里可以注意下,taotao-manager是个聚合工程,有四个模块pojo,interface,service,dao

pojo,dao,interface 是jar,service是war。运行service即web工程,必须每次先安装另三个。

所以,直接配置和运行taotao-manager聚合工程,四个模块会自动聚合。




 Svn的使用

服务端

使用VisualSVN,一般一个项目组只有一个svn,并不是每个开发者都需要安装服务端。新建的Repositories,项目有三个文件夹,branches,tags,trunk。

一般将工程放在主干trunk上。


客户端

客户端使用Eclipse的svn插件,在提供的Eclipse中已经安装好,直接使用即可。

上传注,可只上传四项目。taotao-parent,taotao-common,taotao-manager,taotao-manager-web

因为taotao-manager是聚合工程,moulder可以不要上传。

可以假删除,mous模块工程,左聚合工作中,Import…/Existing Mavenprojects

会自动添加进行。

https://{svn服务ip地址}/svn/{仓库名称}/

用户名:user

密码:user

检出注意将taotao-manager的Maven子模块,Import…

及项目转为confifgure/mavenproject

https://PC-201311301552/svn/taotao-javaee25/