摘要 简单介绍一下当用户在客户端发起请求后,Spring MVC 的执行流程,提升自己对Spring框架的认知层次。一言以蔽之,解答【Spring MVC的工作原理是什么】,这是一个热点面试题。

  Spring Web 框架是围绕前端控制器DispatcherServlet设计的,DispatcherServlet是servlet接口的一个实现类,主要用于接收客户端符合要求的请求并将服务端处理结果发送至客户端。

  简述Spring MVC的工作内容:

  • 服务端接收用户请求;
  • 指定应用程序实现客户需求;
  • 将应用程序处理的结果渲染成视图;
  • 客户端响应用户请求(回传渲染后的视图)。

执行流程

  Spring MVC执行流程:

1、前端控制器捕获用户请求。用户向服务器发送请求,请求被 Spring 前端控制器DispatcherServlet 捕获。

2、查找Handler。 DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据此URI调用处理器映射器HandlerMapping获得该Handler配置的所有相关的对象(包括 Handler对象以及Handler对象对应的拦截器),最后以 HandlerExecutionChain对象的形式返回。

  HandlerMapping是撮合URI和Method的红娘,在Spring MVC体系结构中有着举足轻重的地位,充当着配置URI和Controller中Method之间映射关系的角色。一个URI和一个可执行的Method通常是一一映射的关系。

3、Controller执行完成并返回 ModelAndView 对象。DispatcherServlet根据获得的 Handler,匹配一个合适的处理器适配器HandlerAdapter。HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。Controller执行完成后,向 DispatcherServlet 返回一个 ModelAndView 对象。

4、选择视图解析器。DispatcherServlet 根据返回的 ModelAndView,选择一个适合的视图解析器 ViewResolver(必须是已经注册到 Spring 容器中的 ViewResolver) 。

5、通过视图解析器渲染并返回视图。通过 ViewResolver 结合 Model 和 View 渲染视图(即将模型数据Model填充至视图中),DispatcherServlet 将渲染结果传递给客户端。其中的View是视图名称,用于在视图解析器中查找视图。

  客户端得到响应,视图可能是一个普通的HTML页面,也可以是XML或JSON字符串,还可以是一张图片或者一个PDF文件。

小结

  以上就是Spring MVC 的工作流程,欢迎点赞阅读,一同学习交流;若有疑问,请在文章下方留下你的神评妙论!

Reference

面试题-简单介绍 Spring MVC 执行流程或者Spring MVC的工作原理的更多相关文章

  1. 一文读懂Spring MVC执行流程

    说到Spring MVC执行流程,网上有很多这方面的文章介绍,但是都不太详细,作为一个初学者去读会有许多不理解的地方,今天这篇文章记录一下我学习Spring MVC的心得体会 话不多说,先上图:   ...

  2. Java——一文读懂Spring MVC执行流程

    说到Spring MVC执行流程,网上有很多这方面的文章介绍,但是都不太详细,作为一个初学者去读会有许多不理解的地方,今天这篇文章记录一下我学习Spring MVC的心得体会 话不多说,先上图: Sp ...

  3. Spring Boot 揭秘与实战 源码分析 - 工作原理剖析

    文章目录 1. EnableAutoConfiguration 帮助我们做了什么 2. 配置参数类 – FreeMarkerProperties 3. 自动配置类 – FreeMarkerAutoCo ...

  4. s2sh的MVC执行流程和执行原理

    =======================执行流程 1. 从页面开始,提交表单或者点击链接会触发一个action 2. action交给struts2处理,读取src目录struts.xml文件, ...

  5. Spring高级特性之三:@Enable*注解的工作原理

    Spring Boot中阐述热插拔技术的时候,简单地提及@Enable*注解.随着多种框架的应用及深入了解,@Enable*这个注解在各种框架中应用相当普及. 那么@Enable*注解工作原理是怎么样 ...

  6. Spring MVC执行流程

    SpringMVC是隶属于Spring Web中的一部分, 属于表现层的框架. 其使用了MVC架构模式的思想, 将Web层进行职责解耦, 使用请求-响应模型简化Web开发 SpringMVC通过中央调 ...

  7. ASP.NET MVC 执行流程介绍

    Routing 组件   Controller   Controller中可用的ActionResult MVC-View(使用的抽象工厂模式的视图引擎) 视图模型

  8. Spring启动执行流程梳理

    注:本文梳理启动流程使用的Spring版本:4.0.2.RELEASE 使用spring配置,都需要在web.xml中配置一个spring的监听器和启动参数(context-param),如下: &l ...

  9. MVC系统学习1—MVC执行流程

    用MVC来做开发也有一段时间了,但是感觉一直没入门,就徘徊在似懂非懂的层次,和去年刚毕业学习WebForm时一样,当时通过张子阳老兄的几篇文章,明白了请求处理流程,页面生命周期才真正明白了WebFor ...

  10. 03 spring security执行流程分析

    spring security主要是依赖一系列的Filter来实现权限验证的,责任链设计模式是跑不了的.下面简单记录一下spring操作这些Filter的过程. 1. WebSecurityConfi ...

随机推荐

  1. C# 泛型类型约束 where

    1 class Program { 2 static void Main(string[] args) { 3 4 } 5 } 6 7 interface IMyInterface { 8 void ...

  2. svn提示Node remains in conflict的解决办法

    svn 更新提示Node remains in conflict 这个时候不管svn up多少次,都无法更新到最新的内容 解决办法: svn revert --depth=infinity * 其中* ...

  3. QWidget的isHidden和isVisible

    文章目录 QWidget的isHidden和isVisible 问题的出现 QWidget的show()函数 QWidget的isVisible和isHidden 源码追溯 QWidget的isHid ...

  4. postman发送数组

    postman发送数组 第一种 第二种

  5. PIL或Pillow学习1

    PIL( Python Imaging Library)是 Python 的第三方图像处理库,由于其功能丰富,API 简洁易用,因此深受好评. 自 2011 年以来,由于 PIL 库更新缓慢,目前仅支 ...

  6. Portainer安装配置

    什么是portainer 官网:https://www.portainer.io/ Portainer(基于 Go) 是一个轻量级的Web管理界面,可让您轻松管理 Docker 主机 或 Swarm ...

  7. Delphi 模糊查询和字段查询

    procedure TFrmain.scGPEdit1Change(Sender: TObject); var ASql, AKey: string; //模糊查询和字段查询 const vsql1: ...

  8. 【SpringCloud】Ribbon负载均衡调用

    Ribbon负载均衡调用 概述 是什么 Spring Cloud Ribbon是基于Netlix Ribbon实现的一套客户端负载均衡的工具. 简单的说,Ribbon是Netflix发布的开源项目, ...

  9. frxpngimage单元的编译错误:frxpngimage left side cannot be assigned to

    一个老项目中,使用软数字录入数据,编译时出现n个:frxpngimage left side cannot be assigned to 原因是使用了frxpngimage单元,在D11中编译出现若干 ...

  10. SpringBoot启动方法分析

    SpringBoot启动run方法分析 1.场景引入 在项目启动的时候,有时候我们需要在启动的时候,执行一些逻辑. 比如说,项目启动的时候,我想把一些热门商品的数据加载到缓存中去: 比如说,自定义了一 ...