初探Spring MVC 请求处理流程
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 请求处理流程相关推荐
- java处理请求的流程_Java Spring mvc请求处理流程详解
Spring mvc请求处理流程详解 前言 spring mvc框架相信很多人都很熟悉了,关于这方面的资料也是一搜一大把.但是感觉讲的都不是很细致,让很多初学者都云里雾里的.本人也是这样,之前研究过, ...
- Spring MVC请求处理流程分析
2019独角兽企业重金招聘Python工程师标准>>> 一.简介 Spring MVC框架在工作中经常用到,配置简单,使用起来也很方便,很多书籍和博客都有介绍其处理流程,但是,对于其 ...
- Spring MVC请求处理流程
从web.xml中 servlet的配置开始, 根据servlet拦截的url-parttern,来进行请求转发 Spring MVC工作流程图 图一 图二 Spring工作流程描述 1. 用户向服 ...
- java request 处理过程_小猿圈Java开发之从代码看spring mvc请求处理过程
原标题:小猿圈Java开发之从代码看spring mvc请求处理过程 Java作为编程界的常青树,有自己生存的独到之处,小猿圈java讲师今天就分享一个关于从代码看spring mvc请求处理过程,通 ...
- Spring MVC 请求处理过程。你这样回答保证通过面试!
前言 SpringMVC 请求处理相信大家都很熟悉了,本篇主要是基于 SpringMVC 处理请求的流程来阅读并调试源码,以及解决几个仅靠流程图无法解释的问题. 关于 Spring MVC 的流程思维 ...
- spring MVC请求处理类注解属性详解
spring MVC请求处理类注解属性详解
- ASP.Net请求处理机制初步探索之旅 - Part 5 ASP.Net MVC请求处理流程
开篇:上一篇我们了解了在WebForm模式下一个Page页面的生命周期,它经历了初始化Init.加载Load以及呈现Render三个重要阶段,其中构造了页面控件树,并对页面控件树进行了大量的递归操作, ...
- Spring MVC控制流程与简易配置方案
2019独角兽企业重金招聘Python工程师标准>>> 整体流程核心原理概述: 1. 用户发送请求给服务器.url:user.do (1)user.do为页面请求. 2. ...
- 详述 Spring MVC 启动流程及相关源码分析
文章目录 Web 应用部署初始化过程(Web Application Deployement) Spring MVC 启动过程 Listener 的初始化过程 Filter 的初始化 Servlet ...
最新文章
- HDU.4903.The only survival(组合 计数)
- 如何规划创建一个家庭实验室
- 产品经理的成长历程(宏观)
- 科大星云诗社动态20210818
- P1330 封锁阳光大学
- 如何在 Cypress 测试代码中屏蔽(Suppress)来自应用代码报出的错误消息
- oracle存储过程季度方法,Oracle存储过程、触发器实现获取时间段内周、月、季度的具体时间...
- Android 系统性能优化(74)---如何减少lowmemory的发生几率
- Sphinx/Coreseek 4.1 跑 buildconf.sh 一个错误,无法生成configure档
- 数值分析(第五版) 第九章知识点总结
- ios 简单的计时器游戏 NSUserDefaults NSDate NSTimer
- Hadoop hdfs上传文件报错解决
- 标准工时管理软件VIOOVI助力企业数字化转型
- casue usb kb 找不到驱动程序_手把手教你安装喷墨打印机驱动程序
- verilog十二进制计数器
- 拉格朗日法线性规划求解
- Android 仿微信实现语音聊天功能
- uni-app 保存图片到本地相册
- 用于传感器互操作性问题的指纹匹配系统的大规模研究
- Google Dremel 原理 – 如何能 3 秒分析 1PB
热门文章
- 阿里云CentOS7.3搭建多用户私有git服务器(从安装git开始)
- yum安装apache及问题解决
- postman 变量
- 一周学会Mootools 1.4中文教程:(7)汇总收尾
- ready与load的区别
- halcon基本,vb,vc连接halcon读取图像,视频
- [asp.net] 获取网页访问来路的几种方法
- VGA timing information
- mysql 中模糊查询的四种用法介绍
- C#流程控制语句--跳转语句(break,continue,goto,return,)