MVC基本介绍

简介: MVC基本介绍

1.1 MVC概念

MVC(Model View Controller)是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:

  • 模型(Model)
  • 视图(View)
  • 控制器(Controller)

  • Model (模型)
  • 用javabean实现,用于封装业务数据,完成具体的业务逻辑操作。
  • 例如:查询数据库,封装对象。
  • View (视图)
  • JSP实现,用于显示数据。
  • 例如:用户实际上看到的网页信息或用户界面。
  • Controller (控制器)
  • 用Servlet实现,用于调度Model和View,负责请求转发。
  • Controller只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。因此控制器就相当于调度员一样,负责调用model和view工作一样。
  • Controller存在的目的则是确保Model和View的同步,一旦Model改变,View应该同步更新。

1.2 MVC和三层架构的区别

  • 三层架构是基于业务逻辑来分的,而MVC是基于页面来分的。
  • 三层模式可归于部署模式,MVC可归于表示模式
  • 无论是MVC还是三层架构,都是一种规范,都是奔着高内聚,低耦合的思想来设计的。

1.3 MVC架构模式的工作流程

  1. 用户通过View页面向服务端提出请求,可以是表单请求、超链接请求、AJAX请求等。
  2. 服务端Controller控制器接收到请求后对请求进行解析,找到相应 的Model对用户请求进行处理。
  3. Model处理后,将处理结果再交给Controller
  4. Controller在接到处理结果后,根据处理结果找到要作为向客户端发回的响应View页面。页面经渲染(数据填充)后,再发送给客户端

1.4 为什么要用MVC

  • 早期只有servlet,只能使用response输出标签数据,非常麻烦
  • 后来有jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码,又写html,造成难于维护,难于分工协作
  • 再后来,javaweb开发,借鉴mvc开发模式,使得程序的设计更加合理性

1.5 MVC设计模式优点

  • 降低代码耦合性
  • 在 MVC 模式中,三个层各司其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应层的代码而不会影响到其他层的代码。
  • 有利于分工合作
  • 在 MVC 模式中,由于按层把系统分开,那么就能更好的实现开发中的分工。
  • 网页设计人员可进行开发视图层中的 JSP,而对业务熟悉的人员可开发业务层,而其他开发人员可开发控制层
  • 有利于组件的重用
  • 如控制层可独立成一个能用的组件,表示层也可做成通用的操作界面。可以为一个模型在运行时同时建立和使用多个视图。
目录
相关文章
|
测试技术 开发工具 Python
在Jetson Nano上编译 pyrealsense2库包,并在Intel的tof相机上进行测试
在Jetson Nano上编译 pyrealsense2库包,并在Intel的tof相机上进行测试
668 0
|
XML Java Android开发
Android spinner 的使用
Android spinner 的使用
266 6
|
人工智能 Python
【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)
【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)
554 0
|
Android开发
从 Google play 商店直接下载 apk 安装包
从 Google play 商店直接下载 apk 安装包
764 0
|
存储 搜索推荐 Android开发
一键网页视频提取神器!!!
一键网页视频提取神器!!!
|
算法 数据处理
MATLAB 之 M 文件和程序控制结构(顺序、选择、循环)-1
M 文件是由若干 MATLAB 命令组合在一起构成的程序,其扩展名为 .m。它可以完成某些操作,也可以实现某种算法。实际上,MATLAB 提供的内部函数以及各种工具箱,都是利用 MATLAB 命令开发的 M 文件。
|
网络协议 安全 Unix
【BPF入门系列-1】eBPF 技术简介
“eBPF 是我见过的 Linux 中最神奇的技术,没有之一,已成为 Linux 内核中顶级子模块,从 tcpdump 中用作网络包过滤的经典 cbpf,到成为通用 Linux 内核技术的 eBPF,已经完成华丽蜕变,为应用与神奇的内核打造了一座桥梁,在系统跟踪、观测、性能调优、安全和网络等领域发挥重要的角色。为 Service Mesh 打造了具备 API 感知和安全高效的容器网络方案 Cilium,其底层正是基于 eBPF 技术”
18200 1
【BPF入门系列-1】eBPF 技术简介
|
JSON 小程序 JavaScript
微信小程序 - VSCode 插件支持
微信小程序 - VSCode 插件支持
863 0
|
缓存 自然语言处理 Dubbo
深度剖析 Seata TCC 模式【图解 + 源码分析】
Seata 目前支持 AT 模式、XA 模式、TCC 模式和 SAGA 模式,之前文章更多谈及的是非侵入式的 AT 模式,今天带大家认识一下同样是二阶段提交的 TCC 模式。
956 0
深度剖析 Seata TCC 模式【图解 + 源码分析】
|
传感器 存储 算法
Google Earth Engine(GEE)——Landsat 系列卫星及其算法的介绍(新手必备)!
Google Earth Engine(GEE)——Landsat 系列卫星及其算法的介绍(新手必备)!
2631 0
Google Earth Engine(GEE)——Landsat 系列卫星及其算法的介绍(新手必备)!