版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址:https://blog.csdn.net/sun8112133/article/details/104613402







经过上一篇 Spring MVC 之 HelloWorld 这个小例子,相信大家对 Spring MVC 已经有了一个基本的认识了,而本篇博客主要是介绍 Spring MVC 的核心组件以及它是如何进行工作的。


一、核心组件

核心组件 是组成 Spring MVC 重要的部件,关于 Spring MVC 中常用的核心组件我总结了以下 8 种:

1、DispatcherServlet(前端控制器)

这个组件我们把它称为是 前端控制器,它负责调度其他组件的执行,相当于是中央处理器,它可以降低不同组件之间的耦合性,它也是 Spring MVC 最核心的组件,因为各个组件的调度都是由它来控制的。

我们在程序中会把它配置到 web.xml 中,一般情况下我们要接收所有的请求(/)和配置 Spring MVC 的配置管理文件,HelloWorld 中我们已经接触过了。


2、Handler(处理器)

这个组件我们把它称为是 处理器,它可以完成具体的业务逻辑,也就是我们程序中的 控制器

在之前的 HelloWorld 中我们也接触过它,就是 HelloController 类,我们要在该类上加 @Controller 注解,并在 Spring MVC 配置管理文件 中配置自动扫描注解,使得 @Controller 注解生效,需要注意的是这里只能加 @Controller 注解,不能加其他的配置 Bean 的注解(如:@Component 等),否则效果只能是放到 IOC 容器中,并不能处理浏览器请求。


3、HandlerMapping(处理器映射器)

这个组件我们把它称为是 处理器映射器前端控制器(DispatcherServlet)得通过它才能将请求映射到不同的 处理器(Handler)。


4、HandlerInterceptor(处理器拦截器)

这个组件我们把它称为是 处理器拦截器,它是一个接口,如果需要完成一些拦截处理,可以实现该接口。


5、HandlerExecutionChain(处理器执行链)

这个组件我们把它称为是 处理器执行链,它是由 处理器(Handler) 和 处理器拦截器(HandlerInterceptor)这两部分组成的一条 处理器执行链


6、HandlerAdapter(处理器适配器)

这个组件我们把它称为是 处理器适配器,它可以完成执行业务逻辑之前的一些预处理,如:数据类型转换、封装等。前端控制器(DispatcherServlet)也得通过它来调用不同的 处理器(Handler),因为它可以在调用前做一些预处理操作。


7、ModelAndView(模型视图)

这个组件我们把它称为是 模型视图,它里面装载了 模型数据视图信息,它是 处理器(Handler) 处理后的最终结果,每次 处理器(Handler) 处理后都会把它返回给 前端控制器(DispatcherServlet)。


8、ViewResolver(视图解析器)

这个组件我们把它称为是 视图解析器前端控制器(DispatcherServlet)是通过它将 逻辑视图 转换成 物理视图 ,最终将渲染结果响应给客户端。



二、工作流程

  1. 浏览器 请求被 前端控制器【DispatcherServlet】接收;
  2. 前端控制器【DispatcherServlet】根据 处理器映射器【HandlerMapping】映射到对应的 处理器【Handler】;
  3. 处理器【Handler】和 处理器拦截器【HandlerInterceptor】封装成 处理器执行链【HandlerExecutionChain】返回给 前端控制器【DispatcherServlet】;
  4. 前端控制器【DispatcherServlet】通过 处理器适配器【HandlerAdapter】调用 处理器【Handler】中的方法完成业务逻辑处理;
  5. 再将业务逻辑处理的结果(模型视图【ModelAndView】)返回给 前端控制器【DispatcherServlet】;
  6. 前端控制器将获取的 模型视图【ModelAndView】传送给 视图解析器【ViewResolver】;
  7. 视图解析器【ViewResolver】将逻辑视图解析为 物理视图【View】,并返回给 前端控制器【DispatcherServlet】;
  8. 前端控制器【DispatcherServlet】将 物理视图【View】进行渲染(将模型数据填充到视图中);
  9. 前端控制器【DispatcherServlet】将渲染后的视图响应给 浏览器

【SpringMVC笔记整理二】工作流程



博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!



相关文章:

  • 2021-10-15
  • 2021-11-08
  • 2021-08-22
猜你喜欢
  • 2021-12-27
  • 2021-05-17
  • 2021-08-28
  • 2021-09-08
  • 2021-04-16
  • 2021-10-11
  • 2021-07-27
相关资源
相似解决方案