Spring MVC的执行流程(有图有真相)
Posted 流楚丶格念
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring MVC的执行流程(有图有真相)相关的知识,希望对你有一定的参考价值。
文章目录
Spring MVC的执行流程
我们先回顾一下MVC的概念,便于我们学习Spring MVC的执行流程
MVC
MVC是一种设计模式,在这种模式下软件被分为三层,即Model(模型)、View(视图)、
Controller(控制器)。
- Model代表的是数据
- View代表的是用户界面
- Controller代表的是数据的处理逻辑,它是Model和View这两层的桥梁。
将软件分层的好处是,可以将对象之间的耦合度降低,便于代码的维护。
Spring MVC
Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。
详细介绍可以参考查看官方文档:https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/web.html#spring-web
围绕着SpringMVC执行流程来分析:Spring的web框架围绕DispatcherServlet [ 调度Servlet ] 设计。
DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解形式进行开发,十分简洁;
因为SpringMVC好 , 简单 , 便捷 , 易学 , 天生和Spring无缝集成(使用SpringIoC和Aop) , 使用约定优于配置 . 能够进行简单的junit测试 . 支持Restful风格 .异常处理 , 本地化 , 国际化 , 数据验证 , 类型转换 , 拦截器 等等…所以我们要学习它,很重要的。
执行流程
执行流程图如下所示:
-
整个过程开始于客户端发出的一个HTTP请求,Web应用服务器接收到这个请求。如果匹配DispatcherServlet的请求映射路径,则Web容器将该请求转交给DispatcherServlet处理。
DispatcherServlet的作用是将请求分发到不同的处理器。
-
DispatcherServlet接收到这个请求后,将根据请求的信息(包括URL、HTTP方法、请求报文头、请求参数、Cookie等)及HandlerMapping的配置找到处理请求的处理器(Handler)。
可将HandlerMapping看做路由控制器,将Handler看做目标主机。值得注意的是,在Spring MVC中并没有定义一个Handler接口,实际上任何一个Object都可以成为请求处理器。
-
当DispatcherServlet根据HandlerMapping得到对应当前请求的Handler后,通过
HandlerAdapter对Handler进行封装,再以统一的适配器接口调用Handler。HandlerAdapter是Spring MVC框架级接口,顾名思义,HandlerAdapter是一个适配器,它用统一的接口对各种Handler方法进行调用。
-
处理器完成业务逻辑的处理后,将返回一个ModelAndView给DispatcherServlet,ModelAndView包含了视图逻辑名和模型数据信息。
-
ModelAndView中包含的是“逻辑视图名”而非真正的视图对象,DispatcherServlet借由
ViewResolver完成逻辑视图名到真实视图对象的解析工作。 -
当得到真实的视图对象View后,DispatcherServlet就使用这个View对象对ModelAndView中的模型数据进行视图渲染。
-
最终客户端得到的响应消息可能是一个普通的html页面,也可能是一个XML或JSON串,甚至是一张图片或一个PDF文档等不同的媒体形式。
以上是关于Spring MVC的执行流程(有图有真相)的主要内容,如果未能解决你的问题,请参考以下文章