MVC 开发模式
# 115.MVC 开发模式
本节是一节理论知识,随着后续的实践深入理解。
# JSP 的演变历史
我们先说下 MVC 出现之前的,JSP 演变历史:
- 早期只有 Servlet,只能使用 response 输出标签数据,非常麻烦
- 后来有 JSP,简化了 Servlet 的开发,如果过度使用 JSP(因为 JSP 不用重启,即能写 Java 又能写 HTML),在 JSP 中即写大量的 Java 代码,又写 HTML 代码,可读性差,造成难于维护,难于分工协作。还记得笔者遇到一个项目里,一个 JSP 有几千行的故事吗 (っ °Д °;)っ
- 再后来,Java 的 web 开发,借鉴 mvc 开发模式,将代码有序的组织起来,而不是过度使用 JSP,使得程序的设计更加合理性
- MVC 是一种开发思路,架构模式。而不是设计模式,设计模式通常是解决一些细小的问题。
# MVC
MVC 将程序分为 3 个模块,也就是 M,V 和 C:
- M:Model,模型。通常是 JavaBean,完成具体的业务操作,如:查询数据库,封装对象
- V:View,视图。通常是 JSP,只负责展示数据,不写 Java 代码,怎么展示数据?替换 Java 代码的两个技术:EL 表达式和 JSTL 标签
- C:Controller,控制器,通常是 Servlet。获取用户的输入 → 调用模型 → 将数据交给视图进行展示
有了 MVC 后,项目是这样运行的:
- 浏览器发送一个 HTTP 请求,首先会到控制器 Servlet
- 控制权 Servlet 获取客户端的数据,然后分发请求给具体的模型来处理数据,例如查询数据库,封装对象
- 模型执行具体的业务逻辑,然后返回数据给控制器
- 控制器将数据交给视图 JSP,JSP 转换为具体的 HTML 后返回给浏览器
示意图:
MVC 模式的优点:
- 各司其职,耦合性低,方便维护,可以利于分工协作
- 重用性高
MVC 模式的缺点:使得项目架构变得复杂了一点,对开发人员要求高
# 三层架构
架构层面的概念,它将一个项目分为 3 个层次:
- 界面层(表示层):用户看的界面。用户可以通过界面上的组件和服务器进行交互,然后界面层将数据交给业务逻辑层。
- 业务逻辑层:处理业务逻辑的,是重中之重,需要用到操作数据库的地方则调用数据访问层
- 数据访问层:操作数据,存储文件等
示意图:
一个请求是这样被处理的:请求发到服务器,服务器处理请求,看情况是否需要操作数据库,处理完请求后返回给浏览器;按照分层来分析:
- 一个请求首先是发给 Servlet
- Servlet 去调用业务逻辑层的功能
- 业务逻辑层则调用数据访问层
- 数据访问层返回数据给业务逻辑层
- 业务逻辑层处理完数据,返回结果给界面层
虽然我们也可以直接在 Servlet 层里就直接操作数据库,业务逻辑层有什么用?且听我慢慢道来:
- 数据访问层只定义了最基本的 CRUD 操作,例如查询一条数据(find 方法),更新一条数据(update 方法)
- 业务逻辑层可以组合 DAO 层的一些操作,形成一些常用的功能,例如先查询后更新,假设命名为功能 A;然后还有一个功能 B 是先查询后删除;
- 这样做可以使得 DAO 层的功能非常简单,利于维护和复用
一般来说,我们会将不同层的代码分成不同的包来存储,例如数据访问层在 dao 包下,业务逻辑层在 service 包性爱,界面层在 web 包下。
后续我们会学习 SSM 三大框架,SpringMVC 用来开发界面层,Spring 框架开发业务层,Mybatis 开发数据层
上次更新: 2024/10/1 21:14:36