描述一下 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 工作流程的中心,负责调用其他组件,在系统启 ...
随机推荐
- NSSCTF-finalrce
菜狗的我打开题目之后,人都给我吓傻了,直接过滤的超出了我的认知 菜狗直接就枯了,这个题目其实是不难的,就是比较阴间的一个题目,审计代码,可以看到最后一行的代码"exec($url)&quo ...
- mysql安装后,过一段时间,在命令行无法启动
这种问题主要是MYsql没有启动起来,可以在启动管理中开启mysql此服务即可解决
- Pentest Box之疑难杂症(解决)
问题一:metasploit连不上数据库怎么破???? 1.首先找到配置路径:F:\bin\customtools (F代表:pentest box整个路径) 2. 编辑 customaliases ...
- [数据结构]一元n次多项式的抽象数据类型
一.问题描述 一元n次多项式是代数学中经常出现的代数式,对于一元n次多项式的操作有很重要的实际意义.由于一个一元n次多项式最多有n+1项,且互不相关,所以可以用一个线性表来保存一个多项式,从前至后次数 ...
- 在使用Vant中Uploader过程中遇到的坑:图片状态更改等
图片允许多张上传,在使用file.status时总是不生效,直接跳转到成功状态,后来尝试加入了定时器:同时多张上传时采用判断数组的方式 <van-uploader accept="*& ...
- 厌倦了excel绘制地图的繁琐操作,来看看这款可视化地图神器!
在现代生活中,地图无论对于社会主义建设.国防.运输以至旅行都是不可缺少的.要学会正确地使用地图,必须学会如何绘制地图. 最近我发现了一款好用的可视化地图神器,比excel做地图可视化好一万倍!其实呢, ...
- JavaSE-万字长文-加载时间长-小白文
Java语法规范 所有的Java语句必须以;结尾! 无论是().[]还是{},所有的括号必须一一匹配! 主方法的代码只能写在{}中! Java基础语法(面向过程) 在学习面向对象之前,我们需要了解面向 ...
- linux(Centos7)安装mysql
查看系统环境 [root@localhost html]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) CentOS 7 ...
- 设计模式(一) 灵活的javaScript语言
首先先看几个函数: function checkName () {){}// 验证姓名 function checkEmail() {} // 验证邮箱 function checkPassword( ...
- TypeError
1.only size-1 arrays can be converted to Python scalars 问题来源:需要把一个float数组A转为int,于是直接在代码中写了 B=int(A), ...