SpringMVC处理请求的流程

Spring MVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring MVC也是要简化我们日常Web开发的。

组件说明
DispatcherServlet 前端控制器Spring MVC 的核心组件,是请求的入口,负责协调各个组件工作
HandlerMapping 处理器映射器内部维护了一些 <访问路径, 处理器> 映射,负责为请求找到合适的处理器
HandlerAdapter 处理器适配器Spring 中的处理器的实现多变,比如用户处理器可以实现 Controller 接口,也可以用 @RequestMapping 注解将方法作为一个处理器等,这就导致 Spring 不知道怎么调用用户的处理器逻辑。所以这里需要一个处理器适配器,由处理器适配器去调用处理器的逻辑。
ViewResolver 视图解析器用于将视图名称解析为视图对象 View
View视图对象用于将模板渲染成 html 或其他类型的文件。

Imgur

流程:

用户发送的请求会先经过DispatcherServlet(前端控制器)进行处理。

DispatcherServlet会调用HandlerMapping(处理器映射器),处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet

在获取到处理器后,DispatcherServlet 还不能直接调用处理器的逻辑,需要通过HandlerAdapter(处理器适配器)对处理器进行适配。

处理器适配成功后,DispatcherServlet 通过处理器适配器 HandlerAdapter 调用处理器的逻辑,并获取返回值 ModelAndView。

HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

DispatcherServlet将ModelAndView传给ViewReslover视图解析器进行解析,获取解析得到的结果view,并由视图解析器响应给DispatcherServlet

DispatcherServlet对View进行渲染视图,并响应客户。

一句话总结:

SpringMVC通过DispatcherServlet这个前端控制器,来调用mvc的三大件:Controller、Model、View。这样就保证MVC的每一个组件只与DispatcherServlet耦合,而彼此之间独立运行,大大降低了程序的耦合性。

HandlerAdapter(处理器适配器)的作用

SpringMVC为业务处理器提供了多种接口实现(例如实现了Controller接口),适配器就是用来根据处理器实现了什么接口,最终选择与已经注册好的不同类型的Handler Adapter进行匹配,并最终执行。

有收获再赞赏哦🤭
------ 本文结束感谢您的阅读-------------
0%