官网文档地址:Web on Servlet Stack
MVC是
MVC分别代指什么
M(Model)数据模型层:负责格式化数据并把它们呈现给用户,包括数据展示、用户交互、数据验证、界面设计等功能。
V(View)视图层:负责格式化数据并把它们呈现给用户,包括数据展示、用户交互、数据验证、界面设计等功能。
C(Controller)控制层:负责接收并转发请求,对请求进行处理后,指定视图并将响应结果发送给客户端。
使用 MVC 的目的是将 M 和 V 的实现代码分离,使同一个程序可以有不同的表现形式。其中,View 的定义比较清晰易理解,就是用户界面。
在一个web项目中,用户发送一个请求,相当于(View)视图层对服务器做了一次url操作,(Controller)控制层负责前后端的交互工作,解析请求内容,处理数据的业务逻辑,最后返回处理结果给(View)视图层,而交互数据的信息就使用(Model)数据模型层来存储。
控制层负责前台与后台的交互,数据模型层封装用户的输入/输出数据,视图层选择恰当的视图来显示最终的执行结果,像这样的层次分明的软件开发和处理流程被称为 MVC 模式。可以类比使用 Servlet 和 JSP 开发,JavaBean 相当于 Model,Servlet 相当于 Controller,JSP 相当于 View。
我们在开发web项目的过程中经历了一个变化的过程,模型从简到繁,功能从单一到多元,都是为了适应需求的变化。
JSP+JavaBean | Servlet+JSP+JavaBean | MVC |
![]() | ![]() | ![]() |
优点
- 多视图共享一个模型,大大提高了代码的可重用性
- MVC 三个模块相互独立,松耦合架构
- 控制器提高了应用程序的灵活性和可配置性
- 有利于软件工程化管理
缺点
- 原理复杂
- 增加了系统结构和实现的复杂性
- 视图对模型数据的低效率访问
在实际应用场景中要合理选择项目的结构,JSP+JavaBean适合小型的业务需求,MVC 并不适合小型甚至中型规模的项目,花费大量时间将 MVC 应用到规模并不是很大的应用程序,通常得不偿失,所以对于 MVC 设计模式的使用要根据具体的应用场景来决定。