首页 > 其他分享 >Spring MVC工作 执行流程详解

Spring MVC工作 执行流程详解

时间:2022-11-10 23:32:25浏览次数:73  
标签:Spring MVC 视图 HandlerAdapter Handler 处理器 DispatcherServlet 详解 View

Spring MVC 执行流程

Spring MVC工作 执行流程详解_spring


用户点击某个请求路径,发起一个 HTTP request 请求,该请求会被提交到 DispatcherServlet(前端控制器)

由 DispatcherServlet 请求一个或多个 HandlerMapping(处理器映射器),并返回一个执行链(HandlerExecutionChain)

DispatcherServlet 将执行链返回的 Handler 信息发送给 HandlerAdapter(处理器适配器) HandlerAdapter 根据 Handler 信息找到并执行相应的 Handler(常称为 Controller)

Handler 执行完毕后会返回给 HandlerAdapter 一个 ModelAndView 对象(Spring MVC的底层对象,包括 Model 数据模型和 View 视图信息)

HandlerAdapter 接收到 ModelAndView 对象后,将其返回给 DispatcherServlet

DispatcherServlet 接收到 ModelAndView 对象后,会请求 ViewResolver(视图解析器)对视图进行解析 ViewResolver 根据 View 信息匹配到相应的视图结果,并返回给 DispatcherServlet

DispatcherServlet 接收到具体的 View 视图后,进行视图渲染,将 Model 中的模型数据填充到 View 视图中的 request 域,生成最终的 View(视图) 视图负责将结果显示到浏览器(客户端)

Spring MVC接口

Spring MVC 涉及到的组件有 DispatcherServlet(前端控制器)、HandlerMapping(处理器映射器)、HandlerAdapter(处理器适配器)、Handler(处理器)、ViewResolver(视图解析器)和 View(视图)。

1DispatcherServlet DispatcherServlet 是前端控制器,从图 1 可以看出,Spring MVC 的所有请求都要经过 DispatcherServlet 来统一分发。DispatcherServlet 相当于一个转发器或中央处理器,控制整个流程的执行,对各个组件进行统一调度,以降低组件之间的耦合性,有利于组件之间的拓展。

2HandlerMapping HandlerMapping 是处理器映射器,其作用是根据请求的 URL 路径,通过注解或者 XML 配置,寻找匹配的处理器(Handler)信息。

3HandlerAdapter HandlerAdapter 是处理器适配器,其作用是根据映射器找到的处理器(Handler)信息,按照特定规则执行相关的处理器(Handler)。

4Handler Handler 是处理器,和 Java Servlet 扮演的角色一致。其作用是执行相关的请求处理逻辑,并返回相应的数据和视图信息,将其封装至 ModelAndView 对象中。

5View Resolver View Resolver 是视图解析器,其作用是进行解析操作,通过 ModelAndView 对象中的 View 信息将逻辑视图名解析成真正的视图 View(如通过一个 JSP 路径返回一个真正的 JSP 页面)。

6View View 是视图,其本身是一个接口,实现类支持不同的 View 类型(JSP、FreeMarker、Excel 等)。 以上组件中,需要开发人员进行开发的是处理器(Handler,常称Controller)和视图(View)。通俗的说,要开发处理该请求的具体代码逻辑,以及最终展示给用户的界面。​​​​

标签:Spring,MVC,视图,HandlerAdapter,Handler,处理器,DispatcherServlet,详解,View
From: https://blog.51cto.com/u_15870498/5842354

相关文章

  • 【Redis】散列表(Hash)和列表(List)的运用和理解以及Hash和List应用场景对比详解
    一.散列表(hash)Redis哈希是字符串类型字段和值的映射表。哈希特别适合存储对象。Redis中的每个哈希可以存储232-1个键值对(超过40亿)。1.1基本操作RedisHset命令......
  • excel表格-TRANSPOSE函数详解
    效果图将A1:D1的内容转置为A2:A5操作步骤1、选中要转置后的表格区域2、手动输入=TRANSPOSE(),在括号中输入被转置的区域A1:D1,=TRANSPOSE(A1:D1)3、同时按ctrl......
  • SpringBoot07(springboot整合MyBatis)
    一、整体思路解析:二、步骤分析:1-搭建springboot的工程(在idea里面搭建,略)2-引入MyBatis的起步依赖,添加msql驱动<?xmlversion="1.0"encoding="UTF-8"?><projectxm......
  • SPI驱动详解
    前言最近研究在linux内核下,主机通过SPI与另外一个板卡通信,该板卡将收到的信息加密后又通过SPI给到主机。其实就是将另外一个板卡看作一个外置的SPI设备,更贴切来说就甚至......
  • Day07.2:Java流程控制详解
    Java流程控制用户交互Scanner我们可以通过Scanner类来获取用户的输入,电脑通过我们的输入,执行输入语,实现程序的输入输出基本语法Scannername=newScanner(System.in)......
  • 【博学谷学习记录】超强总结,用心分享|UnitTest单元测试框架详解
    1.介绍UnitTest框架是Python自带的一个单元测试框架,它不仅可以用来进行单元测试,还可用于Web、Appium、接口自动化测试用例的开发与执行。该测试框架可组织执行测试用......
  • 详解JVM如何处理异常
    无论你是使用何种编程语言,在日常的开发过程中,都会不可避免的要处理异常。今天本文将尝试讲解一些JVM如何处理异常问题,希望能够讲清楚这个内部的机制,如果对大家有所启发和帮......
  • Spring与Struts2的整合案例及XML配置的具体使用(四)
    东家蝴蝶西家飞,白骑少年今日归。愿,所有迷茫的人,都不再迷茫的,愿,所有努力工作的人,都可以得到应有的回报,愿,所有的人,都可以找到回家的方向,愿,再无苦痛,再无离别。上一章简单介绍......
  • Spring的包扫描开发与@Autowired与@Resource注解的区别(五)
    东家蝴蝶西家飞,白骑少年今日归。愿,所有迷茫的人,都不再迷茫的,愿,所有努力工作的人,都可以得到应有的回报,愿,所有的人,都可以找到回家的方向,愿,再无苦痛,再无离别。上一章简单介绍......
  • Spring整合Mybatis分析与编码
    Spring整合Mybatis分析与编码正文Mybatis在开发的过程中,必须要经过的步骤有数据表-实体类-实体类别名-mapper接口-mapper文件实现-mapper文件注册-mybatisAPI......