具体执行逻辑如下:

浏览器提交请求到中央调度器.

中央调度器将请求转给处理器映射器.

处理器映射器根据请求, 找到请求对应的处理器, 并将其封装为处理器执行链返回给中央调度器.

中央调度器根据处理器执行链中的处理器, 找到能够执行该处理器的适配器.

适配器调用执行处理器.

处理器将处理结果以及要跳转的视图封装到一个对象ModelAndView中, 并将其返回给处理器适配器.

适配器将结果返回给中央调度器.

中央调度器调用视图解析器, 将ModelAndView中的视图名封装为视图对象.

视图解析器将封装了的视图对象返回给中央处理器.

中央调度器调用视图对象, 让其渲染, 即进行数据填充, 形成响应对象.

中央调度器响应浏览器.

DispatcherServlet

中央调度器, 它用来调用诸如处理器映射器, 适配器, 视图解析器等组件处理用户请求.

中央调度器的存在降低了组件之间的耦合.

HandlerMapping

处理器映射器, 负责根据用户请求找到对应的Handler, 即处理器, 并将处理器封装为处理器执行链返回给中央调度器.

HandleAdaptor

适配器模式, 可以扩展适配器来对更多类型的处理器进行执行, 中央调度器根据不同的处理器自动选择适配器, 以执行处理器.

Handler

处理器, 即后端控制器. 在DispatcherServlet控制下Handler调用Service层对具体用户请求进行处理.

Handler一般涉及的是用户具体的业务请求, 充当MVC中的Controller.

ViewResolver

视图解析器, 负责将处理结果生成View视图, ViewResolver首先将逻辑视图名解析为物理视图名, 即具体页面地址.

再生成View视图对象, 最后将处理结果通过页面形式展现给用户.

SpringMVC中提供了多种View视图类型, 例如: JstlView, RedirectView等等.

https://www.cnblogs.com/xiaotie666/p/9347372.html

Java SpringMVC框架学习(三)springMVC的执行流程的更多相关文章

  1. Java之路(三) 控制执行流程

    Java的控制语句设计的关键字有if-else while do-while for return break和switch. Java虽然保留goto关键字,但不支持goto语句. 1.true和f ...

  2. Struts2框架学习(三) 数据处理

    Struts2框架学习(三) 数据处理 Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:Value ...

  3. 手写SpringMVC框架(三)-------具体方法的实现

    续接前文 手写SpringMVC框架(二)结构开发设计 本节我们来开始具体方法的代码实现. doLoadConfig()方法的开发 思路:我们需要将contextConfigLocation路径读取过 ...

  4. SpringMVC框架学习笔记(1)——HelloWorld

    搭建SpringMVC框架 1.添加jar包 jsp-api.jar servlet-api.jar jstl.jar commons-logging-1.1.1.jar spring-beans-4 ...

  5. (转)SpringMVC学习(三)——SpringMVC的配置文件

    http://blog.csdn.net/yerenyuan_pku/article/details/72231527 读者阅读过SpringMVC学习(一)——SpringMVC介绍与入门这篇文章后 ...

  6. Java集合框架学习(一)List

    先附一张Java集合框架图. 从上面的集合框架图可以看到,Java集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射.Coll ...

  7. JAVA并行框架学习之ForkJoin

    当硬件处理能力不能按照摩尔定律垂直发展的时候,选择了水平发展,多核处理器已经广泛应用.未来随着技术的进一步发展,可能出现成百上千个处理核心,但现有的程序运行在多核心处理器上并不能得到较大性能的提升,主 ...

  8. Java集合框架学习

    集合框架 集合框架的目标 该框架必须是高性能的.基本集合(动态数组,链表,树,哈希表)的实现必须是高效的. 该框架允许 不同类型的集合,以类似的方式工作,具有高度的互操作性. 对一个集合的扩展和适应必 ...

  9. 【深入理解JAVA虚拟机】第三部分.虚拟机执行子系统.4.类加载及执行子系统的案例与实战

    1.概述 在Class文件格式与执行引擎这部分中 : 用户不能控制的:Class文件以何种格式存储,类型何时加载. 如何连接,以及虚拟机如何执行字节码指令等都是由虚拟机直接控制的行为 用户能控制的:字 ...

  10. 【深入理解JAVA虚拟机】第三部分.虚拟机执行子系统.3.函数调用与执行

    这章原名叫“虚拟机字节码执行引擎”,实际就是讲的函数如何调用和执行的. 1.概述 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力, 其区别是物理机的执行引擎是直接建立在处理器. 硬 ...

随机推荐

  1. 基于约束的SQL攻击

    前言 值得庆幸的是如今开发者在构建网站时,已经开始注重安全问题了.绝大部分开发者都意识到SQL注入漏洞的存在,在本文我想与读者共同去探讨另一种与SQL数据库相关的漏洞,其危害与SQL注入不相上下,但却 ...

  2. MSSQL批量写入数据方案

    近来有一个项目Feature需要有批量写入数据的场景,正巧整理资料发现自己以前也类似实现的项目,在重构的同时把相关资料做了一个简单的梳理,方便大家参考. 循环写入(简单粗暴,毕业设计就这样干的)(不推 ...

  3. PAT甲级题解-1057. Stack (30)-树状数组

    不懂树状数组的童鞋,正好可以通过这道题学习一下树状数组~~百度有很多教程的,我就不赘述了 题意:有三种操作,分别是1.Push key:将key压入stack2.Pop:将栈顶元素取出栈3.PeekM ...

  4. Mac 绑定Gitlab或者GitHub帐号,从新生成公钥

    1.SSH(Secure Shell)是一种安全协议,在你的电脑与GitLab服务器进行通信时,我们使用SSH密钥(SSH Keys)认证的方式来保证通信安全. 2.创建 SSH密钥,并将密钥中的公钥 ...

  5. PAT----1001. A+B Format (20)解题过程

    1001. A+B Format (20) github链接 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B Calculate a + b and output t ...

  6. PAT 2016 数据的交换输出

    http://acm.hdu.edu.cn/showproblem.php?pid=2016 Problem Description 输入n(n<100)个数,找出其中最小的数,将它与最前面的数 ...

  7. 获取所有选中框的ids值

    var os = $("input[name='rec_ids[]']:checked"); var ids = []; os.each(function(i){ ids.push ...

  8. 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...

  9. Latex使用:在latex中添加算法模块

    在Miktex下有三个latex algorithm包,分别为:algorithm,algorithmic,algorithm2e三个,其中algorithm,algorithmic经常成套使用: l ...

  10. 防止短时间js 重复执行

    function debounce(fn, delay) { // 持久化一个定时器 timer let timer = null; // 闭包函数可以访问 timer return function ...