Spring MVC工作流程图
 
图一
 
图二 
 
Spring工作流程描述
      1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;
      2. DispatcherServlet对请求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执行完成后,向DispatcherServlet 返回一个ModelAndView对象;
      6.  根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ;
      7. ViewResolver 结合Model和View,来渲染视图
      8. 将渲染结果返回给客户端。

最新文章

  1. 自定义委托类型 - .Net自带委托类型
  2. 数字信号处理实验(零)—— 一维声音信号处理和二维图像处理
  3. EasyUI文档学习心得
  4. RHEL6.2下挂载光驱安装软件
  5. C++ Bit Fields
  6. html笔记 仅适用于个人
  7. sgu 194 Reactor Cooling(有容量上下界的无源无汇可行流)
  8. Web网站与Web应用程序区别
  9. 【动态规划】【最长公共子序列】Vijos P1111 小胖的水果
  10. Recover a file even if it was not committed but it has to have been added when you use git reset head by mistake.
  11. 条件变量signal与unlock的顺序
  12. Head First设计模式之状态模式
  13. python如何玩“跳一跳”!(windows安桌版本请进!)
  14. 如何打开JSP文件/JS和JSP的区别/Servlet的本质是什么,是如何工作的?
  15. Scrum Mastery:有效利用组织的5个步骤
  16. TTL集成门电路
  17. Linux环境变量具体内容介绍
  18. 解决 webpack-dev-server 不能自动刷新的问题
  19. 以太坊客户端Ethereum Wallet与Geth区别简介
  20. Redis集群的主从切换研究

热门文章

  1. [翻译][MVC 5 + EF 6] 8:更新相关数据
  2. mysql与Navicat for MySQL的衔接配置问题【原创】
  3. mysql的1045解决方法
  4. 使用WebClient上传文件时的一些问题
  5. Android开发系列之SQLite
  6. 关闭一个winform窗体刷新另外一个
  7. JAVA String 类
  8. C语言基础知识-循环结构
  9. CoreText实现图文混排之点击事件-b
  10. 设置BootStrap导航条的高度