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. mysql安装后,过一段时间,在命令行无法启动

    这种问题主要是MYsql没有启动起来,可以在启动管理中开启mysql此服务即可解决

  3. Pentest Box之疑难杂症(解决)

    问题一:metasploit连不上数据库怎么破???? 1.首先找到配置路径:F:\bin\customtools (F代表:pentest box整个路径) 2. 编辑 customaliases ...

  4. [数据结构]一元n次多项式的抽象数据类型

    一.问题描述 一元n次多项式是代数学中经常出现的代数式,对于一元n次多项式的操作有很重要的实际意义.由于一个一元n次多项式最多有n+1项,且互不相关,所以可以用一个线性表来保存一个多项式,从前至后次数 ...

  5. 在使用Vant中Uploader过程中遇到的坑:图片状态更改等

    图片允许多张上传,在使用file.status时总是不生效,直接跳转到成功状态,后来尝试加入了定时器:同时多张上传时采用判断数组的方式 <van-uploader accept="*& ...

  6. 厌倦了excel绘制地图的繁琐操作,来看看这款可视化地图神器!

    在现代生活中,地图无论对于社会主义建设.国防.运输以至旅行都是不可缺少的.要学会正确地使用地图,必须学会如何绘制地图. 最近我发现了一款好用的可视化地图神器,比excel做地图可视化好一万倍!其实呢, ...

  7. JavaSE-万字长文-加载时间长-小白文

    Java语法规范 所有的Java语句必须以;结尾! 无论是().[]还是{},所有的括号必须一一匹配! 主方法的代码只能写在{}中! Java基础语法(面向过程) 在学习面向对象之前,我们需要了解面向 ...

  8. linux(Centos7)安装mysql

    查看系统环境 [root@localhost html]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) CentOS 7 ...

  9. 设计模式(一) 灵活的javaScript语言

    首先先看几个函数: function checkName () {){}// 验证姓名 function checkEmail() {} // 验证邮箱 function checkPassword( ...

  10. TypeError

    1.only size-1 arrays can be converted to Python scalars 问题来源:需要把一个float数组A转为int,于是直接在代码中写了 B=int(A), ...