【大型项目-电商平台】1.0|【大型项目-电商平台】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.0 互联网以及电商行业分析、项目搭建及运行
文章图片
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|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 4.2 运营商后台 是运营商的运营人员的管理后台。 主要包括商家审核、品牌管理、规格管理、模板管理、
商品分类管理、商品审核、广告类型管理、广告管理、订单查询、商家结算等。

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 4.3 商家管理后台 入驻的商家进行管理的后台,主要功能是对商品的管理以及订单查询统计、资金结算等功能。

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
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|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
所以,采用集群分布式部署。
集群方式部署:
    1. 项目采用集群部署
    1. 数据库采用集群部署
优点:
    1. 容错能力提高(具有高可用性)
    1. 并发能力提升
缺点:
    1. 并发能力不能满足需求(10w?)
    1. 请求分发问题。分发给哪个服务器
    1. seession如何共享?
    • (1) tomcat集群session复制功能,把用户的身份信息直接广播给每一个集群服务器。——用户太多,无法实现
    • (2) 第三方服务器,存储session
      使用redis服务器存储用户身份信息。
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
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|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
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|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
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/datadataDirLog=D:/acm/zookeeper-3.4.5/log

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

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 8.3 启动zookeeper 进入bin目录双击zkServer.cmd即可开启zookeeper本地服务,当出现如图所示信息时,表示服务开启成功。

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
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|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 到此,配置完成。
9.0 项目结构 【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 10.0 新建maven项目 10.1 设置eclipse后面的new菜单 建议参考如下设置:

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
最后的效果:

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 10.2 新建pyg-parent父项目 新建一个maven project。
本项目所有maven项目创建都跳过框架模板。

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
这里我之前创建了一个项目pyg-html-utils ,后期会创建。此处可以忽略。
10.3 创建pyg-common项目 因为和pyg-parent父项目是继承而不是聚合,使用应该创建一个maven project,如果是聚合关系,就创建maven Module项目。

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
10.4 同样的步骤创建项目pyg-pojo项目、pyg-dao项目 【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 到此,3个公共工程创建完毕。
10.5 创建后台聚合父工程 【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 10.6 创建聚合后台的其他工程项目 【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
同理,创建后台服务工程项目

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
到此,服务层搞定。 10.6 表现层 表现层(web层)调用服务层。
我们用两个表现层项目,一个是商家,一个是运营商。
new一个maven project,创建运营商表现层工程。。

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
同理,创建商家表现层工程。

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 至此,项目结构为(忽略pyg-html-utils):

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 11.0 完善pom.xml 在大型项目中,这一般由产品经理或者项目架构师完成,所以作为一般开发人员只需要复制粘贴即可。
11.1 父项目pyg-parent的pom.xml配置
4.0.0 com.pinyougou pyg-parent 0.0.1-SNAPSHOTpom4.1 4.2.4.RELEASE4.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.0com.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|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 11.3 dao层pyg-dao的pom文件配置 /pyg-dao/pom.xml
4.0.0com.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.0com.pinyougou pyg-parent 0.0.1-SNAPSHOT pyg-managerpom pyg-manager-interface pyg-manager-service com.pinyougou pyg-dao 0.0.1-SNAPSHOT org.apache.tomcat.maven tomcat7-maven-plugin9000/

10.5 pyg-manager-interface的pom.xml配置 不用配置。
/pyg-manager-interface/pom.xml
4.0.0com.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.0com.pinyougou pyg-manager 0.0.1-SNAPSHOT pyg-manager-servicewar 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.0com.pinyougou pyg-parent 0.0.1-SNAPSHOT pyg-manager-webwar 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.0com.pinyougou pyg-parent 0.0.1-SNAPSHOT pyg-shop-webwar 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|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
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|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 安装说明:
    1. 把plugins中的所有jar拷贝到eclipse的plugins文件夹之中
    1. 把features中的所有文件夹拷贝到eclipse的features文件夹之中
    1. 重启eclipse,ok
配置好后,重启eclipse。配置逆向工程配置文件/pyg-dao/src/main/resources/generatorConfig.xml

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

执行‘’蝙蝠“:
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 等待完成,打开pyg-dao,可见:

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
打开pyg-pojo,可见:

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 但是在我们的com.pyg.mapper目录下,只能编译.java的文件,xml配置文件无法编译执行,这时候需要调整一下:
在src/main/resources目录下新建com.pyg.mapper包目录,把xml文件移动到该目录下:

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
这种模式,也满足我们的接口代理开发。
14.0 服务层配置 14.1 service配置文件 pyg-manager-service项目负责管理事务,配置其配置文件:

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
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
contextConfigLocationclasspath*:spring/applicationContext*.xml org.springframework.web.context.ContextLoaderListener

15.0 web工程pyg-manager-web 【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
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 encodingutf-8 forceEncodingtrue CharacterEncodingFilter /* springmvc org.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath: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 encodingutf-8 forceEncodingtrue CharacterEncodingFilter /* springmvc org.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:spring/springmvc.xml springmvc /

17.0 集成测试 17.1 新建一个查询所有品牌的接口 【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
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|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
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|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
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.0com.pinyougou pyg-parent 0.0.1-SNAPSHOT pyg-shop-webwar…………org.apache.maven.plugins maven-war-plugin 2.3 false org.apache.tomcat.maven tomcat7-maven-plugin8084/

同时也修改好pyg-shop-web项目的pom.xml文件。
/pyg-shop-web/pom.xml
4.0.0com.pinyougou pyg-parent 0.0.1-SNAPSHOT pyg-shop-webwar…………org.apache.maven.plugins maven-war-plugin 2.3 false org.apache.tomcat.maven tomcat7-maven-plugin8084/

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

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
见下图,安装成功:

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png 同样的方法,依次安装pyg-common、pyg-pojo、pyg-dao、pyg-manager、pyg-manager-web
如果没有出现BUILD SUCCESS字样,并提示如下界面:

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
在window-Preferences-Java-Installed JREs中,设置:
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
勾选,保存,再一次运行maven install即可。
为了方便调试,载入log4j文件。

【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
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|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行
文章图片
image.png
【【大型项目-电商平台】1.0|【大型项目-电商平台】1.0 互联网以及电商行业分析、项目搭建及运行】未完待续。
原因:没有服务器。

    推荐阅读