描述一下 DispatcherServlet 的工作流程 ?
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 的工作流程 ?的更多相关文章
- Hystrix工作流程解析
搭建Hystrix源码阅读环境 引入依赖 <dependency> <groupId>com.netflix.hystrix</groupId> <artif ...
- DispatcherServlet的工作原理
下面是DispatcherServlet的工作原理图,图片来源于网络. 下面是我从DispatcherServlet源码层面来分析其工作流程: 1.请求到达后,调用HandlerMapping来查找对 ...
- 2017.4.7 Sprng MVC工作流程描述图
图一: 图二: Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获: 2. Dispa ...
- 描述Spring Web MVC的工作流程
Spring Web MVC的共工作流程如下: 1.浏览器发出Spring mvc请求,请求给前端控制器 DispatcherServlet处理. 2.控制器通过HandlerMapping维护的请求 ...
- 第四次作业 描述HDFS体系结构、工作原理与流程
1.用自己的图,描述HDFS体系结构.工作原理与流程. 读数据的流程 2.伪分布式安装Hadoop.
- springmvc工作流程
Spring MVC工作流程图 图一 图二 Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServle ...
- springmvc 运行原理 Spring ioc的实现原理 Mybatis工作流程 spring AOP实现原理
SpringMVC的工作原理图: SpringMVC流程 . 用户发送请求至前端控制器DispatcherServlet. . DispatcherServlet收到请求调用HandlerMappin ...
- SpringMVC 工作流程
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/baidu_36697353/article/details/64444147 SpringMVC 工 ...
- Java Spring MVC工作流程
本文是对 SpringMVC 工作流程的总结,自己一定要可以用语言描述. 名词解释: DispatcherServlet:前端控制器,是 SpringMVC 工作流程的中心,负责调用其他组件,在系统启 ...
随机推荐
- Elasticsearch 第九篇:集群配置与搭建
h2.post_title { background-color: rgba(43, 102, 149, 1); color: rgba(255, 255, 255, 1); font-size: 1 ...
- linux的分区方法
linux分区方法,不同的人有不同的方法,反正没有统一的方法.在分区方面,我觉得根据自己的实际情况来分是最好的.玩linux也有好几年了,下面说一下,我在分区方面的一些经验. 一,个人用 如果是个人用 ...
- 【C# .Net GC】GC内存分配规则
GC 管理内存分配和回收 公共语言运行时的垃圾回收器为应用程序管理内存的分配和释放. https://docs.microsoft.com/zh-cn/dotnet/standard/automati ...
- 释放linux内存中的cache缓存
echo 3 > /proc/sys/vm/drop_caches 记一次 经常用 exp 导出oracle全量数据库,发现linux内存一直在减小没有释放,即使 oracle重启也不行,只有 ...
- Dubbo服务如何优雅的校验参数
一.背景 服务端在向外提供接口服务时,不管是对前端提供HTTP接口,还是面向内部其他服务端提供的RPC接口,常常会面对这样一个问题,就是如何优雅的解决各种接口参数校验问题? 早期大家在做面向前端提供的 ...
- javascript订阅模式浅析和基础实例
前言 最近在开发redux或者vux的时候,状态管理当中的createStore,以及我们在组件中调用的dispatch传递消息给状态管理中心,去处理一些操作的时候,有些类似我们常见到订阅模式 于是写 ...
- 二级py--day4 数据结构与算法篇
二级py--day4 数据结构与算法篇 1.算法的基本特征:可行性.确定性.有穷性.拥有足够的情报 2.算法的设计要求包括效率与低存储量,既要考虑算法的时间复杂度和空间复杂度 3.算法的优劣:与算法描 ...
- tp5 终端命令总结
D:\PHP\phpstudy_pro\WWW\1906A\tp5>php think build --module examTest Successed D:\PHP\phpstudy_pro ...
- angular1使用echarts2绘制图标
一.绘制柱状图:直接上代码 1.首先下载echarts-all文件(这里就不赘述了),然后是创建一个bar.js及内容如下: bar.js内容: var app = require("../ ...
- 微信网页JSDK接口-wx.chooseImage问题
wx.chooseImage({count: 1, // 默认9sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有sourceTy ...