zoukankan      html  css  js  c++  java
  • 易购网上商城

    易购商城的第一天

    1   安排计划

    1、电商行业的背景。

    2、易购商城的介绍。

    3、工程项目的搭建。

    2   电商行业介绍

    2.1   电商行业技术特点

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

    3   易购商城

    3.1   易购商城简介

    3.1.1   电商行业的模式:

    B2B:企业对企业。阿里巴巴

    B2C:企业对客户 淘宝,(京东B2B2C) 苏宁易购

    C2C:客户对客户 闲鱼 赶集 友邻

    O2O:线上对线下 百度外卖。美容到家。。。

    3.1.2   易购商城的模式

    易购网上商城是一个综合性的B2C平台,类似京东商城、天猫商城。会员可以在商城浏览商品、下订单,以及参加各种活动。

    管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。

    客服可以在后台管理系统中处理用户的询问以及投诉。

    3.2   功能模块

      

    3.2.1   功能描述

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

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

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

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

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

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

    3.3   技术架构

    3.3.1   传统架构

      

    传统项目架构问题:

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

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

    3、  系统的扩展性差

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

    解决方法:分布式设计

    优点:

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

    缺点:

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

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

    3.3.2   分布式的架构

    分布式架构:

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

    优点:

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

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

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

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

    缺点:

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

    3.3.3   技术选型(主要技术)

    l  Spring、SpringMVC、Mybatis

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

    l  Redis(缓存服务器)

    l  Solr(搜索)

    l  httpclient(调用系统服务)

    l  Mysql

    l  Nginx(web服务器)

    3.3.4   开发工具和环境

    Eclipse 4.5.0(Mars),自带maven插件。

    Maven 3.3.3(开发工具自带)

    Tomcat 7.0.53(Maven Tomcat Plugin)

    JDK 1.7

    Mysql 5.5

    Nginx 1.8.0

    Redis 3.0.0

    Win7 操作系统

    4   后台管理系统工程搭建

    4.1   Maven

    优点:1,依赖注入。

    2,可以使用maven一些插件,tomcat

    3,完成热部署。

    4.2   Maven的工程类型:

    Jar:javaProject

    War:webProject

    Pom:创建maven的逻辑项目。如:parent,使用maven构建聚合项目。

    4.3   父工程的搭建

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

    4.3.1   安装本地仓库

    使用.m2覆盖本地仓库的内容。

    4.3.2   创建maven工程

     

    4.3.3   修改pom文件

      1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      3     <modelVersion>4.0.0</modelVersion>
      4     <groupId>com.ego</groupId>
      5     <artifactId>ego-parent</artifactId>
      6     <version>0.0.1-SNAPSHOT</version>
      7     <packaging>pom</packaging>
      8     <!-- 集中定义依赖版本号 -->
      9     <properties>
     10         <junit.version>4.12</junit.version>
     11         <spring.version>4.1.3.RELEASE</spring.version>
     12         <mybatis.version>3.2.8</mybatis.version>
     13         <mybatis.spring.version>1.2.2</mybatis.spring.version>
     14         <mybatis.paginator.version>1.2.15</mybatis.paginator.version>
     15         <mysql.version>5.1.32</mysql.version>
     16         <slf4j.version>1.6.4</slf4j.version>
     17         <jackson.version>2.4.2</jackson.version>
     18         <druid.version>1.0.9</druid.version>
     19         <httpclient.version>4.3.5</httpclient.version>
     20         <jstl.version>1.2</jstl.version>
     21         <servlet-api.version>2.5</servlet-api.version>
     22         <jsp-api.version>2.0</jsp-api.version>
     23         <joda-time.version>2.5</joda-time.version>
     24         <commons-lang3.version>3.3.2</commons-lang3.version>
     25         <commons-io.version>1.3.2</commons-io.version>
     26         <commons-net.version>3.3</commons-net.version>
     27         <pagehelper.version>3.4.2-fix</pagehelper.version>
     28         <jsqlparser.version>0.9.1</jsqlparser.version>
     29         <commons-fileupload.version>1.3.1</commons-fileupload.version>
     30         <jedis.version>2.7.2</jedis.version>
     31         <solrj.version>4.10.3</solrj.version>
     32     </properties>
     33     <!-- 只定义依赖的版本,并不实际依赖 -->
     34     <dependencyManagement>
     35         <dependencies>
     36             <!-- 时间操作组件 -->
     37             <dependency>
     38                 <groupId>joda-time</groupId>
     39                 <artifactId>joda-time</artifactId>
     40                 <version>${joda-time.version}</version>
     41             </dependency>
     42             <!-- Apache工具组件 -->
     43             <dependency>
     44                 <groupId>org.apache.commons</groupId>
     45                 <artifactId>commons-lang3</artifactId>
     46                 <version>${commons-lang3.version}</version>
     47             </dependency>
     48             <dependency>
     49                 <groupId>org.apache.commons</groupId>
     50                 <artifactId>commons-io</artifactId>
     51                 <version>${commons-io.version}</version>
     52             </dependency>
     53             <dependency>
     54                 <groupId>commons-net</groupId>
     55                 <artifactId>commons-net</artifactId>
     56                 <version>${commons-net.version}</version>
     57             </dependency>
     58             <!-- Jackson Json处理工具包 -->
     59             <dependency>
     60                 <groupId>com.fasterxml.jackson.core</groupId>
     61                 <artifactId>jackson-databind</artifactId>
     62                 <version>${jackson.version}</version>
     63             </dependency>
     64             <!-- httpclient -->
     65             <dependency>
     66                 <groupId>org.apache.httpcomponents</groupId>
     67                 <artifactId>httpclient</artifactId>
     68                 <version>${httpclient.version}</version>
     69             </dependency>
     70             <!-- 单元测试 -->
     71             <dependency>
     72                 <groupId>junit</groupId>
     73                 <artifactId>junit</artifactId>
     74                 <version>${junit.version}</version>
     75                 <scope>test</scope>
     76             </dependency>
     77             <!-- 日志处理 -->
     78             <dependency>
     79                 <groupId>org.slf4j</groupId>
     80                 <artifactId>slf4j-log4j12</artifactId>
     81                 <version>${slf4j.version}</version>
     82             </dependency>
     83             <!-- Mybatis -->
     84             <dependency>
     85                 <groupId>org.mybatis</groupId>
     86                 <artifactId>mybatis</artifactId>
     87                 <version>${mybatis.version}</version>
     88             </dependency>
     89             <dependency>
     90                 <groupId>org.mybatis</groupId>
     91                 <artifactId>mybatis-spring</artifactId>
     92                 <version>${mybatis.spring.version}</version>
     93             </dependency>
     94             <dependency>
     95                 <groupId>com.github.miemiedev</groupId>
     96                 <artifactId>mybatis-paginator</artifactId>
     97                 <version>${mybatis.paginator.version}</version>
     98             </dependency>
     99             <dependency>
    100                 <groupId>com.github.pagehelper</groupId>
    101                 <artifactId>pagehelper</artifactId>
    102                 <version>${pagehelper.version}</version>
    103             </dependency>
    104             <!-- MySql -->
    105             <dependency>
    106                 <groupId>mysql</groupId>
    107                 <artifactId>mysql-connector-java</artifactId>
    108                 <version>${mysql.version}</version>
    109             </dependency>
    110             <!-- 连接池 -->
    111             <dependency>
    112                 <groupId>com.alibaba</groupId>
    113                 <artifactId>druid</artifactId>
    114                 <version>${druid.version}</version>
    115             </dependency>
    116             <!-- Spring -->
    117             <dependency>
    118                 <groupId>org.springframework</groupId>
    119                 <artifactId>spring-context</artifactId>
    120                 <version>${spring.version}</version>
    121             </dependency>
    122             <dependency>
    123                 <groupId>org.springframework</groupId>
    124                 <artifactId>spring-beans</artifactId>
    125                 <version>${spring.version}</version>
    126             </dependency>
    127             <dependency>
    128                 <groupId>org.springframework</groupId>
    129                 <artifactId>spring-webmvc</artifactId>
    130                 <version>${spring.version}</version>
    131             </dependency>
    132             <dependency>
    133                 <groupId>org.springframework</groupId>
    134                 <artifactId>spring-jdbc</artifactId>
    135                 <version>${spring.version}</version>
    136             </dependency>
    137             <dependency>
    138                 <groupId>org.springframework</groupId>
    139                 <artifactId>spring-aspects</artifactId>
    140                 <version>${spring.version}</version>
    141             </dependency>
    142             <!-- JSP相关 -->
    143             <dependency>
    144                 <groupId>jstl</groupId>
    145                 <artifactId>jstl</artifactId>
    146                 <version>${jstl.version}</version>
    147             </dependency>
    148             <dependency>
    149                 <groupId>javax.servlet</groupId>
    150                 <artifactId>servlet-api</artifactId>
    151                 <version>${servlet-api.version}</version>
    152                 <scope>provided</scope>
    153             </dependency>
    154             <dependency>
    155                 <groupId>javax.servlet</groupId>
    156                 <artifactId>jsp-api</artifactId>
    157                 <version>${jsp-api.version}</version>
    158                 <scope>provided</scope>
    159             </dependency>
    160             <!-- 文件上传组件 -->
    161             <dependency>
    162                 <groupId>commons-fileupload</groupId>
    163                 <artifactId>commons-fileupload</artifactId>
    164                 <version>${commons-fileupload.version}</version>
    165             </dependency>
    166             <!-- Redis客户端 -->
    167             <dependency>
    168                 <groupId>redis.clients</groupId>
    169                 <artifactId>jedis</artifactId>
    170                 <version>${jedis.version}</version>
    171             </dependency>
    172             <!-- solr客户端 -->
    173             <dependency>
    174                 <groupId>org.apache.solr</groupId>
    175                 <artifactId>solr-solrj</artifactId>
    176                 <version>${solrj.version}</version>
    177             </dependency>
    178         </dependencies>
    179     </dependencyManagement>
    180     <build>
    181         <finalName>${project.artifactId}</finalName>
    182         <plugins>
    183             <!-- 资源文件拷贝插件 -->
    184             <plugin>
    185                 <groupId>org.apache.maven.plugins</groupId>
    186                 <artifactId>maven-resources-plugin</artifactId>
    187                 <version>2.7</version>
    188                 <configuration>
    189                     <encoding>UTF-8</encoding>
    190                 </configuration>
    191             </plugin>
    192             <!-- java编译插件 -->
    193             <plugin>
    194                 <groupId>org.apache.maven.plugins</groupId>
    195                 <artifactId>maven-compiler-plugin</artifactId>
    196                 <version>3.2</version>
    197                 <configuration>
    198                     <source>1.7</source>
    199                     <target>1.7</target>
    200                     <encoding>UTF-8</encoding>
    201                 </configuration>
    202             </plugin>
    203         </plugins>
    204         <pluginManagement>
    205             <plugins>
    206                 <!-- 配置Tomcat插件 -->
    207                 <plugin>
    208                     <groupId>org.apache.tomcat.maven</groupId>
    209                     <artifactId>tomcat7-maven-plugin</artifactId>
    210                     <version>2.2</version>
    211                 </plugin>
    212             </plugins>
    213         </pluginManagement>
    214     </build>
    215 </project>

    4.4   创建一个common工程

    也需要继承ego-parent工程。

    4.4.1   创建工程

     

     

    4.4.2   Pom文件

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3     <modelVersion>4.0.0</modelVersion>
     4     <parent>
     5         <groupId>com.ego</groupId>
     6         <artifactId>ego-parent</artifactId>
     7         <version>0.0.1-SNAPSHOT</version>
     8     </parent>
     9     <groupId>com.ego</groupId>
    10     <artifactId>ego-common</artifactId>
    11     <version>0.0.1-SNAPSHOT</version>
    12     <!-- jar包的依赖 -->
    13     <dependencies>
    14         <!-- 时间操作组件 -->
    15         <dependency>
    16             <groupId>joda-time</groupId>
    17             <artifactId>joda-time</artifactId>
    18         </dependency>
    19         <!-- Apache工具组件 -->
    20         <dependency>
    21             <groupId>org.apache.commons</groupId>
    22             <artifactId>commons-lang3</artifactId>
    23         </dependency>
    24         <dependency>
    25             <groupId>org.apache.commons</groupId>
    26             <artifactId>commons-io</artifactId>
    27         </dependency>
    28         <dependency>
    29             <groupId>commons-net</groupId>
    30             <artifactId>commons-net</artifactId>
    31         </dependency>
    32         <!-- Jackson Json处理工具包 -->
    33         <dependency>
    34             <groupId>com.fasterxml.jackson.core</groupId>
    35             <artifactId>jackson-databind</artifactId>
    36         </dependency>
    37         <!-- httpclient -->
    38         <dependency>
    39             <groupId>org.apache.httpcomponents</groupId>
    40             <artifactId>httpclient</artifactId>
    41         </dependency>
    42         <!-- 单元测试 -->
    43         <dependency>
    44             <groupId>junit</groupId>
    45             <artifactId>junit</artifactId>
    46         </dependency>
    47         <!-- 日志处理 -->
    48         <dependency>
    49             <groupId>org.slf4j</groupId>
    50             <artifactId>slf4j-log4j12</artifactId>
    51         </dependency>
    52     </dependencies>
    53 </project>

    4.5   后台管理工程创建

    搭建一个聚合工程:

    4.5.1   工程结构

    传统工程结构:

    Project

    |

    |------web

    |------service

    |------dao

    |------pojo

    |------mapper

    |------common

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

    使用maven进行工程构建:

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

    后台管理系统工程结构:

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

    |-- ego -common  --- 通用组件、工具类

    |-- ego -manage  -- 后台系统

      |--com. ego.manage.web

      |--com. ego.manage.service

      |--com. ego.manage.mapper

      |--com. ego.manage.pojo

     

    4.5.2   ego -manager工程

    4.5.2.1         工程搭建

     

    4.5.2.2         修改pom文件
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     4     <modelVersion>4.0.0</modelVersion>
     5     <parent>
     6         <groupId>com.ego</groupId>
     7         <artifactId>ego-parent</artifactId>
     8         <version>0.0.1-SNAPSHOT</version>
     9     </parent>
    10     <artifactId>ego-manager</artifactId>
    11     <packaging>pom</packaging>
    12 </project>

    4.5.3   Ego-manager-pojo模块

    4.5.3.1         创建工程

     

    4.5.3.2         Pom文件

    不需要修改,ego-manager-pojo模块不依赖任何jar包。

    4.5.4   Ego-manager-mapper模块

    4.5.4.1         创建工程

     

    4.5.4.2         Pom文件修改
     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3     <modelVersion>4.0.0</modelVersion>
     4     <parent>
     5         <groupId>com.ego</groupId>
     6         <artifactId>ego-manager</artifactId>
     7         <version>0.0.1-SNAPSHOT</version>
     8     </parent>
     9     <artifactId>ego-manager-mapper</artifactId>
    10     <!-- 依赖管理 -->
    11     <dependencies>
    12         <dependency>
    13             <groupId>com.ego</groupId>
    14             <artifactId>ego-manager-pojo</artifactId>
    15             <version>0.0.1-SNAPSHOT</version>
    16         </dependency>
    17         <!-- Mybatis -->
    18         <dependency>
    19             <groupId>org.mybatis</groupId>
    20             <artifactId>mybatis</artifactId>
    21         </dependency>
    22         <dependency>
    23             <groupId>org.mybatis</groupId>
    24             <artifactId>mybatis-spring</artifactId>
    25         </dependency>
    26         <dependency>
    27             <groupId>com.github.miemiedev</groupId>
    28             <artifactId>mybatis-paginator</artifactId>
    29         </dependency>
    30         <dependency>
    31             <groupId>com.github.pagehelper</groupId>
    32             <artifactId>pagehelper</artifactId>
    33         </dependency>
    34         <!-- MySql -->
    35         <dependency>
    36             <groupId>mysql</groupId>
    37             <artifactId>mysql-connector-java</artifactId>
    38         </dependency>
    39         <!-- 连接池 -->
    40         <dependency>
    41             <groupId>com.alibaba</groupId>
    42             <artifactId>druid</artifactId>
    43         </dependency>
    44     </dependencies>
    45 </project>

    4.5.5   Ego-manager-service模块

    4.5.5.1         创建工程

     

    4.5.5.2         Pom文件
     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3     <modelVersion>4.0.0</modelVersion>
     4     <parent>
     5         <groupId>com.ego</groupId>
     6         <artifactId>ego-manager</artifactId>
     7         <version>0.0.1-SNAPSHOT</version>
     8     </parent>
     9     <artifactId>ego-manager-service</artifactId>
    10     <!-- 依赖管理 -->
    11     <dependencies>
    12         <dependency>
    13             <groupId>com.ego</groupId>
    14             <artifactId>ego-manager-mapper</artifactId>
    15             <version>0.0.1-SNAPSHOT</version>
    16         </dependency>
    17         <!-- Spring -->
    18         <dependency>
    19             <groupId>org.springframework</groupId>
    20             <artifactId>spring-context</artifactId>
    21         </dependency>
    22         <dependency>
    23             <groupId>org.springframework</groupId>
    24             <artifactId>spring-beans</artifactId>
    25         </dependency>
    26         <dependency>
    27             <groupId>org.springframework</groupId>
    28             <artifactId>spring-webmvc</artifactId>
    29         </dependency>
    30         <dependency>
    31             <groupId>org.springframework</groupId>
    32             <artifactId>spring-jdbc</artifactId>
    33         </dependency>
    34         <dependency>
    35             <groupId>org.springframework</groupId>
    36             <artifactId>spring-aspects</artifactId>
    37         </dependency>
    38     </dependencies>
    39 </project>

    4.5.6   Ego-manager-web模块

    4.5.6.1         创建工程

     

    4.5.6.2         Pom文件
     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3     <modelVersion>4.0.0</modelVersion>
     4     <parent>
     5         <groupId>com.ego</groupId>
     6         <artifactId>ego-manager</artifactId>
     7         <version>0.0.1-SNAPSHOT</version>
     8     </parent>
     9     <artifactId>ego-manager-web</artifactId>
    10     <packaging>war</packaging>
    11     <!-- 依赖管理 -->
    12     <dependencies>
    13         <dependency>
    14             <groupId>com.ego</groupId>
    15             <artifactId>ego-manager-service</artifactId>
    16             <version>0.0.1-SNAPSHOT</version>
    17         </dependency>
    18         <!-- JSP相关 -->
    19         <dependency>
    20             <groupId>jstl</groupId>
    21             <artifactId>jstl</artifactId>
    22         </dependency>
    23         <dependency>
    24             <groupId>javax.servlet</groupId>
    25             <artifactId>servlet-api</artifactId>
    26             <scope>provided</scope>
    27         </dependency>
    28         <dependency>
    29             <groupId>javax.servlet</groupId>
    30             <artifactId>jsp-api</artifactId>
    31             <scope>provided</scope>
    32         </dependency>
    33         <!-- 文件上传组件 -->
    34         <dependency>
    35             <groupId>commons-fileupload</groupId>
    36             <artifactId>commons-fileupload</artifactId>
    37         </dependency>
    38     </dependencies>
    39 </project>
    4.5.6.3         创建web.xml
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     5     id="ego" version="2.5">
     6     <display-name>ego-manager</display-name>
     7     <welcome-file-list>
     8         <welcome-file>index.html</welcome-file>
     9         <welcome-file>index.htm</welcome-file>
    10         <welcome-file>index.jsp</welcome-file>
    11         <welcome-file>default.html</welcome-file>
    12         <welcome-file>default.htm</welcome-file>
    13         <welcome-file>default.jsp</welcome-file>
    14     </welcome-file-list>
    15 </web-app>

    5   测试maven工程

    5.1   运行的工程

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

     

     

     

  • 相关阅读:
    Vue.js 样式绑定
    Vue.js 监听属性
    【BZOJ2438】[中山市选2011]杀人游戏 Tarjan
    【BZOJ2150】部落战争 最小流
    【BZOJ4247】挂饰 背包
    【BZOJ2794】[Poi2012]Cloakroom 离线+背包
    【BZOJ1731】[Usaco2005 dec]Layout 排队布局 差分约束
    【BZOJ1058】[ZJOI2007]报表统计 STL
    【BZOJ1449/2895】[JSOI2009]球队收益/球队预算 最小费用最大流
    【BZOJ1280】Emmy卖猪pigs 最大流
  • 原文地址:https://www.cnblogs.com/guanghe/p/6371835.html
Copyright © 2011-2022 走看看