springmvc三十二:spring mvc的运行流程
1. 所有的请求,前端控制器(DispatcherServlet)收到请求,调用doDispatch进行处理
2. 根据HandlerMapping中保存的请求映射信息找到,处理当前请求的,处理器执行链(包含了拦截器)。
3. 根据当前处理器找到他的HandlerAdapter(适配器)
4. 拦截器的preHandle方法先执行
5. HandlerAdapter(适配器)执行目标方法,并返回ModelAndView
1). ModelAttribute注解标注的方法提前运行
2). 执行目标方法的时候(确定目标方法用的参数)
1). 参数有注解
2). 没有注解
1). 看是否Model,Map以及其他的
2). 如果是自定义类型
1). 从隐含模型中看有没有,如果有就从隐含模型中拿
2). 如果没有,再看是否SessionAttributes标注的属性,如果是从Session中拿,如果拿不到就会跑出异常.
3). 以上两种都不是,就利用反射创建对象
6. 拦截器的postHandle执行。
7. 处理结果(页面渲染流程)
1). 如果有异常使用异常解析器处理异常; 处理完后,还会返回ModelAndview
2). 调用render进行页面渲染。
1). 视图解析器根据视图名得到视图对象
2). 视图对象调用render方法
3). 执行拦截器的afterCompletion。
springmvc三十二:spring mvc的运行流程相关推荐
- SpringMVC系列(十四)Spring MVC的运行流程
Spring MVC的运行流程图: 1.首先看能不能发送请求到Spring MVC的DispatcherServlet的url-pattern 2.如果能发送请求,就看在Spring MVC中是否存在 ...
- (转)SpringMVC学习(十二)——SpringMVC中的拦截器
http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...
- python建站部署_SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台...
SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台 一.概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源 ...
- tensorflow学习笔记(三十二):conv2d_transpose (解卷积)
tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...
- OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己
OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...
- NeHe OpenGL第三十二课:拾取游戏
NeHe OpenGL第三十二课:拾取游戏 拾取, Alpha混合, Alpha测试, 排序: 这又是一个小游戏,交给的东西会很多,慢慢体会吧 欢迎来到32课. 这课大概是在我所写作已来最大的一课 ...
- 计算机网络(三十二)网络管理
计算机网络(三十二)网络管理 1.SNMP 2.MIB 3.RMON 1.SNMP 是一款基于UDP/IP的协议 . 在TCP/IP的网络管理中可以使用SNMP(Simple Network Mana ...
- 【Visual C++】游戏开发笔记三十二 浅墨DirectX提高班之一 DirectX大局观认知篇
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8172615 作者:毛星云(浅 ...
- 七日杀16.1 服务器修改器,七日杀三十二项32位修改器_七日杀 a16.1b1多功能三十二项修改器-66街机网...
资源说明: 七日杀 a16.1b1多功能三十二项修改器32位[潇潇蓝龙],由"潇潇蓝龙"制作,一款全功能修改器,基本上是全能力开关,支持任意调整生物伤害.方块距离.生物距离.体力消 ...
最新文章
- SpringBoot源码分析之@Scheduled
- Linux之父为过去的言行道歉,宣布离开社区反思
- Android自定义Adapter的ListView的思路及代码
- Codeforces 777E:Hanoi Factory(贪心+栈)
- 应用交付老兵眼中的Envoy, 云原生时代下的思考
- 信息学奥赛C++语言:等级化的成绩
- 利用支持MicroPython的TPYBoard开发板自制PM2.5检测仪(萝卜教育学科式编程)
- 教育资源数字化 计算机和通讯,《计算机网络技术课程数字化资源开发研究》.doc...
- 数学建模-4.拟合算法
- celery java_Celery(分布式任务队列) 的使用方法总结
- 计算机与科学 研究生考试内容,计算机科学与技术考研考哪些科目 备考技巧有哪些...
- PostgreSQL13 安装
- 【世语纠正】吾生也有涯,而知也无涯丶本意知识太多,没必要都去
- Hand Crafted 特征 PK 纯学习的特征提取方法
- 电子元器件工厂的金蝶ERP与赛意WMS系统数据集成平台进行对接
- 美国签证和加拿大签证申请及自驾游攻略合辑
- AVPro Movie Capture☀️一、一款U3D录屏插件介绍
- 牛客-郊区春游(状态压缩dp)(java)(c++)
- 如何使用python AI快速比对两张人脸图像?
- MYSQL----innoDB存储引擎
热门文章
- 【BZOJ1294】[SCOI2009]围豆豆(动态规划,状压)
- 【XSY2719】prime 莫比乌斯反演
- 02027_线程池练习:返回两个数相加的结果
- iOS 从实际出发理解多线程
- Matlab图像处理教程
- 【在还原SQL Server数据库时发生对于服务器“XXX”操作系统错误】很实用的解决方案...
- WCF duplex service + silverlight 聊天代码
- ExtJS2.0实用简明教程 - Column列布局
- 官方文档:Office VBA 参考
- BZOJ1257 [CQOI2007]余数之和