秒杀P1:前后端组成

116 阅读4分钟

服务端(后端)

代码分层,目的:去耦合,方便扩展

三层:视图、业务、数据。部署在服务器上/tomcat

spring框架负责整个服务器各种bean(对象)的管理

视图层:

接收浏览器请求,返回响应数据

用的spring MVC框架:作用于视图层的,MVC三个组件的配合。

model数据组件,viewresolver视图组件,controller控制组件

MVC功能:与前端(浏览器)界面沟通。解析请求参数+返回响应数据。

controller:解析请求(request)中的数据,得到参数。接收业务层返回的数据。

【后续根据参数要查数据,查到数据的计算、合并、处理成最终数据,由业务层办。数据库查询由数据层处理】【业务层再把处理的最终数据,返回给视图层】

model:业务层返回的数据用model对象封装

viewresolver:把controller经model封装后发过来的数据,处理成页面/图片/json返回给前端浏览器。有时候传页面/图片/json

【如果返回的json:需要model】

【如果返回的HTML:需要model+html模板】

模板示例:

html的标记语法,给viewresolver模板引擎用,告诉p中间要填充数据,数据来源于model中用户对象的用户名属性。

image.png

示例结果:

image.png image.png 本项目响应都是json,因为前后端分离不用模板

框架图

image.png

业务层

后续根据参数要查数据,查到数据的计算、合并、处理成最终数据。

数据处理是业务层,数据库查询在数据层】

业务层再把处理的最终数据,返回给视图层

数据(访问)层

mybatis框架

数据库访问、查询

前端

前后端分离,所有静态资源部署在Nginx

静态资源:html,css,js,图片(项目没用到,直接调京东图片)等

前后端通过浏览器交互

输入网址点之后的过程

在浏览器输入网址,点击

浏览器给前端服务器发请求,前端的服务器响应html文件(静态资源,图片文字)给浏览器。

浏览器加载html文件(静态资源)。【此时是访问静态资源】

【下面是获取动态数据】

在加载页面的尾部,快结束时。

通过Ajax技术(一段程序),发送异步请求(页面不用刷新,但我可以发送请求访问后端服务器)

整个后端请求响应过程结束后,返回json给ajax的回档函数callback

回档函数从json中得到数据,渲染到html页面上。

项目前后端分离,部署在不同服务器上,经过浏览器先后两次请求衔接。

第一次请求,访问nginx,获取静态资源,加载到末尾再发起

第二次异步请求,访问动态资源,获取动态数据后,用JS(还是json?)渲染到页面对应位置。

image.png

tips:Nginx负载均衡服务器,也可做web服务器。

代码结构

src源代码

Target是编译后的代码。

Main正式代码

Resources配置文件

Java是Java代码

Application入口类

 

image.png

包:

Common 所有层共用部分代码

(业务异常,错误编码,浏览器返回数据的模板,工具箱)不受spring管理对象,(不重要

 

公共的bean对象。(重要,被广泛复用,要重点维护,受spring管理

 

配置文件:配置类(springboot支持类做配置文件

 

控制层所有东西

数据层访问东西:只有接口,因为用mybatis框架,不用写实现类,自动生成

 

实体包:user表,要有个user对象/表,封装表的数据

 

业务层

 

吧商品和库存方两个表,为了秒杀时改库存的并发操作

 

 

 

 

@controller

@Requestmapping 访问注解的方法或者类的路径

@requestbody 返回值的类型,字符串?

 

Springboot 的xml文件中,引入一个starter-web的包,就可以自动装备各种依赖

 

@repository 让数据访问层xx受容器管理

 

Ioc

 

让数据访问层 DAO

Dao包下Userdao——声明的接口 里面调用user类

Entity包下user——实体类 生命用户类,及内部的属性

再impl包下userdaojdbcimpl——接口的实现类?