关于MVC与SpringMVC的介绍、区别、执行流程

作者:lfsun666 时间:2023-11-28 02:25:56 

介绍

MVC(Model-View-Controller)是一种软件架构模式,其中应用程序被划分为三个部分:模型(Model)、视图(View)和控制器(Controller)。MVC框架的主要目标是将应用程序的业务逻辑(Model)与用户界面(View)分离开来,从而提高应用程序的可维护性和可扩展性。MVC框架通常使用注解来标识不同的组件(例如,@Controller、@Service、@Repository等)。

Spring MVC,注解的原理是通过反射机制来实现的。当应用程序启动时,Spring框架会扫描所有标有注解的类,并通过反射机制获取这些类的相关信息,例如类名、方法名、注解类型等。然后,Spring框架会将这些信息存储在一个内部数据结构中,并在应用程序运行时使用这些信息来实例化对象、调用方法等。

具体来说,Spring MVC框架使用了以 * 解:

@Controller:用于标识控制器类。当Spring框架扫描到标有@Controller注解的类时,会将其实例化,并将其方法映射到对应的URL上。@RequestMapping:用于标识处理HTTP请求的方法。当Spring框架扫描到标有@RequestMapping注解的方法时,会将其与对应的URL进行映射,从而使得请求可以被正确的处理。@RequestParam:用于获取请求参数。当Spring框架扫描到标有@RequestParam注解的方法参数时,会从请求中获取对应的参数值,并将其注入到方法参数中。@ResponseBody:用于返回JSON数据。当Spring框架扫描到标有@ResponseBody注解的方法时,会将方法返回的数据转换为JSON格式,并将其作为HTTP响应返回给客户端。

通过使用这些注解,Spring MVC框架可以快速、方便地开发Web应用程序,并实现良好的代码结构和可维护性。

区别

MVC是一种软件架构设计模式,用于将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。MVC模式的主要目的是将应用程序的不同方面分离,以便开发人员可以更轻松地管理和修改它们。模型表示应用程序的数据和业务逻辑,视图显示数据并与用户交互,而控制器处理用户输入并根据需要更新模型和视图。

Spring MVC是基于MVC模式的Web框架,用于开发Web应用程序。它利用Java语言提供的标准Servlet API,并在此之上构建了一个强大的Web框架。与传统的Servlet编程相比,Spring MVC提供了更好的模块化、灵活性和可扩展性,使得Web开发变得更加容易。在Spring MVC中,控制器(Controller)负责处理请求,将模型(Model)和视图(View)结合起来,然后将结果返回给客户端。同时,Spring MVC也提供了许多其他的功能,例如表单验证、国际化支持、文件上传和异常处理等。

两者执行流程

MVC执行流程:

  1. 用户发送请求给控制器(Controller)。

  2. 控制器接收请求并根据请求参数决定调用哪个模型(Model)。

  3. 模型处理请求并返回相应的数据给控制器。

  4. 控制器接收到数据并调用相应的视图(View)。

  5. 视图将数据呈现给用户。

Spring MVC执行流程:

  1. 客户端发送请求到 DispatcherServlet

  2. DispatcherServlet 根据请求路径查找对应的处理器映射(HandlerMapping)

  3. HandlerMapping将请求映射到相应的控制器

  4. 控制器处理请求并返回相应的ModelAndView

  5. DispatcherServlet 将ModelAndView交给视图解析器(ViewResolver)进行解析

  6. ViewResolver将ModelAndView解析为实际的视图

  7. DispatcherServlet 将解析后的视图渲染后返回给客户端

相较于传统的MVC模式,Spring MVC多了一个前置控制器,即DispatcherServlet。它充当了所有请求的中心处理器,将请求委托给相应的控制器进行处理,并最终选择相应的视图呈现给用户。因此,Spring MVC执行流程比传统的MVC模式更加复杂,但同时也提供了更多的灵活性和可扩展性。

来源:https://lfsun666.blog.csdn.net/article/details/129872442

标签:MVC,SpringMVC,区别,执行流程
0
投稿

猜你喜欢

  • Android开发实现的简单五子棋游戏示例

    2022-10-26 04:47:59
  • Java实现替换PDF中的字体功能

    2023-10-04 13:24:17
  • C#中Params的用法

    2023-06-03 22:23:27
  • IDEA中打jar包的2种方式(Maven打jar包)

    2023-05-03 22:31:41
  • Java中BigDecimal类的使用详解

    2021-12-13 05:30:52
  • C# http系列之以form-data方式上传多个文件及键值对集合到远程服务器

    2023-03-19 17:28:20
  • 测试springboot项目出现Test Ignored的解决

    2022-06-25 08:37:02
  • Android Dialog 动画实例详解

    2022-10-22 22:24:29
  • 关于C#10 新特性 Lambda 优化

    2022-05-31 08:21:16
  • Android Studio 3.0 新功能全面解析和旧项目适配问题

    2022-09-16 23:53:57
  • 全面解析Hibernate关联操作、查询操作、高级特性、并发处理机制

    2021-06-25 08:48:48
  • java.nio.file.WatchService 实时监控文件变化的示例代码

    2021-10-03 01:52:53
  • java 读取excel文件转换成json格式的实例代码

    2023-09-11 13:07:28
  • springMVC如何将controller中Model数据传递到jsp页面

    2023-05-25 23:46:58
  • 关于Scanner对象的输入结束标记问题

    2022-02-20 08:02:11
  • Android创建淡入淡出动画的详解

    2022-12-28 00:12:12
  • Java基础 Servlet监听器详解

    2022-05-30 20:40:02
  • C#操作注册表的方法

    2023-06-24 14:34:46
  • C# 多线程编程技术基础知识入门

    2023-05-27 08:00:24
  • Java关于JDK1.8新特性的Stream流

    2021-06-02 11:36:35
  • asp之家 软件编程 m.aspxhome.com