MVC架构简述

简介: MVC架构简述

MVC简介

MVC 是一种非常常见且常用的分层架构,主要包括;M - mode 对象层,封装到 domain 里。V - view 展示层,但因为目前都是前后端分离的项目,几乎不会在后端项目里写 JSP 文件了。C - Controller 控制层,对外提供接口实现类。DAO 算是单独拿出来用户处理数据库操作的层。

MVC优点

1. 耦合性低

2. 重用性高

3. 生命周期成本低

MVC缺点

1. 视图与控制器间的过于紧密的连接并且降低了视图对模型数据的访问

2. 增加系统结构和实现的复杂性

SpringMVC

SpringMVCSpring家族中的元老之一,它是一个基于MVC三层架构模式的Web应用框架,它的出现也一统了JavaWEB应用开发的项目结构,从而避免将所有业务代码都糅合在同一个包下的复杂情况。同时它还支持RESTful 编程风格的请求。。在该框架中通过把Model、View、Controller分离,如下:

  • M/Model模型:由service、dao、entityJavaBean构成,主要负责业务逻辑处理。
  • V/View视图:负责向用户进行界面的展示,由jsp、html、ftl....等组成。
  • C/Controller控制器:主要负责接收请求、调用业务服务、根据结果派发页面。

运行流程

  • 用户发送请求至会先进入DispatcherServlet控制器进行相应处理。
  • DispatcherServlet会调用HandlerMapping根据请求路径查找Handler
  • 处理器映射器找到具体的处理器后,生成Handler对象及Handler拦截器(如果有则生成),然后返回给DispatcherServlet
  • DispatcherServlet紧接着会调用HandlerAdapter,准备执行Handler
  • HandlerAdapter底层会利用反射机制,对前面生成的Handler对象进行执行。
  • 执行完对应的Java方法后,HandlerAdapter会得到一个ModelAndView对象。
  • HandlerAdapterModelAndView再返回给DispatcherServlet控制器。
  • DisPatcherServlet再调用ViewReslover,并将ModelAndView传递给它。
  • ViewReslover视图解析器开始解析ModelAndView并返回解析出的View视图。
  • 解析出View视图后,对视图进行数据渲染(即将模型数据填充至视图中)。
  • DispatcherServlet最终将渲染好的View视图响应给用户浏览器。

SpringMVC 的优势

1. 清晰的角色划分: 前端控制器(DispatcherServlet) 请求到处理器映射(HandlerMapping) 处理器适配器(HandlerAdapter) 视图解析器(ViewResolver) 处理器或页面控制器(Controller) 验证器( Validator) 命令对象(Command 请求参数绑定到的对象就叫命令对象) 表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。

2.分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要。

3. 生态环境好,和 Spring 其他框架无缝集成,是其它 Web 框架所不具备的。


目录
相关文章
|
6月前
|
设计模式 存储 前端开发
MVVM、MVC、MVP三种常见软件架构设计模式的区别
MVC、MVP 和 MVVM 是三种常见的软件架构设计模式,主要通过分离关注点的方式来组织代码结构,优化开发效率。
136 12
|
1月前
|
存储 前端开发 调度
Flux 与传统的 MVC 架构模式区别
Flux是一种用于构建用户界面的架构模式,与传统的MVC架构不同,它采用单向数据流,通过Dispatcher统一管理数据的分发,Store负责存储数据和业务逻辑,View只负责展示数据,使得应用状态更加可预测和易于维护。
|
4月前
|
设计模式 前端开发 数据库
哇塞!Rails 的 MVC 架构也太牛了吧!快来看看这令人惊叹的编程魔法,开启新世界大门!
【8月更文挑战第31天】《Rails中的MVC架构解析》介绍了Ruby on Rails框架核心的MVC设计模式,通过模型(Model)、视图(View)和控制器(Controller)三部分分离应用逻辑,利用Active Record进行数据库操作,ERB模板渲染视图,以及控制器处理用户请求与业务逻辑,使代码更易维护和扩展,提升团队开发效率。
82 0
|
1月前
|
存储 前端开发 数据可视化
在实际项目中,如何选择使用 Flux 架构或传统的 MVC 架构
在实际项目中选择使用Flux架构或传统MVC架构时,需考虑项目复杂度、团队熟悉度和性能需求。Flux适合大型、高并发应用,MVC则适用于中小型、逻辑简单的项目。
|
3月前
|
设计模式 前端开发 数据库
理解mvc架构
mvc架构
34 4
|
4月前
|
设计模式 存储 前端开发
MVC革命:如何用一个设计模式重塑你的应用架构,让代码重构变得戏剧性地简单!
【8月更文挑战第22天】自定义MVC(Model-View-Controller)设计模式将应用分为模型、视图和控制器三个核心组件,实现关注点分离,提升代码可维护性和扩展性。模型管理数据和业务逻辑,视图负责数据显示与用户交互,控制器处理用户输入并协调模型与视图。通过示例代码展示了基本的MVC框架实现,可根据需求扩展定制。MVC模式灵活性强,支持单元测试与多人协作,但需注意避免控制器过度复杂化。
48 1
|
4月前
|
开发者 前端开发 Java
架构模式的诗与远方:如何在MVC的田野上,用Struts 2编织Web开发的新篇章
【8月更文挑战第31天】架构模式是软件开发的核心概念,MVC(Model-View-Controller)通过清晰的分层和职责分离,成为广泛采用的模式。随着业务需求的复杂化,Struts 2框架应运而生,继承MVC优点并引入更多功能。本文探讨从MVC到Struts 2的演进,强调架构模式的重要性。MVC将应用程序分为模型、视图和控制器三部分,提高模块化和可维护性。
49 0
|
4月前
|
存储 前端开发 数据库
神秘编程世界惊现强大架构!Web2py 的 MVC 究竟隐藏着怎样的神奇魔力?带你探索实际应用之谜!
【8月更文挑战第31天】在现代 Web 开发中,MVC(Model-View-Controller)架构被广泛应用,将应用程序分为模型、视图和控制器三个部分,有助于提高代码的可维护性、可扩展性和可测试性。Web2py 是一个采用 MVC 架构的 Python Web 框架,其中模型处理数据和业务逻辑,视图负责呈现数据给用户,控制器则协调模型和视图之间的交互。
42 0
|
5月前
|
存储 前端开发 算法
MVC(Model-View-Controller)架构
MVC架构帮助开发者构建清晰、可维护和可扩展的Web应用程序。
42 2
|
6月前
|
设计模式 前端开发 Java
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
92 1