• Stars
    star
    156
  • Rank 239,589 (Top 5 %)
  • Language
    JavaScript
  • Created about 8 years ago
  • Updated about 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

大型分布式购物网站-B2C项目,使用SSM框架

taotaoMalls

大型分布式购物网站-B2C项目(持续更新中) ##电商行业模式

  • B2B:企业到企业、商家到商家。例如阿里巴巴。
  • B2C:商家到客户。例如京东、淘宝商城
  • C2C:客户到客户。闲鱼。
  • O2O:线上到线下。美团、饿了么。

在互联网项目中尽可能的减少表的关联查询。

Sku:最小库存量单位。就是商品id,是商品最细粒度的划分,每一个sku都唯一对应一款商品,商品的颜色、配置。

##SSM框架整合 ###dao层

  • 1、配置数据源
  • 2、让spring容器管理SqlSessionFactory,单例存在
  • 3、把mapper的代理对象放到spring容器中。使用扫描包的方式加载mapper的代理对象。

###Service层

  • 1、事务管理
  • 2、需要把service实现类放到spring容器中管理

###表现层

  • 1、配置注解驱动
  • 2、配置视图解析器
  • 3、需要扫描controller

###web.xml

  • 1、spring容器的配置
  • 2、spring前端控制器的配置
  • 3、post乱码过滤器
  • 4、请求拦截

###数据库连接池:

Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。 Druid已经在阿里巴巴部署了超过600个应用,经过多年多生产环境大规模部署的严苛考验。

###配置静态资源映射:

<mvc:resources location="/WEB-INF/js/" mapping="/js/**"/>
<mvc:resources  location="/WEB-INF/css/" mapping="/css/**"/>

子容器可以访问父容器中的对象。

##分页插件pageHelper的使用 该分页插件对逆向工程生成的代码支持不好,不能对有查询条件的查询分页,会抛异常。

#图片保存位置 1、小型网站,传统项目是把图片放到Tomcat工程的image文件夹。

2、当并发增加后,就添加服务器,做tomcat集群。使用负载均衡服务器来决定存放到哪个服务器的image中。当图片传到tomcat1中到tomcat2中查找图片,我们可以将tomcat1和tomcat映射到另一台服务器上,然后做共享。或者在负载均衡中进行处理。

方案1:在负载均衡服务器上做一个session 映射,如果有记录则分发到原服务器上。

方案2:在负载均衡服务器中运行一个精灵线程,预测服务器压力过大时会自动把session转移压力过小的服务器中。

3、做专门的图片服务器。使用一个http服务器,Apache.或者Nginx。使用ftp服务上传图片,vsftpd

##图片服务器的搭建 使用centos7.0

需要把nginx的根目录指向ftp上传文件的目录。

##service层 接收Controller传递过来的参数,一个文件MultiPartFile对象。把文件上传到ftp服务器。生成一个新的文件。

使用map实现,Map中的数据应该包含error。

##Controller 接收页面传递过来的图片。调用service上传到图片服务器。返回结果。 参数:MultiPartFile uploadFile 返回值:返回json数据,应该返回一个pojo,PictureResult对象。

##富文本编辑器 //同步文本框中的商品描述 itemAddEditor.sync();

Service接收商品的pojo,把商品数据写入到tb_item中,返回resultMap

##商品描述的保存 商品信息和商品描述是分开存储的。把商品信息描述保存到tb_item_desc表中。

###规格参数

不同分类的规格参数不同,同一分类的规格项是相同的,值不同。

规格组: 规格项:规格值

同一类规格项的分组是相同的,规格参数个商品相关联。

##实现方案: ###方案1:使用多表来存储 每一类商品有多个分组,每个分组下有多个项,每个商品对应不同的规格参数。

商品分类表:Tb_item_cat

一对多:

商品规格分组表:Tb_item_param_group,外键,商品分类id

商品规格项:外键,商品规格分组id

商品表:

商品规格参数表:外键:商品id,商品规格项id,商品规格值。

SELECT  pg.group_name,pk.param_name,pv.param_value
FROM
	tb_item_param_value pv ,
	tb_item_param_key pk,
	tb_item_param_group pg
WHERE 
item_id=855739
AND pv.param_id=pk.id
AND pg.id=pk.group_id

该方案需要创建多张表来描述这个规格参数的关系,查询时需要复杂的sql来查询。如果规格参数的数据量是商品信息的几十倍的时候,数据量大的社会,查询效率非常低。可扩展性差。

###方案2 使用模板的思路来解决。 1、每一个商品分类对应一个规格参数模板。 每个商品对应一个唯一的规格参数,在添加商品时,可以根据规格参数的模板,生成一个表单。

实现流程:

不需要做多表关联。缺点:复杂的表单和json之间的转换。

创建规格参数模板

#前台 #系统架构分析 前台系统和服务层可以分开,降低了系统的耦合度。开发团队可以分开,提高了开发效率。系统可以分开灵活的进行分布式部署。 服务之间通信使用的接口通信,开发工作量提高。

使用SSM框架。pom文件添加依赖。

Spring、springmvc、jstl、jQuery、httpClient.

*.html:伪静态化,是给搜索引擎用的。

商品分类展示: 首页左侧的一个商品分类。页面做一个ajax请求,请求json数据含分类信息,得到json数据后初始化分类菜单。

###json跨域请求: 处于安全考虑,js设计时不允许跨域。域名不同;域名相同但是端口不同;只有域名相同,端口相同才可以访问。

可以使用jsonp来解决:jsonp,js跨域请求数据是不可以的,但是js跨域请求js脚本是可以的。所以我们可以把数据封装成一个js语句,跨域请求js脚本,可以得到此脚本。得到js脚本之后会立即执行。可以把数据作为参数传递到方法中。

URL_Serv: "http://localhost:8084/category.json"

//使用jsonp来实现跨域请求
    $.getJSONP(this.URL_Serv, category.getDataService);

MappingJacksonValue

More Repositories

1

Elasticsearch-Hbase

elasticsearch+hbase海量数据查询,支持千万数据秒回查询
Java
279
star
2

BookStore

带mysql数据库的网上书店系统,含邮箱注册激活、在线支付、生成订单、增删改查购物车等功能
Java
140
star
3

ECPS

移动电子商城项目,分布式系统架构,SSM框架
Java
41
star
4

BOS

使用SSH框架完成的一个物流管理系统,功能点在README.md文件中有详细介绍!近20个功能点!
Java
33
star
5

wowo

基于MVC模式开发的窝窝团网站源码,使用了JSP+Servlet+Oracle+EasyUI。集成了邮件、在线支付等功能!
Java
19
star
6

SecKill

基于SSM的一个秒杀系统
Java
18
star
7

inote

云笔记项目,大数据项目,Hbase+Redis+Hadoop+Zookeeper
JavaScript
13
star
8

CRM

通过使用SSH整合的一个公司-学员关系管理系统
Java
11
star
9

PayDemo

通过使用使用易宝支付的接口,来实现在线支付功能的案例。
Java
10
star
10

JK

商贸系统,SSM+Oracle
Java
6
star
11

EmailDemo

使用javamail发送邮件,包括文本、图片、附件等形式的邮件案例
Java
6
star
12

mongodbDemo

Spring+SpringMVC+MongoDB案例
Java
5
star
13

CSTS

影院售票系统,SSM小项目
CSS
5
star
14

PySpider

爬虫项目,爬取电影,微信文章,美食,旅游信息等
Python
5
star
15

PythonDemo

python数据采集,获取维基百科词条数据、txt和pdf文档读取等(基础级)
Python
5
star
16

EasyUI

一些常用的EasyUI的常用组件的使用demo。
CSS
3
star
17

HDFS_MapReduce

一个HDFS文件存取范例,其中包含传统的单词统计,还包括了用户上网流量分析系统的代码,包含RPC编程代码
Java
3
star
18

JSXML

使用js解析xml做的一个省市县三级联动,通过使用调用xml文件解析出来,可用于实际生产中。
HTML
2
star
19

StudentManage

通过struts2和hibernate整合的学生信息管理系统。
Java
2
star
20

sogou-framework

自己写的一个JAVA WEB框架,基于smart-framework,逐步实现类加载器、Bean容器、 IOC 框架、MVC 框架
Java
2
star
21

AreaWebService

创建区域查询服务系统,对外发布WebService服务,供客户端调用,根据parentid查询区域信息。客户端向服务端传递xml格式数据,服务端向客户端响应xml格式数据。
Java
2
star
22

ChartDemo

一个基于jsp的网络聊天室
Java
1
star
23

sublime-text

To solve the problem of sublime-text3 can not enter the Chinese
Shell
1
star
24

Shell

This is a shell command window
Java
1
star
25

FiveChess

基于AWT的五子棋,java语言编写!
Java
1
star
26

luceneSearch

使用lucene的一个搜索引擎项目
Java
1
star
27

scrapy_fang

scrapy爬取房天下全国房价信息
Python
1
star
28

MachineDemo

机器学习常用算法
Python
1
star
29

WebWeather-BaseDemo-

基于webService的天气查询案例,基础版,未连接公网的,socket、webservice、wsdl使用过程生成的代码来创建客户端
Java
1
star
30

Blog

博客系统
JavaScript
1
star
31

mini_springv1

手写spring框架--V1版本
Java
1
star
32

Traffic

交通灯管理系统,经典面试题Demo。
Java
1
star
33

movie-microservice

基于spring-cloud构建的电影售票微服务系统
Java
1
star