【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行

本项目Gitee地址:https://gitee.com/bobokaka/pinyougou
项目依赖资料gitee地址:https://gitee.com/bobokaka/pinyougou-data

1.0 IT行业发展

近年来,IT行业发展趋向互联网化,传统项目(比如桌面应用)目前也就国企等单位有此需求。
互联网化趋向于视频、直播、金融、保险、医疗、房地产等等。

2.0 互联网特点
  • 高并发访问(访问量大)
  • 大数据量
3.0 互联网项目开发架构
    1. 前端页面必须美观、大气、上档次。
    1. 系统必须具有流畅的运行效果——必须对项目进行一系列优化。
    • (1) 数据层优化
      • 1> 数据库集群(主备,读写分离),分表、分库存储(大数据:500w'条即换表),开启索引、缓存,数据库设计优化,sql语句优化。
      • 2> 缓存优化(把频繁读取数据,放入缓存,减轻数据库压力)
      • 3> 搜索优化(使用专业的搜索工具进行搜索:solr等)
    • (2) 项目层优化
      • 1> 必须使用集群
      • 2> 必须使用分布式
      • 3> JVM:tomcat服务器优化
    • (3) 应用层优化
      • 1> 页面缓存
      • 2> 页面静态化
      • 3> nginx负载均衡(用来分发请求)
      • 4> F5负载均衡

主备 nginx负载均衡:实现高可用。


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第1张图片
image.png
4.0 b2bc类型电商项目——品优购。
  1. 把传统的项目拆分成面向服务分布式架构:SOA
  2. ssm框架分布式项目搭建
  3. 分布式项目测试通过
  4. 前端开发组件——angularJS——重前端轻后端——使运行速度更快
  5. 商品列表查询、添加、更新
  6. 商品相关的业务
  7. 首页广告内容加载——redis缓存
  8. 搜索——solr搜索
  9. 同步索引库(activeMQ消息中间件)
  10. 商品详情页静态化
  11. 发短信登录
  12. 单点登录(查收,spring security)
  13. 购物车
  14. 订单
  15. 微信支付
  16. 集群上线部署(zookeeper集群、redis集群、项目集群、solr集群、acitive集群、nginx集群)
  17. 集群
  18. docker容器部署

品优购是一个B2B2C平台,即有商家对商家,也有商家对个人。

采用商家入驻模式,商家入驻平台提交申请,平台进行资质审核、审核通过后,商家拥有独立的管理后台录入商品信息,商品经过平台审核后即可通过。

品优购网上商城主要分为网站前台、运营商后台、商家管理后台三个子系统。

4.1 网站前台

主要包括网站首页、商家首页、商品详细页、、搜索页、会员中心、订单与支付相关页面、
秒杀频道等。


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第2张图片
image.png
4.2 运营商后台

是运营商的运营人员的管理后台。 主要包括商家审核、品牌管理、规格管理、模板管理、
商品分类管理、商品审核、广告类型管理、广告管理、订单查询、商家结算等。


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第3张图片
image.png
4.3 商家管理后台

入驻的商家进行管理的后台,主要功能是对商品的管理以及订单查询统计、资金结算等功能。


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第4张图片
image.png
5.0 系统架构
5.1 什么是SOA架构

SOA是service-Oriented Architecture的首字母简称,面向服务分布式架构。支持面向服务的框架样式。

5.2 什么叫面向服务

service就是服务,web就是服务消费者,web层面向service,即面向服务架构。

5.3 为什么使用SOA架构?

解决并发压力,大数据场景。
能够解决:

    1. 分担服务器压力
    1. 提高项目并发能力
    1. 提高访问速度

传统项目框架:
只有一个war包,所有业务集中一个项目中进行开发。
并发量:(5+-)

初步分布式部署:

    1. 项目和数据库进行拆分分布式
    1. 项目开发采用mvc框架开发
    1. 项目采用分层开发
      并发量:(500+-)

缺点:

    1. 容错性差(不具有高可用性)
    1. 并发量不能满足互联网需求
【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第5张图片
image.png

所以,采用集群分布式部署。

集群方式部署:

    1. 项目采用集群部署
    1. 数据库采用集群部署

优点:

    1. 容错能力提高(具有高可用性)
    1. 并发能力提升

缺点:

    1. 并发能力不能满足需求(10w?)
    1. 请求分发问题。分发给哪个服务器
    1. seession如何共享?
    • (1) tomcat集群session复制功能,把用户的身份信息直接广播给每一个集群服务器。——用户太多,无法实现
    • (2) 第三方服务器,存储session
      使用redis服务器存储用户身份信息。
【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第6张图片
image.png
6.0 实现SOA
6.1 思路
1. 把service拆分成一个单独的项目(war)
2. 把web拆分成一个单独项目(war)

web和service是远程调用关系,这个架构叫做面向服务架构。

6.2 实现远程调用技术
  1. webservice
  2. dubbox(dubbo)——轻量级的服务治理框架
  3. spring cloud——重量级服务治理框架
6.3 采用webservice实现面向服务分布式架构

优点:

  1. 并发能力提升(10w+-)
  2. 分布式项目采用集群部署(高可用性)

缺点:

  1. 网络抖动
  2. 进程繁忙
    以上2种情况都会导致项目性能下降。

解决方案:

  1. 提升带宽(钱钱钱)
  2. 使用dubbox框架
6.4 使用dubbox进行面向服务分布式架构拆分

表现层:web项目(war)
dubbox服务治理中间件

  1. rpc 远程调用hessain2 二进制序列化
  2. nio 异步通讯 netty
    服务层:service项目(war)

zookeep:第三方服务器,注册中心,存储对象。

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第7张图片
image.png

7.0 数据库环境准备

下面开始项目的搭建。
项目搭建可分为3个步骤:

  • 数据库环境
  • 开发搭建zookeeper注册中心
  • 搭建项目结构
表名称 含义
tb_brand 品牌
tb_specification 规格
tb_specification_option 规格选项
tb_type_template 类型模板:用于关联品牌和规格
tb_item_cat 商品分类
tb_seller 商家
tb_goods 商品
tb_goods_desc 商品详情
tb_item 商品明细
tb_content 内容(广告)
tb_content_category 内容(广告)类型
tb_user 用户
tb_order 订单
tb_order_item 订单明细
tb_pay_log 支付日志

首先是数据库环境的准备。


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第8张图片
image.png
【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第9张图片
image.png

数据库sql语句:https://gitee.com/bobokaka/pinyougou-data/blob/master/%E5%BB%BA%E5%BA%93%E8%AF%AD%E5%8F%A5/pinyougoudb.sql

品优购采用当前流行的前后端编程架构。

后端框架采用 Spring +SpringMVC+mybatis +Dubbox。前端采用 angularJS + Bootstrap

8.0 zokepper安装
8.1 下载zookeeper

可参考如下链接:
Zookeeper本地安装配置(入门)https://blog.csdn.net/nangu0673/article/details/82587014
首先,下载一个zookeeper。

现在服务器大都是linux系统,配置安装教程如下:
zookeeper安装文档.docx

8.2 修改配置文件

解压后,进入目录中的conf目录,有一个zoo_sample.cfg文件,将其重命名为zoo.cfg,然后打开,在最后添加

dataDir=D:/acm/zookeeper-3.4.5/data
dataDirLog=D:/acm/zookeeper-3.4.5/log

完整的zoo.cfg文件配置:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=D:/acm/zookeeper-3.4.5
# the port at which the clients will connect
clientPort=2181
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
dataDir=D:/acm/zookeeper-3.4.5/data

dataDirLog=D:/acm/zookeeper-3.4.5/log

将解压后的文件放到想要放的位置


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第10张图片
image.png
8.3 启动zookeeper

进入bin目录双击zkServer.cmd即可开启zookeeper本地服务,当出现如图所示信息时,表示服务开启成功。


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第11张图片
image.png
8.4 配置环境变量

新建系统变量变量名ZOOKEEPER_HOME,变量值D:/acm/zookeeper-3.4.5 【zooleeper安装/解压路径】

在path环境变量中添加 %ZOOKEEPER_HOME%\bin 以及 %ZOOKEEPER_HOME\conf

win+R输入cmd进入命令行窗口,输入zkServer回车,信息如图所示即为配置成功。


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第12张图片
image.png

到此,配置完成。

9.0 项目结构
【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第13张图片
image.png
10.0 新建maven项目
10.1 设置eclipse后面的new菜单

建议参考如下设置:


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第14张图片
image.png

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第15张图片
image.png

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第16张图片
image.png

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第17张图片
image.png

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第18张图片
image.png

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第19张图片
image.png

最后的效果:


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第20张图片
image.png
10.2 新建pyg-parent父项目

新建一个maven project。
本项目所有maven项目创建都跳过框架模板。


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第21张图片
image.png
【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第22张图片
image.png
【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第23张图片
image.png

这里我之前创建了一个项目pyg-html-utils ,后期会创建。此处可以忽略。

10.3 创建pyg-common项目

因为和pyg-parent父项目是继承而不是聚合,使用应该创建一个maven project,如果是聚合关系,就创建maven Module项目。

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第24张图片
image.png

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第25张图片
image.png

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第26张图片
image.png

10.4 同样的步骤创建项目pyg-pojo项目、pyg-dao项目
【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第27张图片
image.png

到此,3个公共工程创建完毕。

10.5 创建后台聚合父工程
image.png
10.6 创建聚合后台的其他工程项目
【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第28张图片
image.png

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第29张图片
image.png

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第30张图片
image.png

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第31张图片
image.png

同理,创建后台服务工程项目


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第32张图片
image.png

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第33张图片
image.png

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第34张图片
image.png

到此,服务层搞定。
10.6 表现层

表现层(web层)调用服务层。
我们用两个表现层项目,一个是商家,一个是运营商。
new一个maven project,创建运营商表现层工程。。


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第35张图片
image.png

同理,创建商家表现层工程。


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第36张图片
image.png

至此,项目结构为(忽略pyg-html-utils):


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第37张图片
image.png
11.0 完善pom.xml

在大型项目中,这一般由产品经理或者项目架构师完成,所以作为一般开发人员只需要复制粘贴即可。

11.1 父项目pyg-parent的pom.xml配置

  4.0.0
  com.pinyougou
  pyg-parent
  0.0.1-SNAPSHOT
  pom
    
  
  
    
    
        4.1
        4.2.4.RELEASE
        4.0.0
        2.5
        2.8.4
        3.4.7
        0.1        
        3.2.8
        1.2.2
        1.2.15
        5.1.48       
        1.0.9
        1.3.1
        2.3.23
        5.11.2
        3.2.3.RELEASE      
        4.10.3
        2012_u6        
    
    
    
          
        
            
            
                org.springframework
                spring-context
                ${spring.version}
            
            
                org.springframework
                spring-beans
                ${spring.version}
            
            
                org.springframework
                spring-webmvc
                ${spring.version}
            
            
                org.springframework
                spring-jdbc
                ${spring.version}
            
            
                org.springframework
                spring-aspects
                ${spring.version}
            
            
                org.springframework
                spring-jms
                ${spring.version}
            
            
                org.springframework
                spring-context-support
                ${spring.version}
            
            
                org.springframework
                spring-test
                ${spring.version}
            
            
            
            
                com.alibaba
                dubbo
                ${dubbo.version}
            
            
                org.apache.zookeeper
                zookeeper
                ${zookeeper.version}
            
            
                com.github.sgroschupf
                zkclient
                ${zkclient.version}
            
            
                junit
                junit
                4.9
            
            
                com.alibaba
                fastjson
                1.2.28
            
            
                javassist
                javassist
                3.11.0.GA
            
            
                commons-codec
                commons-codec
                1.10
            
            
                javax.servlet
                servlet-api
                2.5
                provided
            
            
                com.github.pagehelper
                pagehelper
                ${pagehelper.version}
            

            
            
                org.mybatis
                mybatis
                ${mybatis.version}
            
            
                org.mybatis
                mybatis-spring
                ${mybatis.spring.version}
            
            
                com.github.miemiedev
                mybatis-paginator
                ${mybatis.paginator.version}
               
                
            
            
                mysql
                mysql-connector-java
                ${mysql.version}
            
            
            
            
                com.alibaba
                druid
                ${druid.version}
                   
            
                org.csource.fastdfs
                fastdfs
                1.2
            
            
            
            
                commons-fileupload
                commons-fileupload
                ${commons-fileupload.version}
            
            
            
             
              redis.clients 
              jedis 
              2.8.1 
             
             
              org.springframework.data 
              spring-data-redis 
              1.7.2.RELEASE 
                   
            
                org.freemarker
                freemarker
                ${freemarker.version}
                   
            
                org.apache.activemq
                activemq-all
                ${activemq.version}
            
            
            
            
                org.springframework.security
                spring-security-web
                4.1.0.RELEASE
            
            
                org.springframework.security
                spring-security-config
                4.1.0.RELEASE
                   
            
                com.github.penggle
                kaptcha
                2.3.2
                
                    
                        javax.servlet
                        javax.servlet-api
                    
                
                   
              
                org.springframework.security  
                spring-security-cas  
                4.1.0.RELEASE  
              
              
                org.jasig.cas.client  
                cas-client-core  
                3.3.3
                
                  
                  
                      
                        org.slf4j  
                        log4j-over-slf4j  
                      
                  
            
           
            
            
                org.apache.solr
                solr-solrj
                ${solrj.version}
            
            
        
            com.janeluo
                ikanalyzer
                ${ik.version}
               
            
                org.apache.httpcomponents
                httpcore
                4.4.4
                   
            
                org.apache.httpcomponents
                httpclient
                4.5.3
            
            
                dom4j
                dom4j
                1.6.1
                   
              
                xml-apis  
                xml-apis  
                1.4.01  
                   
         
    
    
    

    
    
        ${project.artifactId}
        
                   
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.2
                
                    1.7
                    1.7
                    UTF-8
                
            

        
        
        
            
            
                
                    org.apache.tomcat.maven
                    tomcat7-maven-plugin
                    2.2
                
            
        
    

11.2 工具类pyg-common的pom文件配置

    4.0.0
    
        com.pinyougou
        pyg-parent
        0.0.1-SNAPSHOT
    

    
    
    pyg-common
    

    
    
        
            junit
            junit
        
        
            com.alibaba
            fastjson
        
        
            javassist
            javassist
        
        
            commons-codec
            commons-codec
        
        
        
            commons-fileupload
            commons-fileupload
        

        
            org.apache.httpcomponents
            httpcore
        
        
            org.apache.httpcomponents
            httpclient
        
        
            dom4j
            dom4j
        
        
            xml-apis
            xml-apis
        
    

update maven后,可以看到依赖包都已经被maven自动导入:


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第38张图片
image.png
11.3 dao层pyg-dao的pom文件配置

/pyg-dao/pom.xml


    4.0.0
    
        com.pinyougou
        pyg-parent
        0.0.1-SNAPSHOT
    
    pyg-dao

    
    
        
        
            org.mybatis
            mybatis
        
        
            org.mybatis
            mybatis-spring
        
        
            com.github.miemiedev
            mybatis-paginator
        
        
        
            com.github.pagehelper
            pagehelper
        
        
        
            mysql
            mysql-connector-java
        

        
        
            com.alibaba
            druid
        
        
        
            com.pinyougou
            pyg-pojo
            0.0.1-SNAPSHOT
        
        
        
            com.pinyougou
            pyg-common
            0.0.1-SNAPSHOT
        
    

11.4 后台管理的聚合父工程pyg-manager的pom.xml配置

pyg-manager工程原则上不需要坐标依赖,但是它的聚合子工程需要。


    4.0.0
    
        com.pinyougou
        pyg-parent
        0.0.1-SNAPSHOT
    
    pyg-manager
    pom
    
        pyg-manager-interface
        pyg-manager-service
    

    

    
        
            com.pinyougou
            pyg-dao
            0.0.1-SNAPSHOT
        
    
    
    
    
    
        
            
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin

                
                
                9000
                
                /
                
            
        
    


10.5 pyg-manager-interface的pom.xml配置

不用配置。
/pyg-manager-interface/pom.xml


  4.0.0
  
    com.pinyougou
    pyg-manager
    0.0.1-SNAPSHOT
  
  pyg-manager-interface

10.6 pyg-manager-service需要管理spring事务,配置pom.xml文件。

/pyg-manager-service/pom.xml


    4.0.0
    
        com.pinyougou
        pyg-manager
        0.0.1-SNAPSHOT
    
    pyg-manager-service
    war

    

    
        
        
            org.springframework
            spring-context
        
        
            org.springframework
            spring-beans
        
        
            org.springframework
            spring-webmvc
        
        
            org.springframework
            spring-jdbc
        
        
            org.springframework
            spring-aspects
        
        
            org.springframework
            spring-jms
        
        
            org.springframework
            spring-context-support
        
        
            org.springframework
            spring-test
        

        
        
            com.alibaba
            dubbo
        
        
            org.apache.zookeeper
            zookeeper
        
        
            com.github.sgroschupf
            zkclient
        
        
        
            com.pinyougou
            pyg-manager-interface
            0.0.1-SNAPSHOT
        
    

    
        
            
                org.apache.maven.plugins
                maven-war-plugin
                2.3
                
                    false
                
            

            
                org.apache.maven.plugins
                maven-war-plugin
                2.3
                
                    false
                
            
        
    

11.7 运营商表现层pyg-manager-web的pom.xml

    4.0.0
    
        com.pinyougou
        pyg-parent
        0.0.1-SNAPSHOT
    
    pyg-manager-web
    war

    
    
        
        
            org.springframework
            spring-context
        
        
            org.springframework
            spring-beans
        
        
            org.springframework
            spring-webmvc
        
        
            org.springframework
            spring-jdbc
        
        
            org.springframework
            spring-aspects
        
        
            org.springframework
            spring-jms
        
        
            org.springframework
            spring-context-support
        
        
            org.springframework
            spring-test
        

        
        
            com.alibaba
            dubbo
        
        
            org.apache.zookeeper
            zookeeper
        
        
            com.github.sgroschupf
            zkclient
        

        
            com.pinyougou
            pyg-manager-interface
            0.0.1-SNAPSHOT
        

        
            javax.servlet
            servlet-api
            provided
        
    


11.8 商家表现层pyg-shop-web的pom.xml配置

商家表现层pyg-shop-web的配置和运营商表现层一模一样。


  4.0.0
  
    com.pinyougou
    pyg-parent
    0.0.1-SNAPSHOT
  
  pyg-shop-web
  war
  
    
    
        
        
            org.springframework
            spring-context
        
        
            org.springframework
            spring-beans
        
        
            org.springframework
            spring-webmvc
        
        
            org.springframework
            spring-jdbc
        
        
            org.springframework
            spring-aspects
        
        
            org.springframework
            spring-jms
        
        
            org.springframework
            spring-context-support
        
        
            org.springframework
            spring-test
        

        
        
            com.alibaba
            dubbo
        
        
            org.apache.zookeeper
            zookeeper
        
        
            com.github.sgroschupf
            zkclient
        

        
            com.pinyougou
            pyg-manager-interface
            0.0.1-SNAPSHOT
        

        
            javax.servlet
            servlet-api
            provided
        
    

12.0 Dao层

从Dao层开始,Dao层主要负责访问数据库。

12.1 添加数据源
【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第39张图片
image.png

/pyg-dao/src/main/resources/prop/db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/pinyougoudb?characterEncoding=utf-8
jdbc.username=root
jdbc.password=bywwcnll57
12.2 mybatis配置文件

/pyg-dao/src/main/resources/config/SqlMapConfig.xml




    
        
        
            
            
        
    

12.3 数据源工厂扫描接口的配置。

/pyg-dao/src/main/resources/spring/applicationContext-dao.xml




    
    
    
    
    
        
        
        
        
        
        
    

    
    
        
        
        
        
            
            
    
    
    
        
    

13.0 逆向工程生成接口

在12.3中

    
    
        
    

接口代理并不存在。我们可以通过反射来实现接口类生成。这时候需要mybatis generator的插件。


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第40张图片
image.png

安装说明:

    1. 把plugins中的所有jar拷贝到eclipse的plugins文件夹之中
    1. 把features中的所有文件夹拷贝到eclipse的features文件夹之中
    1. 重启eclipse,ok

配置好后,重启eclipse。配置逆向工程配置文件/pyg-dao/src/main/resources/generatorConfig.xml


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第41张图片
image.png




    
    


    
        
            
            
        
        
        
        
        
        
        
        
        

        
        
            
        

        
        
            
            
            
            
        
        
        
            
        

        
            
        


        
        

执行‘’蝙蝠“:

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第42张图片
image.png

等待完成,打开pyg-dao,可见:


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第43张图片
image.png

打开pyg-pojo,可见:


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第44张图片
image.png

但是在我们的com.pyg.mapper目录下,只能编译.java的文件,xml配置文件无法编译执行,这时候需要调整一下:

在src/main/resources目录下新建com.pyg.mapper包目录,把xml文件移动到该目录下:


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第45张图片
image.png

这种模式,也满足我们的接口代理开发。

14.0 服务层配置
14.1 service配置文件

pyg-manager-service项目负责管理事务,配置其配置文件:


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第46张图片
image.png

/pyg-manager-service/src/main/resources/spring/applicationContext-service.xml




    
    
    
    
    
    
    
    


14.2 WEB-INF

/pyg-manager-service/src/main/webapp/WEB-INF/web.xml


  
    
    
    
        contextConfigLocation

        classpath*:spring/applicationContext*.xml
    
    
        org.springframework.web.context.ContextLoaderListener
    
    
    

15.0 web工程pyg-manager-web
【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第47张图片
image.png

一些常量保存在application.properties文件中。目前为空。
/pyg-manager-web/src/main/resources/spring/springmvc.xml



    

    
    
        
            
                
                
                    
                        WriteMapNullValue
                        WriteDateUseDateFormat
                    
                
            
        
    

    
    
    
    
    
    
    
    
    


web.xml中配置编码过滤器、加载DispatcherServlet(前端控制器)、springmvc文件。

/pyg-manager-web/src/main/webapp/WEB-INF/web.xml



    
    
        CharacterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            utf-8
        
        
            forceEncoding
            true
        
    
    
        CharacterEncodingFilter
        /*
    

    
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath:spring/springmvc.xml
        
    

    
        
        springmvc
        /
    


16.0 web工程pyg-shop-web

同15.0 配置一样。
/pyg-shop-web/src/main/resources/config/application.properties为空。
/pyg-shop-web/src/main/resources/spring/springmvc.xml



    

    
    
        
            
                
                
                    
                        WriteMapNullValue
                        WriteDateUseDateFormat
                    
                
            
        
    

    
    
    
    
    
    
    
    
    


/pyg-shop-web/src/main/webapp/WEB-INF/web.xml



    
    
        CharacterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            utf-8
        
        
            forceEncoding
            true
        
    
    
        CharacterEncodingFilter
        /*
    

    
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath:spring/springmvc.xml
        
    

    
        
        springmvc
        /
    


17.0 集成测试
17.1 新建一个查询所有品牌的接口
【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第48张图片
image.png

/pyg-manager-interface/src/main/java/com/pyg/manager/service/BrandService.java

package com.pyg.manager.service;

import java.util.List;

import com.pyg.pojo.TbBrand;

/**
 * 查询品牌的接口
 * 
 * @author EdPeng
 *
 */
public interface BrandService {

    /**
     * 查询所有的品牌数据
     */
    public List findAll();

}
17.2 在service项目中实现该接口。
【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第49张图片
image.png

/pyg-manager-service/src/main/java/com/pyg/manager/service/impl/BrandServiceImpl.java

package com.pyg.manager.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.alibaba.dubbo.config.annotation.Service;
import com.pyg.manager.service.BrandService;
import com.pyg.mapper.TbBrandMapper;
import com.pyg.pojo.TbBrand;
import com.pyg.pojo.TbBrandExample;

//必须使用dubbo的@Service才能发布到zookeeper的注册中心里。
@Service
public class BrandServiceImpl implements BrandService{
//  注入mapper接口代理对象
    @Autowired
    private TbBrandMapper brandMapper;

    @Override
    public List findAll() {
        //创建example对象
        TbBrandExample example = new TbBrandExample();
        // 查询所有
        List list = brandMapper.selectByExample(example);
        return list;
    }

}
17.3 编写表现层代码
【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第50张图片
image.png

/pyg-manager-web/src/main/java/com/pyg/manager/controller/BrandController.java

package com.pyg.manager.controller;

import java.util.List;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.dubbo.config.annotation.Reference;
import com.pyg.manager.service.BrandService;
import com.pyg.pojo.TbBrand;

//@RestController是@Controller和@ResponseBody的集合体
@RestController
public class BrandController {

    // 注入远程服务的对象,alibaba.dubbo的注解来实现
    @Reference
    private BrandService brandService;

    // 查询所有品牌数据
    @RequestMapping("/finAll")
    public List findAll() {
        // 调用远程服务对象方法
        List list = brandService.findAll();

        return list;
    }
}

为了执行项目,需要在pyg-manager-web工程中植入tomcat插件,修改pom.xml文件。
/pyg-manager-web/pom.xml


    4.0.0
    
        com.pinyougou
        pyg-parent
        0.0.1-SNAPSHOT
    
    pyg-shop-web
    war

    

        …………

    
    
    
        
            
                org.apache.maven.plugins
                maven-war-plugin
                2.3
                
                    false
                
            

            
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                
                
                    
                    8084
                    
                    /
                
            
        
    

同时也修改好pyg-shop-web项目的pom.xml文件。
/pyg-shop-web/pom.xml


    4.0.0
    
        com.pinyougou
        pyg-parent
        0.0.1-SNAPSHOT
    
    pyg-shop-web
    war

    

        …………

    
    
    
        
            
                org.apache.maven.plugins
                maven-war-plugin
                2.3
                
                    false
                
            

            
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                
                
                    
                    8084
                    
                    /
                
            
        
    

17.4 安装项目

首先是pyg-parent项目安装,没安装找不到包。


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第51张图片
image.png

见下图,安装成功:


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第52张图片
image.png

同样的方法,依次安装pyg-common、pyg-pojo、pyg-dao、pyg-manager、pyg-manager-web
如果没有出现BUILD SUCCESS字样,并提示如下界面:

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第53张图片
image.png

在window-Preferences-Java-Installed JREs中,设置:
【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第54张图片
image.png

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第55张图片
image.png

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第56张图片
image.png

勾选,保存,再一次运行maven install即可。

为了方便调试,载入log4j文件。


【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第57张图片
image.png

/pyg-manager-web/src/main/resources/log4j.properties

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=debug, stdout

开启zookeeper。win+R键,输入cmd,再输入" zkServer "
因为是第一次启动,并且在我们的pyg-manager-web配置了tomcat插件,使用通过如下操作启动该项目。

【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行_第58张图片
image.png

未完待续。
原因:没有服务器。

你可能感兴趣的:(【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行)