SpringMVC是隶属于Spring Web中的一部分, 属于表现层的框架.

其使用了MVC架构模式的思想, 将Web层进行职责解耦, 使用请求-响应模型简化Web开发

SpringMVC通过中央调度器DispatcherServlet,来调用MVC的三大件:Controller、Model、View。

保证MVC的每一个组件只与DispatcherServlet耦合, 彼此之间独立运行, 降低程序的耦合性。

具体执行逻辑如下: 

  1. 浏览器提交请求到中央调度器.
  2. 中央调度器将请求转给处理器映射器.
  3. 处理器映射器根据请求, 找到请求对应的处理器, 并将其封装为处理器执行链返回给中央调度器.
  4. 中央调度器根据处理器执行链中的处理器, 找到能够执行该处理器的适配器.
  5. 适配器调用执行处理器.
  6. 处理器将处理结果以及要跳转的视图封装到一个对象ModelAndView中, 并将其返回给处理器适配器.
  7. 适配器将结果返回给中央调度器.
  8. 中央调度器调用视图解析器, 将ModelAndView中的视图名封装为视图对象.
  9. 视图解析器将封装了的视图对象返回给中央处理器.
  10. 中央调度器调用视图对象, 让其渲染, 即进行数据填充, 形成响应对象.
  11. 中央调度器响应浏览器.

DispatcherServlet

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

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

HandlerMapping

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

HandleAdaptor

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

Handler

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

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

ViewResolver

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

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

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

Spring MVC执行流程的更多相关文章

  1. 一文读懂Spring MVC执行流程

    说到Spring MVC执行流程,网上有很多这方面的文章介绍,但是都不太详细,作为一个初学者去读会有许多不理解的地方,今天这篇文章记录一下我学习Spring MVC的心得体会 话不多说,先上图:   ...

  2. Java——一文读懂Spring MVC执行流程

    说到Spring MVC执行流程,网上有很多这方面的文章介绍,但是都不太详细,作为一个初学者去读会有许多不理解的地方,今天这篇文章记录一下我学习Spring MVC的心得体会 话不多说,先上图: Sp ...

  3. Spring MVC执行的流程

    1.Spring MVC应用的开发步骤 a.在web.xml文件中定义前端控制器DispatcherServlet来拦截用户请求.由于Web应用是基于请求/响应架构的应用,所以 不管哪个MVC Web ...

  4. spring mvc处理流程概述

    大部分Java应用都是Web应用,展现层是Web应用不可忽略的重要环节.Spring为展现层提供了一个优秀的Web框架-Spring MVC.和众多其他Web框架一样,它基于MVC设计理念,此外,它采 ...

  5. (4.1)Spring MVC执行原理和基于Java的配置过程

    一.Spring MVC执行原理和基于Java配置的配置过程 (一)Spring MVC执行过程,大致为7步. 所有的请求都会经过Spring的一个单例的DispacherServlet. Dispa ...

  6. Spring MVC 编程流程步骤

    Spring MVC 编程流程步骤 1. 建立Maven工程 2. 添加Spring MVC依赖 <dependencies> <dependency> <groupId ...

  7. spring Mvc 执行原理 及 xml注解配置说明 (六)

    Spring MVC 执行原理 在 Spring Mvc 访问过程里,每个请求都首先经过 许多的过滤器,经 DispatcherServlet 处理; 一个Spring MVC工程里,可以配置多个的 ...

  8. Spring MVC执行原理和基于Java的配置过程

    一.Spring MVC执行原理和基于Java配置的配置过程 (一)Spring MVC执行过程,大致为7步. 所有的请求都会经过Spring的一个单例的DispacherServlet. Dispa ...

  9. Spring MVC简介 2.5 Spring MVC执行的流程

    package org.fkit.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http ...

随机推荐

  1. 排序算法(Java实现)

    这几天一直在看严蔚敏老师的那本<数据结构>那本书.之前第一次学懵懵逼逼,当再次看的时候,发觉写的是非常详细,非常的好. 那就把相关的排序算法用我熟悉的Java语言记录下来了.以下排序算法是 ...

  2. WordPress 实现附件上传自动重命名但不改变附件标题

    WordPress 上传媒体文件时,默认会保持文件名不变.如果上传文件名中包含中文字符,则会造成部分浏览器显示的文件 URL 疑似乱码甚至无法访问.网上流行较广的是通过注册  wp_handle_up ...

  3. Yii2-admin的详细使用教程

    Yii2-admin的详细使用教程 参考:http://www.yiichina.com/tutorial/571    http://www.kancloud.cn/curder/yii/24775 ...

  4. Apache服务器安装-apache已经卸载,如何删除注册在系统的服务

    cmd进入windows的命令行客户端,执行:sc delete apache 注意:以管理员的身份删除,同理,此方法也可以删除其他类似的服务.例如sc delete MongoDB.

  5. Gitlab_服务器安装配置

    1:开放防火墙端口 1.  sudo yum install curl openssh-server openssh-clients postfix cronie -y  sudo service p ...

  6. php留言板

    这个小项目的学习,就这样结束啦.由于过程中需要使用到js,这个目前还是感觉不会.之前的分析还是不太懂的.现在心里还是有点迷茫.什么都是照着葫芦画瓢. 我的拥有自己的东西才行.

  7. python 下划线--完美解释

    Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划 ...

  8. linux云计算(keystone swift cinder配置)

    独立安装openstack组件 准备服务器,为安装openstack的服务器加3块额外硬盘 qemu-img create -f qcow2 rh71.img 20G qemu-img create ...

  9. 网络基础tcp/ip协议一

    计算机网络: 硬件方面:通过线缆将网络设备和计算机连接起来 软件方面:操作系统,应用软件,应用程序通过通信线路互连 实现资源共享,信息传递 计算机网络的功能: 数据通信 资源共享 增加可靠性 提高系统 ...

  10. 实战DeviceIoControl 之四:获取硬盘的详细信息

    Q 用IOCTL_DISK_GET_DRIVE_GEOMETRY或IOCTL_STORAGE_GET_MEDIA_TYPES_EX只能得到很少的磁盘参数,我想获得包括硬盘序列号在内的更加详细的信息,有 ...