早期分层——[M - V - C]:
MVC框架强制性的把各层的实现功能划分开,各自处理各自的任务,利于解耦和,极大的增强了代码的可读性、维护性。
- M(Model)模型层——与数据库交互的数据模型,进行数据相关操作
- V(View)视图层——与用户交互的数据区,负责收集展示数据
- C(Controller)控制层——收到请求后,调用模型层与数据库交互获取数据,最后将数据返回给视图层(用户)—— 负责接收数据和逻辑处理
当用户通过浏览器发送请求到视图层(view)时,控制层(controller)分发调用模型层(model),进行数据库查询,(如果查询失败便新建),接下来,模型层(model)再将数据库查询到的数据返回给控制层(controller),控制层(controller)再将其返回给视图层(view),view层通过web页面把数据信息显示给用户。
目前市面上流行的实际分层方式[D - V - C+S]:
-
D(Dao)数据访问层(持久化层)——数据的增删改查,与数据库建立连接;封装了对数据库的curd操作
-
V(View)视图层——与用户交互的数据区
-
C(Controller)控制层——1、接收用户传递过来的数据,将数据封装到实体类中 2、调用业务逻辑层,处理进行业务逻辑的处理 3、根据业务逻辑层返回的结果,进行不同的页面跳转(显示)
-
S(Service)业务逻辑层——做一些业务逻辑地处理,并给控制层返回结果
-
另外,由工具层(util),实体类层(model/po/pojo)(——JavaBean只有私有的成员变量和getter/setter方法),公共层被其他层调用,为其提供服务
【note】最大的变化就是 controller 层划分为了 controller + service 两层 —— 由 c 层控制、负责接收数据和逻辑处理 —> s 层处理逻辑业务 + c 层接收并筛选数据
接下来就大致模拟一个前台买家登陆注册系统,来感受一下MVC分层的优势:
- controller层
1.主要是接收用户传递过来的数据,将数据封装到实体类中
2.调用业务逻辑层,进行业务逻辑的处理
3. 根据业务逻辑层返回的结果,进行不同页面跳转(显示)
import java.util.Scanner;
public class UserController {
UserService us = new UserService();
// GoodsService gs = new GoodsService();
Scanner in = new Scanner(System.in);
public void regist(){
System.out.println("************欢迎进入用户注册模块****************");
//接