Blog

Keep up to date with the latest news

易购网上商城

易购商城的第一天

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

2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

3 4.0.0

4 com.ego

5 ego-parent

6 0.0.1-SNAPSHOT

7 pom

8

9

10 4.12

11 4.1.3.RELEASE

12 3.2.8

13 1.2.2

14 1.2.15

15 5.1.32

16 1.6.4

17 2.4.2

18 1.0.9

19 4.3.5

20 1.2

21 2.5

22 2.0

23 2.5

24 3.3.2

25 1.3.2

26 3.3

27 3.4.2-fix

28 0.9.1

29 1.3.1

30 2.7.2

31 4.10.3

32

33

34

35

36

37

38 joda-time

39 joda-time

40 ${joda-time.version}

41

42

43

44 org.apache.commons

45 commons-lang3

46 ${commons-lang3.version}

47

48

49 org.apache.commons

50 commons-io

51 ${commons-io.version}

52

53

54 commons-net

55 commons-net

56 ${commons-net.version}

57

58

59

60 com.fasterxml.jackson.core

61 jackson-databind

62 ${jackson.version}

63

64

65

66 org.apache.httpcomponents

67 httpclient

68 ${httpclient.version}

69

70

71

72 junit

73 junit

74 ${junit.version}

75 test

76

77

78

79 org.slf4j

80 slf4j-log4j12

81 ${slf4j.version}

82

83

84

85 org.mybatis

86 mybatis

87 ${mybatis.version}

88

89

90 org.mybatis

91 mybatis-spring

92 ${mybatis.spring.version}

93

94

95 com.github.miemiedev

96 mybatis-paginator

97 ${mybatis.paginator.version}

98

99

100 com.github.pagehelper

101 pagehelper

102 ${pagehelper.version}

103

104

105

106 mysql

107 mysql-connector-java

108 ${mysql.version}

109

110

111

112 com.alibaba

113 druid

114 ${druid.version}

115

116

117

118 org.springframework

119 spring-context

120 ${spring.version}

121

122

123 org.springframework

124 spring-beans

125 ${spring.version}

126

127

128 org.springframework

129 spring-webmvc

130 ${spring.version}

131

132

133 org.springframework

134 spring-jdbc

135 ${spring.version}

136

137

138 org.springframework

139 spring-aspects

140 ${spring.version}

141

142

143

144 jstl

145 jstl

146 ${jstl.version}

147

148

149 javax.servlet

150 servlet-api

151 ${servlet-api.version}

152 provided

153

154

155 javax.servlet

156 jsp-api

157 ${jsp-api.version}

158 provided

159

160

161

162 commons-fileupload

163 commons-fileupload

164 ${commons-fileupload.version}

165

166

167

168 redis.clients

169 jedis

170 ${jedis.version}

171

172

173

174 org.apache.solr

175 solr-solrj

176 ${solrj.version}

177

178

179

180

181 ${project.artifactId}

182

183

184

185 org.apache.maven.plugins

186 maven-resources-plugin

187 2.7

188

189 UTF-8

190

191

192

193

194 org.apache.maven.plugins

195 maven-compiler-plugin

196 3.2

197

198 1.7

199 1.7

200 UTF-8

201

202

203

204

205

206

207

208 org.apache.tomcat.maven

209 tomcat7-maven-plugin

210 2.2

211

212

213

214

215

4.4 创建一个common工程

也需要继承ego-parent工程。

4.4.1 创建工程

4.4.2 Pom文件

1

2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

3 4.0.0

4

5 com.ego

6 ego-parent

7 0.0.1-SNAPSHOT

8

9 com.ego

10 ego-common

11 0.0.1-SNAPSHOT

12

13

14

15

16 joda-time

17 joda-time

18

19

20

21 org.apache.commons

22 commons-lang3

23

24

25 org.apache.commons

26 commons-io

27

28

29 commons-net

30 commons-net

31

32

33

34 com.fasterxml.jackson.core

35 jackson-databind

36

37

38

39 org.apache.httpcomponents

40 httpclient

41

42

43

44 junit

45 junit

46

47

48

49 org.slf4j

50 slf4j-log4j12

51

52

53

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

2

3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4 4.0.0

5

6 com.ego

7 ego-parent

8 0.0.1-SNAPSHOT

9

10 ego-manager

11 pom

12

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

2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

3 4.0.0

4

5 com.ego

6 ego-manager

7 0.0.1-SNAPSHOT

8

9 ego-manager-mapper

10

11

12

13 com.ego

14 ego-manager-pojo

15 0.0.1-SNAPSHOT

16

17

18

19 org.mybatis

20 mybatis

21

22

23 org.mybatis

24 mybatis-spring

25

26

27 com.github.miemiedev

28 mybatis-paginator

29

30

31 com.github.pagehelper

32 pagehelper

33

34

35

36 mysql

37 mysql-connector-java

38

39

40

41 com.alibaba

42 druid

43

44

45

4.5.5 Ego-manager-service模块

4.5.5.1 创建工程

4.5.5.2 Pom文件

1

2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

3 4.0.0

4

5 com.ego

6 ego-manager

7 0.0.1-SNAPSHOT

8

9 ego-manager-service

10

11

12

13 com.ego

14 ego-manager-mapper

15 0.0.1-SNAPSHOT

16

17

18

19 org.springframework

20 spring-context

21

22

23 org.springframework

24 spring-beans

25

26

27 org.springframework

28 spring-webmvc

29

30

31 org.springframework

32 spring-jdbc

33

34

35 org.springframework

36 spring-aspects

37

38

39

4.5.6 Ego-manager-web模块

4.5.6.1 创建工程

4.5.6.2 Pom文件

1

2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

3 4.0.0

4

5 com.ego

6 ego-manager

7 0.0.1-SNAPSHOT

8

9 ego-manager-web

10 war

11

12

13

14 com.ego

15 ego-manager-service

16 0.0.1-SNAPSHOT

17

18

19

20 jstl

21 jstl

22

23

24 javax.servlet

25 servlet-api

26 provided

27

28

29 javax.servlet

30 jsp-api

31 provided

32

33

34

35 commons-fileupload

36 commons-fileupload

37

38

39

4.5.6.3 创建web.xml

1

2

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

7

8 index.html

9 index.htm

10 index.jsp

11 default.html

12 default.htm

13 default.jsp

14

15

5 测试maven工程

5.1 运行的工程

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