天猫商城项目演化(二)

**

表结构设计 数据库设计

**
电子商务网站主要作用就是用户在网站上购买商品这样一个操作所以数据库表设计,看过很多电子商务网站数据库设计基本上相同
天猫商城项目演化(二)_第1张图片
2.表与表关系
1对多关系
(2.0项目分布式数据库当中着重介绍数据库优化问题,在高并发情况下的分布式数据库架构设计,1对多,多对多,多key情况)
3.建表SQL语句

代码实现过程
POM.XML
jar包导入
Junit、mybatis、spring-context、mysql、spring-jdbc、log4j、pageHelper、mevan环境隔离(正在学–其实我一个人开发这东西作用感觉不出来)不过最近部署代码发现有点吊用
后台管理实现过程

后台管理实现过程

1.静态资源导入
2.Jar包导入
3.JSP对应关系以及公用jsp内容(只讲解部分内容)
天猫商城项目演化(二)_第2张图片

首先讲解
引入JSTL
这里写图片描述
引入JS/CSS框架
定义输出框的JS函数(不贴代码)
这里写图片描述
这里写图片描述
删除操作提示
天猫商城项目演化(二)_第3张图片

页头顶部公共页面
这里写图片描述
分页效果
天猫商城项目演化(二)_第4张图片
这里写图片描述

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" isELIgnored="false"%>




–感觉说起来太累了我还是直接把总体架构思路说出来吧
1.普通的MVC架构
天猫商城项目演化(二)_第5张图片
Comparator是排序器,里面封装了所要进行排序的算法
1.按照综合来排序
天猫商城项目演化(二)_第6张图片
2.按照时间来排序(新品)
天猫商城项目演化(二)_第7张图片
3.按照价格来排序
天猫商城项目演化(二)_第8张图片
4.按照评价次数来排序
天猫商城项目演化(二)_第9张图片
5.按销量来排序
天猫商城项目演化(二)_第10张图片
然后是三层(控制层、业务层、逻辑层)
先从实体类介绍吧
天猫商城项目演化(二)_第11张图片
虽然电商好像喜欢叫pojo但我还是喜欢用entity
总共有9个实体类XXExample是排序使用的

Mapper(DAO)里面对应的接口
天猫商城项目演化(二)_第12张图片
对应的service
天猫商城项目演化(二)_第13张图片

控制层(controller)
天猫商城项目演化(二)_第14张图片
拦截器限制访问
这里写图片描述
还有一些包是稀奇古怪—
1.测试数据库连接
2.上传图片保存到image包下
3.4逆向工程生成文件
5.分页算法
6.上传图片
天猫商城项目演化(二)_第15张图片
后面在讲解
我先—介绍整体项目实现思路-0-(0-0)
首先我们访问浏览器输入地址admin_category_list
天猫商城项目演化(二)_第16张图片
tomcat根据web.xml上的配置信息,拦截到了/admin_category_list,并将其交由DispatcherServlet处理
天猫商城项目演化(二)_第17张图片
DispatcherServlet 根据springMVC的配置,将这次请求交由CategoryController类进行处理,所以需要进行这个类的实例化
天猫商城项目演化(二)_第18张图片
在实例化CategoryController的时候,注入CategoryServiceImpl
天猫商城项目演化(二)_第19张图片
CategoryMapper.java
天猫商城项目演化(二)_第20张图片
categoryMapper.xml
天猫商城项目演化(二)_第21张图片
说实话这逆向工程生成的这玩意结构有点高大上0-0不过好用—就行了~(-▲-)丿
根据ApplicationContext.xml中的配置信息,将CategoryMapper和CategoryMapper.xml关联起来了
这里写图片描述
这样就拿到了实例化好了的CategoryController,并调用list方法
在list方法中,访问CategoryService,并获取数据,并把数据放在"cs"上,接着服务端跳转到listCategory.jsp去
天猫商城项目演化(二)_第22张图片
最后在listCategory.jsp 中显示数据
天猫商城项目演化(二)_第23张图片
天猫商城项目演化(二)_第24张图片
分页功能
分页算法
天猫商城项目演化(二)_第25张图片
CategoryMapper.xml项目里面的orderby id desc,之后在和上述一样思路在serviceImpl修改,然后传入controller转发到JSP
天猫商城项目演化(二)_第26张图片
CRUD过程(思路相同一起讲拿一个为例)
天猫商城项目演化(二)_第27张图片
Insert 数据
修改mapper
修改service
Next-- serviceImpl
之后定义文件上传
天猫商城项目演化(二)_第28张图片
还有ImageUtil

最后传入控制层再添加方法add之后把图片生成到Image包里面

大致是这样一个架构Mapper.xml->mapper.java->service接口->serviceImpl->controller控制层

逆向工程自动生成entity、mapper、XML文件过程

除了基本类之外逆向工程还会生成一个新的类XXexample这是一个在排序查询的时候使用的类

之后其他功能
1.属性管理
2.产品管理
3.产品图片管理
4.产品属性值管理
5.用户管理
6.订单管理
嗯~ o( ̄▽ ̄)o我介绍其中一个吧0-0
基本思路
天猫商城项目演化(二)_第29张图片
天猫商城项目演化(二)_第30张图片
除了用逆向工程生成代码之外我们需要添加一个字段,我们再一会编辑功能的时候讲解
天猫商城项目演化(二)_第31张图片
我们为peoperty配置一个CRUD之后impl实现
之后传入控制层controller
天猫商城项目演化(二)_第32张图片

之后是jsp文件,之后查询功能
查询地址admin_property_list映射的是PropertyController的list()方法

  1. 获取分类 cid,和分页对象page
  2. 通过PageHelper设置分页参数
  3. 基于cid,获取当前分类下的属性集合
  4. 通过PageInfo获取属性总数
  5. 把总数设置给分页page对象
  6. 拼接字符串"&cid="+c.getId(),设置给page对象的Param值。 因为属性分页都是基于当前分类下的分页,所以分页的时候需要传递这个cid
  7. 把属性集合设置到 request的 “ps” 属性上
  8. 把分类对象设置到 request的 “c” 属性上。
    8.把分页对象设置到 request的 “page” 对象上
  9. 服务端跳转到admin/listProperty.jsp页面
  10. 在listProperty.jsp页面上使用c:forEach 遍历ps集合,并显示

天猫商城项目演化(二)_第33张图片

增加功能
1.在listProperty.jsp页面提交数据的时候,除了提交属性名称,还会提交cid
2. 在PropertyController通过参数Property 接受注入
3. 通过propertyService保存到数据库
4. 客户端跳转到admin_property_list,并带上参数cid
2.
天猫商城项目演化(二)_第34张图片
编辑功能
1.在PropertyController的edit方法中,根据id获取Property对象
2. 根据properoty对象的cid属性获取Category对象,并把其设置在Property对象的category属性上
3. 把Property对象放在request的 “p” 属性中
3. 服务端跳转到admin/editProperty.jsp
4. 在editProperty.jsp中显示属性名称
5. 在editProperty.jsp中隐式提供id和cid
天猫商城项目演化(二)_第35张图片
2.
3.

接下来我来介绍前台代码
里面对应每一个模块
天猫商城项目演化(二)_第36张图片
1.首页
Home方法
这里写图片描述
第一个列出category下面的项目product
第二个的意思是列出所有的分类的一个集合属性
天猫商城项目演化(二)_第37张图片

新增三个方法来填充category
天猫商城项目演化(二)_第38张图片
然后到controller层把数据发送到jsp
天猫商城项目演化(二)_第39张图片
Home.jsp架构和后台admin差不多由header.jsp、footer.jsp、、top.jsp、homepage.jsp
天猫商城项目演化(二)_第40张图片
里面的homepage.jsp分为
天猫商城项目演化(二)_第41张图片
1.categoryAndcarousel.jsp
天猫商城项目演化(二)_第42张图片
分类和轮播
1.1 categoryMenu.jsp
竖状分类菜单
1.2 productsAsideCategorys.jsp
竖状分类菜单右侧的推荐产品列表
1.3 carousel.jsp
轮播

总体架构
天猫商城项目演化(二)_第43张图片
2.注册功能
首先通过控制层来做服务器跳转跳转到resigter.jsp
天猫商城项目演化(二)_第44张图片
然后跳转到register.jsp
天猫商城项目演化(二)_第45张图片
在simpleSearch.jsp当中完成简单搜索功能
然后到UserService里面添加isExist方法来判断是否存在之后impl实现
控制层
天猫商城项目演化(二)_第46张图片
用ajax来进行异步验证
之后验证通过显示界面registsuccess.jsp
总体架构与首页类似略
3.登录功能
Userservice里面加上一个方法然后在impl里面实现过程
这里写图片描述
由于登录功能和上面注册功能架构类似,jsp里面略过
Forecontroller里面添加login方法
天猫商城项目演化(二)_第47张图片
4.产品页

  1. 单个产品图片集合
    private List productSingleImages;

  2. 详情产品图片集合
    private List productDetailImages;

  3. 销量
    private int saleCount;

  4. 累计评价
    private int reviewCount;
    在评价内添加User user;属性
    然后添加属性方法获取评价
    修改userservice添加
    List list(int pid);

int getCount(int pid);
增加一个类是用户在评论额时候实现匿名评价
天猫商城项目演化(二)_第48张图片
5.模态登录
6.分类页
7.搜索
后续功能不做详细介绍架构算法基本类似基本ssm框架

天猫2.0项目(优化)

前言:大型电商项目演变过程
淘宝架构体系
天猫商城项目演化(二)_第49张图片
一般的电商项目演进过程:一般的单服务架构一个服务器对应一个文件系统和数据库
天猫商城项目演化(二)_第50张图片
由于数据量的增多数据库和文件系统分别放在不同的服务器上面实现分离
天猫商城项目演化(二)_第51张图片
由于流量继续增多我们增加了文件服务器数量
天猫商城项目演化(二)_第52张图片
之后进一步优化我们添加radis缓存机制来加速I/O操作,
Raids同步缓存把20%的数据存储在里面二八原则(电商项目当中的28原则,80%流量在集中访问20%的数据)
天猫商城项目演化(二)_第53张图片

之后我们来进行分布式session(保证服务器内数据同步)
之后我们可以进行数据库分库按照读写分离的方式
天猫商城项目演化(二)_第54张图片

Nignx反向代理服务器加入CDN实现不同地区同步功能,把文件系统改成分布式文件系统
之后当数据量在进一步增大的时候我们需要改变数据库把读写分离数据库改成模块化的数据库product、user、categroy、order这样按照类型分类然后数据量继续增加增加在product1、2、3、4这样分离数据库。
无限容量数据库架构介绍
E-R模型当中有三种对应关系
1:1、1:N、N:N
1:1关系例如用户账号1:1 uid<–>login.name
现在下介绍几个主流的数据库架构还是贴图吧–感觉电脑上打太麻烦
天猫商城项目演化(二)_第55张图片

接下来我来介绍如何在电商项目当中拆分用户数据库架构
1:N关系例如发朋友圈发帖 uid<–>tid1、tid2、tid3
N:N微博之间相互关注uid1、uid2、uid3、uid4、uid5、uid6之间相互关注
1:1关系数据管理架构简单我们不在此多介绍
1:N项目当中Tie2:value–>tid,uid,title,content
需求:发布、修改、查询、删除对应CRUD
其中写入的操作InsertUpdateDelete
读的操作有两种方法根据uid和tid在这两种方法当中uid搜索出来的是多行数据tid搜索出来是单行数据。
天猫商城项目演化(二)_第56张图片
①上面这张图是介绍通过搜索快速读出数据库中帖子的方法
简单介绍一下:
我们到帖子中心去搜索数据–>帖子中心的数据来自于数据库tiedb当中的元数据,我们在在数据当中建立索引服务,由于建立索引会降低数据库性能,所以我们把索引与数据隔离Search检索服务通过ES、sdr等技术栈来实现索引,然后通过MQ日志同步的方式来对数据进行一个校验,保证数据的一致性。
②元数据设计直接贴图0-0打字好难打啊(-_-)||
总结最后一种方法是最好的
接下来我来介绍N:N数据库设计
天猫商城项目演化(二)_第57张图片
天猫商城项目演化(二)_第58张图片
天猫商城项目演化(二)_第59张图片

你可能感兴趣的:(全栈开发,Java,后端框架)