服务端(后端)
代码分层,目的:去耦合,方便扩展
三层:视图、业务、数据。部署在服务器上/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中用户对象的用户名属性。
示例结果:
本项目响应都是json,因为前后端分离不用模板
框架图
业务层
后续根据参数要查数据,查到数据的计算、合并、处理成最终数据。
【数据处理是业务层,数据库查询在数据层】
业务层再把处理的最终数据,返回给视图层
数据(访问)层
mybatis框架
数据库访问、查询
前端
前后端分离,所有静态资源部署在Nginx
静态资源:html,css,js,图片(项目没用到,直接调京东图片)等
前后端通过浏览器交互
输入网址点之后的过程:
在浏览器输入网址,点击
浏览器给前端服务器发请求,前端的服务器响应html文件(静态资源,图片文字)给浏览器。
浏览器加载html文件(静态资源)。【此时是访问静态资源】
【下面是获取动态数据】
在加载页面的尾部,快结束时。
通过Ajax技术(一段程序),发送异步请求(页面不用刷新,但我可以发送请求访问后端服务器)
整个后端请求响应过程结束后,返回json给ajax的回档函数callback
回档函数从json中得到数据,渲染到html页面上。
项目前后端分离,部署在不同服务器上,经过浏览器先后两次请求衔接。
第一次请求,访问nginx,获取静态资源,加载到末尾再发起
第二次异步请求,访问动态资源,获取动态数据后,用JS(还是json?)渲染到页面对应位置。
tips:Nginx负载均衡服务器,也可做web服务器。
代码结构
src源代码
Target是编译后的代码。
Main正式代码
Resources配置文件
Java是Java代码
Application入口类
包:
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——接口的实现类?