当前位置: 首页 > news >正文

Spring MVC 的执行流程以及运行原理

一.什么是 MVC?

MVC Model View Controller 的缩写,分别代表 Web 应用程序中的 3 种职责, MVC
是一种软件设计规范。它将业务逻辑、数据、显示分离的方法来组织代码,降低了视图与业
务逻辑之间的双向耦合。
Model( 模型 ) :数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型
JavaBean 组件(包含数据和行为),不过现在一般都分离开来: Value Object (数据 Dao
和 服务层(行为 Service )。也就是模型提供了模型数据查询和模型数据的状态更新等功能,
包括数据和业务。
View( 视图 ) :负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
Controller( 控制器 ) :接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回
的模型数据返回给视图,由视图负责展示。也就是说控制器做了个调度员的工作。
最典型的 MVC 模式就是 JSP+Servlet+JavaBean 的模式。

二.什么是 Spring MVC?

Spring MVC 是一个基于 MVC 模式的 Web 框架,是 Spring 框架的一个模块。
它以 Spring IOC 容器为基础,并利用容器的特性来简化它的配置,所以 Spring MVC Spring
可直接整合使用。
Spring MVC MVC 流程进行了封装,屏蔽掉很多底层代码,让开发者可以更加轻松快捷 的完成基于 MVC 模式的 Web 开发。
总的来说: Spring MVC Spring Framework 的一部分,是基于 Java 实现 MVC 的轻量级 Web
框架。
Spring MVC 的特点:
Spring 框架的一部分,可以方便的利用 Spring 所提供的其他功能。
灵活性强,易于与其他框架集成。
提供了一个前端控制器 DispatcherServlet ,使开发人员无需额外开发控制器对象。
可自动绑定用户输入,并能正确的转换数据类型。
内置了常见的校验器,可以校验用户输入。如果校验不能通过,那么就会重定向到输入表单。
支持国际化。可以根据用户区域显示多国语言。
支持多种视图技术。它支持 JSP Velocity FreeMarker 等视图技术。
使用基于 XML 的配置文件,在编辑后,不需要重新编译应用程序。

三.SpringMVC 中的核心组件

1 )前端控制器( DispactherServlet ):接收请求、响应结果,相当于转发器,它是 SpringMVC
框架最核心的组件,有了它就能减少其他组件之间的耦合度。(不需要程序员开发)
2 )处理器映射器( HandlerMapping ):根据配置的映射规则(根据请求的 URL ),找到对
应的处理器。(不需要程序员开发)
3 )处理器适配器( HandlerAdapter ):适配调用具体的处理器,并且执行处理器中处理请求
的方法,执行完毕之后返回一个 ModelAndView 对象。
4 )处理器( Handler ):(需要程序员手动开发)。
5 )视图解析器( ViewResolver ):会根据传递过来的 ModelAndView 对象进行视图解析,根
据视图解析名解析称真正的视图 View 。(不需要程序员开发)
6 )视图( View ): View 是一个接口,它的实现类支持不同类型的视图。比如: JSP freemarker 、 Thymeleaf 等等。

四.Spring MVC 的执行流程

1 )当用户通过浏览器发起一个 HTTP 请求,请求直接到前端控制器 DispatcherServlet
2 )前端控制器接收到请求以后调用处理器映射器 HandlerMapping ,处理器映射器根据请
求的 URL 找到具体的 Handler ,并将它返回给前端控制器;
3 )前端控制器调用处理器适配器 HandlerAdapter 去适配调用 Handler
4 )处理器适配器会根据 Handler 去调用真正的处理器去处理请求,并且处理对应的业务
逻辑;
5 )当处理器处理完业务之后,会返回一个 ModelAndView 对象给处理器适配器,
HandlerAdapter 再将该对象返回给前端控制器;这里的 Model 是返回的数据对象, View
逻辑上的 View
6 )前端控制器 DispatcherServlet 将返回的 ModelAndView 对象传给视图解析器 ViewResolver
进行解析,解析完成之后就会返回一个具体的视图 View 给前端控制器。( ViewResolver
据逻辑的 View 查找具体的 View
7 )前端控制器 DispatcherServlet 将具体的视图进行渲染,渲染完成之后响应给用户(浏
览器显示)。

五.关于 Spring MVC 常用部分注解解释

@SpringBootApplication 此 注 解 是 一 个 组 合 注 解 , 包 含 了 ( @Configuration
@EnableAutoConfiguration @ComponentScan )三个重要注解的功能。其主要作用在于简化
启动类的编写,使得开发者可以快速搭建起一个基于 Spring 的应用程序框架。
@Component 标注在类上,表示将该类作为一个组件交给 Spring 容器管理。
@Controller 声明 Controller 组件,通常作用在控制层(如 Spring MVC Controller ),用于将控制层的类标识为 Spring 中的 Bean ,其功能与 @Component 相同。
@Service 声明 Service 组件 @Service( myMovieLister ) ,通常作用在业务层( Service 层),用于将业务层的类标识为 Spring 中的 Bean ,其功能与 @Component 相同。
@Repository 声明 Dao 组件,将数据访问层( DAO 层)的类标识为 Spring 中的 Bean ,其 功能与 @Component 相同。
@Resource 用于注入,默认按名称装配, @Resource(name= beanName )
@Autowired 用于注入,默认按类型装配
@Transactional: 事务管理
@RequestBody :注解实现接收 http 请求的 json 数据,将 json 转换为 java 对象。
@ResponseBody :注解实现将 conreoller 方法返回对象转化为 json 对象响应给客户。
@Scope: Spring IOC 容器中的一个作用域,在 Spring IOC 容器中,他用来配置 Bean 实例的
作用域对象。
@RequestMapping("/menu") 请求映射,用于映射 url 到控制器类或一个特定的处理程序方法。
可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
@GetMapping :它是 @RequestMapping(method =RequestMethod.GET) 的一个快捷方式,只
能处理 Get 类型请求。
@PostMapping : 它是 @RequestMapping(method =RequestMethod.POST) 的一个快捷方式,
只能处理 Post 类型请求。
@RequestParam :从请求中提取查询参数

相关文章:

  • 乐清seo搜索引擎优化常用方法
  • 广元网站建设价格seo优化的搜索排名影响因素主要有
  • 宜昌做网站的/今日时事新闻
  • 做产品批发生意用什么类型的网站好/真正永久免费的建站系统有哪些
  • 简单个人网页模板/宁波seo在线优化哪家好
  • 全能企业网站管理系统/上海网络推广服务
  • 谷歌发布网络安全AI新模型Sec-Gemini v1
  • IPD项目管理软件:禅道与Asana的5个核心差异
  • 深入浅出Java 锁 | 源码剖析 | 万字解析
  • Vue3 实现进度条组件
  • Vue3全栈架构实战:Nuxt3服务端渲染与模块化设计深度剖析
  • 前端使用正则表达式提取经纬度 度分秒值
  • Linux命令之jq命令处理JSON数据
  • 【Linux】虚拟机设置静态IP
  • 【leetcode hot 100 763】划分字母区间
  • 【愚公系列】《高效使用DeepSeek》058-选题策划
  • real_time_camera_audio_display_with_animation
  • 华为OD机试2025A卷 - 正整数到excel编号之间的转换(Java Python JS C++ C )
  • 分布式微服务系统架构第97集:JVM底层原理
  • P1006 [NOIP 2008 提高组] 传纸条 题解
  • HTML5 浏览器兼容性:让旧浏览器也能拥抱 HTML5
  • 如何使用Audacity快速拆分整轨音频文件
  • 在 Ubuntu 下通过 Docker 部署 Misskey 服务器
  • 用AI来了解用户都在关注的品牌问题是什么?
  • linux 下du 和 ls-alh 的区别
  • 【JavaScript】十五、事件对象与环境对象