DispatcherServlet 的工作流程可以用一幅图来说明:

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

2、 DispatcherServlet 根据 -servlet.xml 中的配置对请求的 URL 进行解

析,得到请求资源标识符(URI)。然后根据该 URI,调用 HandlerMapping

获得该 Handler 配置的所有相关的对象(包括 Handler 对象以及 Handler 对

象对应的拦截器),最后以 HandlerExecutionChain 对象的形式返回。

3、 DispatcherServlet 根据获得的 Handler,选择一个合适的

HandlerAdapter。(附注:如果成功获得 HandlerAdapter 后,此时将开始

执行拦截器的 preHandler(...)方法)。

4、提取 Request 中的模型数据,填充 Handler 入参,开始执行 Handler

( Controller)。在填充 Handler 的入参过程中,根据你的配置,Spring 将

帮你做一些额外的工作:

HttpMessageConveter:将请求消息(如 Json、xml 等数据)转换

成一个对象,将对象转换为指定的响应信息。

数据转换:对请求消息进行数据转换。如 String 转换成 Integer、

Double 等。

数据根式化:对请求消息进行数据格式化。如将字符串转换成格式化数字

或格式化日期等。

数据验证:验证数据的有效性(长度、格式等),验证结果存储到

BindingResult 或 Error 中。

5、Handler(Controller)执行完成后,向 DispatcherServlet 返回一个

ModelAndView 对象;

6、根据返回的 ModelAndView,选择一个适合的 ViewResolver(必须是已

经注册到 Spring 容器中的 ViewResolver)返回给 DispatcherServlet。

7、 ViewResolver 结合 Model 和 View,来渲染视图。

8、视图负责将渲染结果返回给客户端。

描述一下 DispatcherServlet 的工作流程 ?的更多相关文章

  1. Hystrix工作流程解析

    搭建Hystrix源码阅读环境 引入依赖 <dependency> <groupId>com.netflix.hystrix</groupId> <artif ...

  2. DispatcherServlet的工作原理

    下面是DispatcherServlet的工作原理图,图片来源于网络. 下面是我从DispatcherServlet源码层面来分析其工作流程: 1.请求到达后,调用HandlerMapping来查找对 ...

  3. 2017.4.7 Sprng MVC工作流程描述图

    图一: 图二: Spring工作流程描述         1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获:       2. Dispa ...

  4. 描述Spring Web MVC的工作流程

    Spring Web MVC的共工作流程如下: 1.浏览器发出Spring mvc请求,请求给前端控制器 DispatcherServlet处理. 2.控制器通过HandlerMapping维护的请求 ...

  5. 第四次作业 描述HDFS体系结构、工作原理与流程

    1.用自己的图,描述HDFS体系结构.工作原理与流程. 读数据的流程 2.伪分布式安装Hadoop.

  6. springmvc工作流程

    Spring MVC工作流程图   图一   图二    Spring工作流程描述       1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServle ...

  7. springmvc 运行原理 Spring ioc的实现原理 Mybatis工作流程 spring AOP实现原理

    SpringMVC的工作原理图: SpringMVC流程 . 用户发送请求至前端控制器DispatcherServlet. . DispatcherServlet收到请求调用HandlerMappin ...

  8. SpringMVC 工作流程

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/baidu_36697353/article/details/64444147 SpringMVC 工 ...

  9. Java Spring MVC工作流程

    本文是对 SpringMVC 工作流程的总结,自己一定要可以用语言描述. 名词解释: DispatcherServlet:前端控制器,是 SpringMVC 工作流程的中心,负责调用其他组件,在系统启 ...

随机推荐

  1. NSSCTF-finalrce

    菜狗的我打开题目之后,人都给我吓傻了,直接过滤的超出了我的认知  菜狗直接就枯了,这个题目其实是不难的,就是比较阴间的一个题目,审计代码,可以看到最后一行的代码"exec($url)&quo ...

  2. 财务数据分析工具的选择:Excel还是大数据BI?

    ​财务数据分析一般都采用什么工具?跟财务数据分析的哪些指标有关?要怎样展现财务数据间的紧密关联? 财务报表分析比较复杂,一般来说主要包括以下项目: 1. 趋势:在多个时间段内为财务报表中的关键项目创建 ...

  3. nmtui解决network-scripts目录下无网卡对应配置文件问题

    1.问题出现的原因设备先安装了操作系统,后插上网卡到设备,就会出现/etc/sysconfig/network-scripts目录下无该网卡对应配置文件的问题,但是ifconfig命令能看见系统给该网 ...

  4. WCF学习笔记——Day1:一个WCF demo

    Visual Studio2017,使用IIS托管.文中涉及一些WCF的基本概念,e.g.服务契约.托管等.可以先阅读<WCF服务编程>第一章. 1.新建一个WCF服务库(WCF Serv ...

  5. linux mailx 发送邮件到qq邮箱

    POP3/SMTP服务默认是开启的,没开启的点开启 然后点击生成授权码,发送消息,就会给出授权码了 yum install mailx # centos sudo apt-get install he ...

  6. VS 返回值被忽略的解决方法

    •问题 用 Visual Studio 编写 C++ 代码的时候,一旦用到 scanf , freopen 等函数的时候,编译器总会不合时宜的给你提示 "返回值被忽略",那么该如何 ...

  7. SQL:查询时给表起别名

    Q 有两个表student.score,查询前一个表的id.name列,后一个表的total列,查询结果通过两个表的id连接起来 要求 使用别名st和sc替换表名进行查询 A SELECT st.id ...

  8. WPS备份的位置

    C:\Users\Administrator\AppData\Roaming\kingsoft\office6\backup 也可以从左上图标->工具->备份管理->查看其它备份,直 ...

  9. C# 反编译工具之dnSpy

    下载地址:https://github.com/0xd4d/dnSpy/releases无需安装,和 ILSPY同门,感觉比ILSPY还强大 直接把dll拖拽到程序集资源管理器里面就可以啦

  10. vue--按需加载的3种方式(解决网页首次加载速度慢的问题)

    一.vue的异步组件加载 使用异步组件加载,打包的时候会将每个组件分开打包到不同的js文件中: {path: '/index', name: 'index', meta:{ title:'首页', r ...