简单讲一下SpringMVC的执行流程?

简介:

流程示意图



wKiom1iuq-azvywYAAFn9UG2-gE708.jpg-wh_50

 

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

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

 3. DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法

(这里将去访问web.xml 中的数据)

   4.  提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:

      HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息

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

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

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

      5.  Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象;

      6.  根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ;

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

      8. 将渲染结果返回给客户端。

 

面试:

  1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获(捕获)

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

3、 DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。 提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller), Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象(执行handler)

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

5、通过ViewResolver 结合Model和View,来渲染视图,DispatcherServlet 将渲染结果返回给客户端。(渲染返回

 

快速记忆技巧:

核心控制器捕获请求、查找Handler、执行Handler、选择ViewResolver,通过ViewResolver渲染视图并返回





      本文转自建波李 51CTO博客,原文链接:http://blog.51cto.com/jianboli/1900650 ,如需转载请自行联系原作者







相关文章
|
6月前
|
前端开发
SpringMVC的执行流程
SpringMVC的执行流程
|
2月前
|
XML Java 应用服务中间件
springMVC01,springMVC的执行流程【第一个springMVC例子(XML配置版本):HelloWorld】
通过一个HelloWorld实例,介绍了SpringMVC的基本概念、执行流程,并详细讲解了如何创建和配置第一个SpringMVC项目(基于XML)。
springMVC01,springMVC的执行流程【第一个springMVC例子(XML配置版本):HelloWorld】
|
4月前
|
JSON 前端开发 Java
一文带你深入理解SpringMVC的执行原理
【7月更文挑战第1天】阿里云产品初体验 SpringMVC的执行原理 本文分析的问题:文件上传的请求的处理、跨域的处理、是怎么找到目标方法的、目标方法的执行、目标方法参数的封装、返回值的处理、拦截器的执行、中间出现异常时的处理 涉及组件:文件上传解析器、跨域处理器、处理器映射器、处理器注册中心、处理器执行链、处理器适配器、参数解析器、数据绑定器、类型转换器、返回值处理器、内容协商管理器、消息转换器、异常解析器、
|
6月前
|
XML 存储 JSON
SpringMVC执行流程
SpringMVC执行流程
33 0
|
6月前
|
设计模式 开发框架 前端开发
SpringMVC原理分析 | Hello程序
SpringMVC原理分析 | Hello程序
41 0
|
前端开发 Java
springMVC执行流程详解
springMVC执行流程详解
131 0
springMVC执行流程详解
|
存储 JSON 前端开发
你知道 SpringMVC的 执行流程 吗?
你知道 SpringMVC的 执行流程 吗?
115 0
|
前端开发 Java 调度
springMVC执行流程
springMVC执行流程
114 0
|
XML 前端开发 调度
SpringMVC的执行流程知道嘛
SpringMVC的执行流程知道嘛
56 0
|
存储 前端开发 Java
二.SpringMVC源码剖析-SpringMVC执行流程
上一篇文章写得是SpringMVC组件初始化,这篇文章我们来探讨一下SpringMVC的执行流程