网上的淘淘商城项目

淘淘商城
第一天

  1. 课程计划
    第一天:
    1、电商行业的背景。
    2、淘淘商城的系统架构
    a) 功能介绍
    b) 架构讲解
    3、工程搭建-后台工程
    a) 使用maven搭建工程
    b) 使用maven的tomcat插件启动工程
    4、Svn的使用。

第二天:
1、服务中间件dubbo
2、Ssm框架整合。
3、整合测试
4、商品列表查询功能实现。

第三天:
1、商品类目选择
2、图片上传
a) 图片服务器FastDFS
b) 图片上传功能实现
3、富文本编辑器的使用KindEditor
4、商品添加功能完成

第四天:
1、前台系统搭建
2、Cms系统的实现
a) 内容分类管理
b) 内容管理
3、前台内容动态展示

第五天:
1、Redis服务器搭建
2、向业务逻辑中添加缓存。
3、使用redis做缓存
4、缓存同步。
5、Solr服务器安装

第六天:
1、Solrj使用测试
2、把数据库中的数据导入索引库
3、搜索功能的实现

第七天:
1、solr集群搭建
2、使用solrj管理solr集群
3、把搜索功能切换到集群版

第八天:
1、什么是MQ
2、MQ的应用场景
3、ActiveMQ的使用方法。
4、使用消息队列实现商品同步。

第九天:
1、商品详情页面展示,动态展示 jsp + redis
2、使用freemarker实现网页静态化
3、ActiveMq同步生成静态网页

第十天:
1、nginx的安装
2、Nginx配置虚拟机
3、Nginx实现反向代理
4、Nginx实现负载均衡
5、Sso系统工程搭建

第十一天:
1、sso注册功能实现
2、sso登录功能实现
3、通过token获得用户信息
4、Ajax跨域请求(jsonp)

第十二天:
1、购物车实现
2、订单确认页面展示

第十三天:
1、订单系统完成
2、系统部署

第十四天~十六天:
项目实战
项目总结
2. 电商行业背景介绍
近年来,中国的电子商务快速发展,交易额连创新高,电子商务在各领域的应用不断拓展和深化、相关服务业蓬勃发展、支撑体系不断健全完善、创新的动力和能力 不断增强。电子商务正在与实体经济深度融合,进入规模性发展阶段,对经济社会生活的影响不断增大,正成为我国经济发展的新引擎。
中国电子商务研究中心数据显示,截止到2012年底,中国电子商务市场交易规模达7.85万亿人民币,同比增长30.83%。其中,B2B电子商务交易额 达6.25万亿,同比增长27%。而2011年全年,中国电子商务市场交易额达6万亿人民币,同比增长33%,占GDP比重上升到13%;2012年,电 子商务占GDP的比重已经高达15%。预计2013年我国电子商务规模将突破十万亿大关。

009-2015年中国电子商务市场交易规模(万亿元)

2.1. 11.11

结论:
1、电商行业很挣钱,找互联网相关的工作。
2、电商行业技术要求很高、高可用、海量数据的存储。

2.2. 电商行业技术特点
 技术新
 技术范围广
 分布式
 高并发、集群、负载均衡、高可用
 海量数据
 业务复杂
 系统安全

  1. 淘淘商城介绍
    淘淘网上商城是一个综合性的B2C平台,类似京东商城、天猫商城。会员可以在商城浏览商品、下订单,以及参加各种活动。
    管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。
    客服可以在后台管理系统中处理用户的询问以及投诉。

电商模式:
B2B:商家到商家。阿里巴巴,慧聪网、铭万网。
B2C:商家到用户。京东。
C2C:用户到用户。淘宝、闲鱼。
B2B2C:商家到商家到用户。天猫。
O2O:线上到线下。百度外卖、美团、饿了么、浣客洗衣。

  1. 淘淘商城架构
    4.1. 功能列表

后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。
前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。
会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。
订单系统:提供下单、查询订单、修改订单状态、定时处理订单。
搜索系统:提供商品的搜索功能。
单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。

4.2. 系统架构
4.2.1. 传统架构

4.2.2. 1000并发

需要20台服务器做tomcat集群。当tomcat集群中节点数量增加,服务能力先增加后下降。
所以集群中节点数量不能太多,一般也就5个左右。

4.2.3. 10000并发

需要按照功能点把系统拆分,拆分成独立的功能。单独为某一个节点添加服务器。需要系统之间配合才能完成整个业务逻辑。叫做分布式。

分布式架构:多个子系统相互协作才能完成业务流程。系统之间需要进行通信。
集群:同一个工程部署到多台服务器上。
分布式架构:
把系统按照模块拆分成多个子系统。
优点:
1、把模块拆分,使用接口通信,降低模块之间的耦合度。
2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。
3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
4、可以灵活的进行分布式部署。

缺点:
1、系统之间交互需要使用远程通信,接口开发增加工作量。
2、各个模块有一些通用的业务逻辑无法共用。

4.2.4. 基于soa的架构
SOA:Service Oriented Architecture面向服务的架构。也就是把工程拆分成服务层、表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。

4.2.5. 淘淘商城系统架构

  1. 工程搭建
    5.1. 使用maven的好处
    使用maven管理工程。
    Jar包的管理
    工程之间的依赖管理
    自动打包

5.2. 后台工程搭建分析
Maven的常见打包方式:jar、war、pom
Pom工程一般都是父工程,管理jar包的版本、maven插件的版本、统一的依赖管理。聚合工程。

taotao-parent:父工程,打包方式pom,管理jar包的版本号。
| 项目中所有工程都应该继承父工程。
|–taotao-common:通用的工具类通用的pojo。打包方式jar
|–taotao-manager:服务层工程。聚合工程。Pom工程
|–taotao-manager-dao:打包方式jar
|–taotao-manager-pojo:打包方式jar
|–taotao-manager-interface:打包方式jar
|–taotao-manager-service:打包方式:war
|–taotao-manager-web:表现层工程。打包方式war
5.3. 工程搭建
5.3.1. Taotao-parent
Pom工程。

开发环境:eclipse mars
Maven:3.3.9
本地仓库:默认位置在~/.m2/repository
Eclipse不需要配置,只需要把本地仓库放到当前用户目录下的.m2下。

1.1.1.1 Pom文件

4.0.0
com.taotao
taotao-parent
0.0.1-SNAPSHOT
pom


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





joda-time
joda-time
j o d a − t i m e . v e r s i o n &lt; / v e r s i o n &gt; &lt; / d e p e n d e n c y &gt; &lt; ! − − A p a c h e 工 具 组 件 − − &gt; &lt; d e p e n d e n c y &gt; &lt; g r o u p I d &gt; o r g . a p a c h e . c o m m o n s &lt; / g r o u p I d &gt; &lt; a r t i f a c t I d &gt; c o m m o n s − l a n g 3 &lt; / a r t i f a c t I d &gt; &lt; v e r s i o n &gt; {joda-time.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- Apache工具组件 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.commons&lt;/groupId&gt; &lt;artifactId&gt;commons-lang3&lt;/artifactId&gt; &lt;version&gt; jodatime.version</version></dependency><!Apache><dependency><groupId>org.apache.commons</groupId><artifactId>commonslang3</artifactId><version>{commons-lang3.version}


org.apache.commons
commons-io
c o m m o n s − i o . v e r s i o n &lt; / v e r s i o n &gt; &lt; / d e p e n d e n c y &gt; &lt; d e p e n d e n c y &gt; &lt; g r o u p I d &gt; c o m m o n s − n e t &lt; / g r o u p I d &gt; &lt; a r t i f a c t I d &gt; c o m m o n s − n e t &lt; / a r t i f a c t I d &gt; &lt; v e r s i o n &gt; {commons-io.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;commons-net&lt;/groupId&gt; &lt;artifactId&gt;commons-net&lt;/artifactId&gt; &lt;version&gt; commonsio.version</version></dependency><dependency><groupId>commonsnet</groupId><artifactId>commonsnet</artifactId><version>{commons-net.version}



com.fasterxml.jackson.core
jackson-databind
j a c k s o n . v e r s i o n &lt; / v e r s i o n &gt; &lt; / d e p e n d e n c y &gt; &lt; ! − − h t t p c l i e n t − − &gt; &lt; d e p e n d e n c y &gt; &lt; g r o u p I d &gt; o r g . a p a c h e . h t t p c o m p o n e n t s &lt; / g r o u p I d &gt; &lt; a r t i f a c t I d &gt; h t t p c l i e n t &lt; / a r t i f a c t I d &gt; &lt; v e r s i o n &gt; {jackson.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- httpclient --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.httpcomponents&lt;/groupId&gt; &lt;artifactId&gt;httpclient&lt;/artifactId&gt; &lt;version&gt; jackson.version</version></dependency><!httpclient><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>{httpclient.version}



org.quartz-scheduler
quartz
q u a r t z . v e r s i o n &lt; / v e r s i o n &gt; &lt; / d e p e n d e n c y &gt; &lt; ! − − 单 元 测 试 − − &gt; &lt; d e p e n d e n c y &gt; &lt; g r o u p I d &gt; j u n i t &lt; / g r o u p I d &gt; &lt; a r t i f a c t I d &gt; j u n i t &lt; / a r t i f a c t I d &gt; &lt; v e r s i o n &gt; {quartz.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- 单元测试 --&gt; &lt;dependency&gt; &lt;groupId&gt;junit&lt;/groupId&gt; &lt;artifactId&gt;junit&lt;/artifactId&gt; &lt;version&gt; quartz.version</version></dependency><!><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>{junit.version}
test



org.slf4j
slf4j-log4j12
s l f 4 j . v e r s i o n &lt; / v e r s i o n &gt; &lt; / d e p e n d e n c y &gt; &lt; ! − − M y b a t i s − − &gt; &lt; d e p e n d e n c y &gt; &lt; g r o u p I d &gt; o r g . m y b a t i s &lt; / g r o u p I d &gt; &lt; a r t i f a c t I d &gt; m y b a t i s &lt; / a r t i f a c t I d &gt; &lt; v e r s i o n &gt; {slf4j.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- Mybatis --&gt; &lt;dependency&gt; &lt;groupId&gt;org.mybatis&lt;/groupId&gt; &lt;artifactId&gt;mybatis&lt;/artifactId&gt; &lt;version&gt; slf4j.version</version></dependency><!Mybatis><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>{mybatis.version}


org.mybatis
mybatis-spring
m y b a t i s . s p r i n g . v e r s i o n &lt; / v e r s i o n &gt; &lt; / d e p e n d e n c y &gt; &lt; d e p e n d e n c y &gt; &lt; g r o u p I d &gt; c o m . g i t h u b . m i e m i e d e v &lt; / g r o u p I d &gt; &lt; a r t i f a c t I d &gt; m y b a t i s − p a g i n a t o r &lt; / a r t i f a c t I d &gt; &lt; v e r s i o n &gt; {mybatis.spring.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;com.github.miemiedev&lt;/groupId&gt; &lt;artifactId&gt;mybatis-paginator&lt;/artifactId&gt; &lt;version&gt; mybatis.spring.version</version></dependency><dependency><groupId>com.github.miemiedev</groupId><artifactId>mybatispaginator</artifactId><version>{mybatis.paginator.version}


com.github.pagehelper
pagehelper
p a g e h e l p e r . v e r s i o n &lt; / v e r s i o n &gt; &lt; / d e p e n d e n c y &gt; &lt; ! − − M y S q l − − &gt; &lt; d e p e n d e n c y &gt; &lt; g r o u p I d &gt; m y s q l &lt; / g r o u p I d &gt; &lt; a r t i f a c t I d &gt; m y s q l − c o n n e c t o r − j a v a &lt; / a r t i f a c t I d &gt; &lt; v e r s i o n &gt; {pagehelper.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- MySql --&gt; &lt;dependency&gt; &lt;groupId&gt;mysql&lt;/groupId&gt; &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt; &lt;version&gt; pagehelper.version</version></dependency><!MySql><dependency><groupId>mysql</groupId><artifactId>mysqlconnectorjava</artifactId><version>{mysql.version}



com.alibaba
druid
d r u i d . v e r s i o n &lt; / v e r s i o n &gt; &lt; / d e p e n d e n c y &gt; &lt; ! − − S p r i n g − − &gt; &lt; d e p e n d e n c y &gt; &lt; g r o u p I d &gt; o r g . s p r i n g f r a m e w o r k &lt; / g r o u p I d &gt; &lt; a r t i f a c t I d &gt; s p r i n g − c o n t e x t &lt; / a r t i f a c t I d &gt; &lt; v e r s i o n &gt; {druid.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- Spring --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-context&lt;/artifactId&gt; &lt;version&gt; druid.version</version></dependency><!Spring><dependency><groupId>org.springframework</groupId><artifactId>springcontext</artifactId><version>{spring.version}


org.springframework
spring-beans
s p r i n g . v e r s i o n &lt; / v e r s i o n &gt; &lt; / d e p e n d e n c y &gt; &lt; d e p e n d e n c y &gt; &lt; g r o u p I d &gt; o r g . s p r i n g f r a m e w o r k &lt; / g r o u p I d &gt; &lt; a r t i f a c t I d &gt; s p r i n g − w e b m v c &lt; / a r t i f a c t I d &gt; &lt; v e r s i o n &gt; {spring.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-webmvc&lt;/artifactId&gt; &lt;version&gt; spring.version</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>springwebmvc</artifactId><version>{spring.version}


org.springframework
spring-jdbc
s p r i n g . v e r s i o n &lt; / v e r s i o n &gt; &lt; / d e p e n d e n c y &gt; &lt; d e p e n d e n c y &gt; &lt; g r o u p I d &gt; o r g . s p r i n g f r a m e w o r k &lt; / g r o u p I d &gt; &lt; a r t i f a c t I d &gt; s p r i n g − a s p e c t s &lt; / a r t i f a c t I d &gt; &lt; v e r s i o n &gt; {spring.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-aspects&lt;/artifactId&gt; &lt;version&gt; spring.version</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>springaspects</artifactId><version>{spring.version}


org.springframework
spring-jms
s p r i n g . v e r s i o n &lt; / v e r s i o n &gt; &lt; / d e p e n d e n c y &gt; &lt; d e p e n d e n c y &gt; &lt; g r o u p I d &gt; o r g . s p r i n g f r a m e w o r k &lt; / g r o u p I d &gt; &lt; a r t i f a c t I d &gt; s p r i n g − c o n t e x t − s u p p o r t &lt; / a r t i f a c t I d &gt; &lt; v e r s i o n &gt; {spring.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-context-support&lt;/artifactId&gt; &lt;version&gt; spring.version</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>springcontextsupport</artifactId><version>{spring.version}



jstl
jstl
j s t l . v e r s i o n &lt; / v e r s i o n &gt; &lt; / d e p e n d e n c y &gt; &lt; d e p e n d e n c y &gt; &lt; g r o u p I d &gt; j a v a x . s e r v l e t &lt; / g r o u p I d &gt; &lt; a r t i f a c t I d &gt; s e r v l e t − a p i &lt; / a r t i f a c t I d &gt; &lt; v e r s i o n &gt; {jstl.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;javax.servlet&lt;/groupId&gt; &lt;artifactId&gt;servlet-api&lt;/artifactId&gt; &lt;version&gt; jstl.version</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servletapi</artifactId><version>{servlet-api.version}
provided


javax.servlet
jsp-api
j s p − a p i . v e r s i o n &lt; / v e r s i o n &gt; &lt; s c o p e &gt; p r o v i d e d &lt; / s c o p e &gt; &lt; / d e p e n d e n c y &gt; &lt; ! − − 文 件 上 传 组 件 − − &gt; &lt; d e p e n d e n c y &gt; &lt; g r o u p I d &gt; c o m m o n s − f i l e u p l o a d &lt; / g r o u p I d &gt; &lt; a r t i f a c t I d &gt; c o m m o n s − f i l e u p l o a d &lt; / a r t i f a c t I d &gt; &lt; v e r s i o n &gt; {jsp-api.version}&lt;/version&gt; &lt;scope&gt;provided&lt;/scope&gt; &lt;/dependency&gt; &lt;!-- 文件上传组件 --&gt; &lt;dependency&gt; &lt;groupId&gt;commons-fileupload&lt;/groupId&gt; &lt;artifactId&gt;commons-fileupload&lt;/artifactId&gt; &lt;version&gt; jspapi.version</version><scope>provided</scope></dependency><!><dependency><groupId>commonsfileupload</groupId><artifactId>commonsfileupload</artifactId><version>{commons-fileupload.version}



redis.clients
jedis
j e d i s . v e r s i o n &lt; / v e r s i o n &gt; &lt; / d e p e n d e n c y &gt; &lt; ! − − s o l r 客 户 端 − − &gt; &lt; d e p e n d e n c y &gt; &lt; g r o u p I d &gt; o r g . a p a c h e . s o l r &lt; / g r o u p I d &gt; &lt; a r t i f a c t I d &gt; s o l r − s o l r j &lt; / a r t i f a c t I d &gt; &lt; v e r s i o n &gt; {jedis.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- solr客户端 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.solr&lt;/groupId&gt; &lt;artifactId&gt;solr-solrj&lt;/artifactId&gt; &lt;version&gt; jedis.version</version></dependency><!solr><dependency><groupId>org.apache.solr</groupId><artifactId>solrsolrj</artifactId><version>{solrj.version}



com.alibaba
dubbo
d u b b o . v e r s i o n &lt; / v e r s i o n &gt; &lt; / d e p e n d e n c y &gt; &lt; d e p e n d e n c y &gt; &lt; g r o u p I d &gt; o r g . a p a c h e . z o o k e e p e r &lt; / g r o u p I d &gt; &lt; a r t i f a c t I d &gt; z o o k e e p e r &lt; / a r t i f a c t I d &gt; &lt; v e r s i o n &gt; {dubbo.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.zookeeper&lt;/groupId&gt; &lt;artifactId&gt;zookeeper&lt;/artifactId&gt; &lt;version&gt; dubbo.version</version></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>{zookeeper.version}


com.github.sgroschupf
zkclient
z k c l i e n t . v e r s i o n &lt; / v e r s i o n &gt; &lt; / d e p e n d e n c y &gt; &lt; d e p e n d e n c y &gt; &lt; g r o u p I d &gt; o r g . a p a c h e . a c t i v e m q &lt; / g r o u p I d &gt; &lt; a r t i f a c t I d &gt; a c t i v e m q − a l l &lt; / a r t i f a c t I d &gt; &lt; v e r s i o n &gt; {zkclient.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.activemq&lt;/groupId&gt; &lt;artifactId&gt;activemq-all&lt;/artifactId&gt; &lt;version&gt; zkclient.version</version></dependency><dependency><groupId>org.apache.activemq</groupId><artifactId>activemqall</artifactId><version>{activemq.version}


org.freemarker
freemarker
${freemarker.version}

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

5.3.2. Taotao-common
通用的工具类、通用的pojo。打包方式jar。需要继承父工程。

1.1.1.2 Pom文件

4.0.0

com.taotao
taotao-parent
0.0.1-SNAPSHOT

com.taotao
taotao-common
0.0.1-SNAPSHOT




joda-time
joda-time



org.apache.commons
commons-lang3


org.apache.commons
commons-io


commons-net
commons-net



com.fasterxml.jackson.core
jackson-databind



org.apache.httpcomponents
httpclient



org.quartz-scheduler
quartz



junit
junit



org.slf4j
slf4j-log4j12


5.3.3. Taotao-manager
聚合工程。打包方式pom。

1.1.1.3 Pom文件

4.0.0

com.taotao
taotao-parent
0.0.1-SNAPSHOT

com.taotao
taotao-manager
0.0.1-SNAPSHOT
pom


com.taotao
taotao-common
0.0.1-SNAPSHOT


5.3.4. Taotao-manager-pojo
是一个maven模块,打包方式jar。

1.1.1.4 Pom文件

4.0.0

com.taotao
taotao-manager
0.0.1-SNAPSHOT

taotao-manager-pojo

5.3.5. Taotao-manager-dao
Maven模块,打包方式jar。

1.1.1.5 Pom文件

4.0.0

com.taotao
taotao-manager
0.0.1-SNAPSHOT

taotao-manager-dao



com.taotao
taotao-manager-pojo
0.0.1-SNAPSHOT



org.mybatis
mybatis


org.mybatis
mybatis-spring


com.github.miemiedev
mybatis-paginator


com.github.pagehelper
pagehelper



mysql
mysql-connector-java



com.alibaba
druid


5.3.6. Taotao-manager-interface

1.1.1.6 Pom文件

4.0.0

com.taotao
taotao-manager
0.0.1-SNAPSHOT

taotao-manager-interface


com.taotao
taotao-manager-pojo
0.0.1-SNAPSHOT


5.3.7. Taotao-manager-service
打包方式war包。

1.1.1.7 Pom文件

4.0.0

com.taotao
taotao-manager
0.0.1-SNAPSHOT

taotao-manager-service
war


com.taotao
taotao-manager-dao
0.0.1-SNAPSHOT




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



5.3.8. Taotao-manager-web
表现层,打包方式war。

1.1.1.8 Pom文件

4.0.0

com.taotao
taotao-parent
0.0.1-SNAPSHOT

taotao-manager-web
war



jstl
jstl


javax.servlet
servlet-api
provided


javax.servlet
jsp-api
provided


5.4. 启动工程
启动taotao-manager工程。
需要在taotao-manager 的pom工程中,配置tomcat插件。启动的端口号,和工程名称。
在taotao-manager的pom文件中添加如下配置:

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.tomcat.maven</groupId>
			<artifactId>tomcat7-maven-plugin</artifactId>
			<configuration>
				<port>8080</port>
				<path>/</path>
			</configuration>
		</plugin>
	</plugins>
</build>

启动tomcat插件:
clean tomcat7:run
先把taotao-parent、taotao-common安装到本地仓库。然后再启动。

  1. Svn的使用
淘淘商城 第一天 讲师:传智.入云龙 1. 聊聊电商行业 1.1. 电商行业发展     近年来,中国的电子商务快速发展,交易额连创新高,电子商务在各领域的应用不断拓展和深化、相关服务业蓬勃发展、支撑体系不断健全完善、创新的动力和能力 不断增强。电子商务正在与实体经济深度融合,进入规模性发展阶段,对经济社会生活的影响不断增大,正成为我国经济发展的新引擎。     中国电子商务研究中心数据显示,截止到2012年底,中国电子商务市场交易规模达7.85万亿人民币,同比增长30.83%。其中,B2B电子商务交易额 达6.25万亿,同比增长27%。而2011年全年,中国电子商务市场交易额达6万亿人民币,同比增长33%,占GDP比重上升到13%;2012年,电 子商务占GDP的比重已经高达15%。预计2013年我国电子商务规模将突破十万亿大关。      图1.2009-2014年中国电子商务市场交易规模(万亿元) 1.2. 11.11 1.3. 电商行业技术特点 Ø 技术新 Ø 技术范围广 Ø 分布式 Ø 高并发、集群、负载均衡、高可用 Ø 海量数据 Ø 业务复杂 Ø 系统安全 2. 淘淘商城 2.1. 淘淘商城简介 淘淘网上商城是一个综合性的B2C平台,类似京东商城、天猫商城。会员可以在商城浏览商品、下订单,以及参加各种活动。 管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。 客服可以在后台管理系统中处理用户的询问以及投诉。 2.2. 功能架构 2.2.1. 系统功能图 2.2.2. 功能描述 后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。 前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。 会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。 订单系统:提供下单、查询订单、修改订单状态、定时处理订单。 搜索系统:提供商品的搜索功能。 单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。 2.3. 技术架构 2.3.1. 传统架构 思考:有什么问题? 1、 模块之间耦合度太高,其中一个升级其他都得升级 2、 开发困难,各个团队开发最后都要整合一起 3、 系统的扩展性差 4、不能灵活的进行分布式部署。 2.3.2. 分布式系统架构 分布式架构: 把系统按照模块拆分成多个子系统。 优点: 1、把模块拆分,使用接口通信,降低模块之间的耦合度。 2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。 3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。 4、可以灵活的进行分布式部署。 缺点: 系统之间交互需要使用远程通信,接口开发增加工作量。 2.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服务器) 2.4. 开发工具和环境 Eclipse 4.5.0(Mars),自带maven插件,需要手工安装svn插件。 Maven 3.3.3(开发工具自带) Tomcat 7.0.53(Maven Tomcat Plugin) JDK 1.7 Mysql 5.6 Nginx 1.8.0 Redis 3.0.0 Win7 操作系统 SVN(版本管理) 2.5. 人员配置 产品经理:3人,确定需求以及给出产品原型图。 项目经理:1人,项目管理。 前端团队:5人,根据产品经理给出的原型制作静态页面。 后端团队:20人,实现产品功能。 测试团队:5人,测试所有的功能。 运维团队:3人,项目的发布以及维护。 3. 后台管理系统工程结构 3.1. maven管理的好处 1、项目构建。Maven定义了软件开发的整套流程体系,并进行了封装,开发人员只需要指定项目的构建流程,无需针对每个流程编写自己的构建脚本。 2、依赖管理。除了项目构建,Maven最核心的功能是软件包的依赖管理,能够自动分析项目所需要的依赖软件包,并到Maven中心仓库去下载。 A)管理依赖的jar包 B)管理工程之间的依赖关系。 3.2. Maven本地仓库 在当前系统用户的文件夹下。例如当前用户是Administrator那么本地仓库就是在 C:\Users\Administrator\.m2目录下。 只需要用老师提供的.m2覆盖本地的就可以。 Maven插件使用eclipse mars自带maven插件。只需要统一开发环境。 3.3. 依赖管理 传统工程结构: Maven管理的工程结构: 不使用maven:工程部署时需要手动复制jar包。完成工程构建。非常繁琐。 使用maven进行工程构建: 使用maven可以实现一步构建。 3.3.1. 后台管理系统的工程结构 继承: 依赖: 后台管理系统工程结构: taotao-parent -- 管理依赖jar包的版本,全局,公司级别 |--taotao-common  --- 通用组件、工具类 |--taotao-manage  -- 后台系统   |--com.taotao.manage.web   |--com.taotao.manage.service   |--com.taotao.manage.mapper   |--com.taotao.manage.pojo 3.4. 创建taotao-parent 3.4.1. 创建maven工程 3.4.2. 修改pom文件 4.0.0 com.taotao taotao-parent 0.0.1-SNAPSHOT pom <!-- 集中定义依赖版本号 --> 4.12 4.1.3.RELEASE 3.2.8 1.2.2 1.2.15 5.1.32 1.6.4 2.4.2 1.0.9 4.3.5 1.2 2.5 2.0 2.5 3.3.2 1.3.2 3.3 3.4.2-fix 0.9.1 1.3.1 2.7.2 4.10.3 <!-- 时间操作组件 --> joda-time joda-time ${joda-time.version} <!-- Apache工具组件 --> org.apache.commons commons-lang3 ${commons-lang3.version} org.apache.commons commons-io ${commons-io.version} commons-net commons-net ${commons-net.version} <!-- Jackson Json处理工具包 --> com.fasterxml.jackson.core jackson-databind ${jackson.version} <!-- httpclient --> org.apache.httpcomponents httpclient ${httpclient.version} <!-- 单元测试 --> junit junit ${junit.version} test <!-- 日志处理 --> org.slf4j slf4j-log4j12 ${slf4j.version} <!-- Mybatis --> org.mybatis mybatis ${mybatis.version} org.mybatis mybatis-spring ${mybatis.spring.version} com.github.miemiedev mybatis-paginator ${mybatis.paginator.version} com.github.pagehelper pagehelper ${pagehelper.version} <!-- MySql --> mysql mysql-connector-java ${mysql.version} <!-- 连接池 --> com.alibaba druid ${druid.version} <!-- Spring --> 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} <!-- JSP相关 --> jstl jstl ${jstl.version} javax.servlet servlet-api ${servlet-api.version} provided javax.servlet jsp-api ${jsp-api.version} provided <!-- 文件上传组件 --> commons-fileupload commons-fileupload ${commons-fileupload.version} <!-- Redis客户端 --> redis.clients jedis ${jedis.version} <!-- solr客户端 --> org.apache.solr solr-solrj ${solrj.version} ${project.artifactId} <!-- 资源文件拷贝插件 --> org.apache.maven.plugins maven-resources-plugin 2.7 UTF-8 <!-- java编译插件 --> org.apache.maven.plugins maven-compiler-plugin 3.2 1.7 1.7 UTF-8 <!-- 配置Tomcat插件 --> org.apache.tomcat.maven tomcat7-maven-plugin 2.2 3.4.3. 将taotao-parent安装到本地仓库。 3.5. taotao-common 3.5.1. 创建工程 3.5.2. 修改pom文件 修改taotao-common工程的pom文件,在文件中添加对taotao-parent的继承。   4.0.0      com.taotao   taotao-parent   0.0.1-SNAPSHOT      com.taotao   taotao-common   0.0.1-SNAPSHOT 3.5.3. 更新工程 工程点击右键→maven→update Project Configuration 3.6. taotao-manage 3.6.1. 创建taotao-manager 修改pom文件: 3.6.2. taotao-manage-pojo 3.6.3. Taotao-manager-mapper 3.6.4. Taotao-manager-service 3.6.5. Taotao-manager-web   1. 配置工程: 2. Web.xml <?xml version="1.0" encoding="UTF-8"?> taotao-manager index.html index.htm index.jsp default.html default.htm default.jsp 3.6.6. 配置tomcat插件 运行web工程需要添加一个tomcat插件。插件必须添加到taotao-manager工程中。因为taotao-manager是聚合工程。在运行时需要把子工程聚合到一起才能运行。 <!-- 配置Tomcat插件 --> org.apache.tomcat.maven tomcat7-maven-plugin 2.2 8080 / 启动tomcat命令:tomcat7:run 3.6.7. taotao-manage子模块依赖关系 依赖关系: web è service service è mapper mapper è pojo 4. 提交代码到SVN 4.1. 提交代码 注意:提交到SVN的Maven项目,只提交src和pom.xml 4.2. 从SVN检出项目 1、 从trunk检出项目,并且重命名项目名称 2、 转化为maven项目 3、 聚合项目中子项目需要从父工程中【导入】,选择 【已经存在的maven项目】,不能从SVN再次检出子项目
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值