Spring MVC 相对于前面的章节算是比较简单的,我们首先引用《Spring in Action》上的一张图来了解Spring MVC 的核心组件和大致处理流程:

从上图中看到

①、DispatcherServlet 是SpringMVC 中的前端控制器(Front Controller),负责接收Request 并将Request 转发给对应的处理组件。

② 、HanlerMapping 是SpringMVC 中完成url 到Controller 映射的组件。DispatcherServlet 接收Request, 然后从HandlerMapping 查找处理Request 的Controller。

③、Controller 处理Request,并返回ModelAndView 对象,Controller 是SpringMVC中负责处理Request 的组件(类似于Struts2 中的Action),ModelAndView 是封装结果视图的组件。

④、⑤、⑥视图解析器解析ModelAndView 对象并返回对应的视图给客户端。

在前面的章节中我们已经大致了解到,容器初始化时会建立所有url 和Controller 中的Method 的对应关系,保存到HandlerMapping 中,用户请求是根据Request 请求的url 快速定位到Controller 中的某个方法。在Spring 中先将url 和Controller 的对应关系,保存到Map<url,Controller>中。Web 容器启动时会通知Spring 初始化容器(加载Bean 的定义信息和初始化所有单例Bean),然后SpringMVC 会遍历容器中的Bean,获取每一个Controller 中的所有方法访问的url,然后将url 和Controller 保存到一个Map中;这样就可以根据Request 快速定位到Controller,因为最终处理Request 的是Controller 中的方法,Map 中只保留了url 和Controller 中的对应关系,所以要根据Request 的url 进一步确认Controller 中的Method,这一步工作的原理就是拼接Controller 的url(Controller 上@RequestMapping 的值) 和方法的url(Method 上@RequestMapping 的值),与request 的url 进行匹配,找到匹配的那个方法;确定处理请求的Method 后,接下来的任务就是参数绑定,把Request 中参数绑定到方法的形式参数上,这一步是整个请求处理过程中最复杂的一个步骤。

初探Spring MVC 请求处理流程相关推荐

  1. java处理请求的流程_Java Spring mvc请求处理流程详解

    Spring mvc请求处理流程详解 前言 spring mvc框架相信很多人都很熟悉了,关于这方面的资料也是一搜一大把.但是感觉讲的都不是很细致,让很多初学者都云里雾里的.本人也是这样,之前研究过, ...

  2. Spring MVC请求处理流程分析

    2019独角兽企业重金招聘Python工程师标准>>> 一.简介 Spring MVC框架在工作中经常用到,配置简单,使用起来也很方便,很多书籍和博客都有介绍其处理流程,但是,对于其 ...

  3. Spring MVC请求处理流程

    从web.xml中 servlet的配置开始, 根据servlet拦截的url-parttern,来进行请求转发 Spring MVC工作流程图 图一 图二  Spring工作流程描述 1. 用户向服 ...

  4. java request 处理过程_小猿圈Java开发之从代码看spring mvc请求处理过程

    原标题:小猿圈Java开发之从代码看spring mvc请求处理过程 Java作为编程界的常青树,有自己生存的独到之处,小猿圈java讲师今天就分享一个关于从代码看spring mvc请求处理过程,通 ...

  5. Spring MVC 请求处理过程。你这样回答保证通过面试!

    前言 SpringMVC 请求处理相信大家都很熟悉了,本篇主要是基于 SpringMVC 处理请求的流程来阅读并调试源码,以及解决几个仅靠流程图无法解释的问题. 关于 Spring MVC 的流程思维 ...

  6. spring MVC请求处理类注解属性详解

    spring MVC请求处理类注解属性详解

  7. ASP.Net请求处理机制初步探索之旅 - Part 5 ASP.Net MVC请求处理流程

    开篇:上一篇我们了解了在WebForm模式下一个Page页面的生命周期,它经历了初始化Init.加载Load以及呈现Render三个重要阶段,其中构造了页面控件树,并对页面控件树进行了大量的递归操作, ...

  8. Spring MVC控制流程与简易配置方案

    2019独角兽企业重金招聘Python工程师标准>>> 整体流程核心原理概述: 1.       用户发送请求给服务器.url:user.do (1)user.do为页面请求. 2. ...

  9. 详述 Spring MVC 启动流程及相关源码分析

    文章目录 Web 应用部署初始化过程(Web Application Deployement) Spring MVC 启动过程 Listener 的初始化过程 Filter 的初始化 Servlet ...

最新文章

  1. HDU.4903.The only survival(组合 计数)
  2. 如何规划创建一个家庭实验室
  3. 产品经理的成长历程(宏观)
  4. 科大星云诗社动态20210818
  5. P1330 封锁阳光大学
  6. 如何在 Cypress 测试代码中屏蔽(Suppress)来自应用代码报出的错误消息
  7. oracle存储过程季度方法,Oracle存储过程、触发器实现获取时间段内周、月、季度的具体时间...
  8. Android 系统性能优化(74)---如何减少lowmemory的发生几率
  9. Sphinx/Coreseek 4.1 跑 buildconf.sh 一个错误,无法生成configure档
  10. 数值分析(第五版) 第九章知识点总结
  11. ios 简单的计时器游戏 NSUserDefaults NSDate NSTimer
  12. Hadoop hdfs上传文件报错解决
  13. 标准工时管理软件VIOOVI助力企业数字化转型
  14. casue usb kb 找不到驱动程序_手把手教你安装喷墨打印机驱动程序
  15. verilog十二进制计数器
  16. 拉格朗日法线性规划求解
  17. Android 仿微信实现语音聊天功能
  18. uni-app 保存图片到本地相册
  19. 用于传感器互操作性问题的指纹匹配系统的大规模研究
  20. Google Dremel 原理 – 如何能 3 秒分析 1PB

热门文章

  1. 阿里云CentOS7.3搭建多用户私有git服务器(从安装git开始)
  2. yum安装apache及问题解决
  3. postman 变量
  4. 一周学会Mootools 1.4中文教程:(7)汇总收尾
  5. ready与load的区别
  6. halcon基本,vb,vc连接halcon读取图像,视频
  7. [asp.net] 获取网页访问来路的几种方法
  8. VGA timing information
  9. mysql 中模糊查询的四种用法介绍
  10. C#流程控制语句--跳转语句(break,continue,goto,return,)