SpringMVC第三阶段:源码解析SpringMVC如何调用Controller目标方法

news2024/11/19 2:19:29

源码解析SpringMVC如何调用Controller目标方法:

浏览器如何访问到Controller目标方法.

1、所有请求进入时候,会先进入org.springframework.web.servlet.DispatcherServlet前端控制器的doDispatch() 方法

在这里插入图片描述

2 、在 1016 行 getHandler() 方法中,会通过请求的资源路径 /hello 找到 对应的 XxxController#xxx() 方法返回.

在这里插入图片描述

我们叫业务处理方法叫Handler 。

3、在 1023 行 getHandlerAdapter () 方法获取 handler 的适配器( 它用来执行业务方法 )

在这里插入图片描述

4、在 1040 行 ha.handle() 方法用于调用业务方法执行 ( 通过反射调用 )

在这里插入图片描述

5、请求流程总结

在这里插入图片描述

首先请求会先进入 前端控制器 DispatcherServlet .
前端控制器调用 doDispatch() 方法进行请求的分发处理
如何分发请求?
通过请求的资源路径.找到对应的 Controller#xxxx() 业务方法
最后通过反射调用目标方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/541640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【51单片机】万年历功能的数字时钟+倒计时 Proteus仿真 普中板子可用

// 硬件:DS1302、按键、LCD1602、无源蜂鸣器 // 1、具有万年历功能的数字时钟 (本世纪100年通用),能够正确的显示年、月、日、时、分、秒 // 2、按键设置时间(校时) // 3、24小时内至少可设置3个闹钟,并具有不同的闹钟铃声。每个闹钟可以选择…

[链表OJ题 7] 环形链表

目录 题目来源: 代码实现: 思路分析: 实现过程: 题目来源: 力扣 141. 环形链表 题目描述 代码实现: bool hasCycle(struct ListNode* head) {struct ListNode* fast head, * slow head;while (fas…

为什么更新了 DNS 记录不生效?

我们在上网时如果想要访问到另一台机器上的内容,通常只需要直接输入一串地址,例如:www.upyun.com,就能够准确访问到自己想要访问的网站。但是实际上这只是方便我们记忆的字符形式网络标识,真正让我们的机器和另一台机器…

C语言深度解析--函数

函数 函数的定义: 函数,又称为子程序,是一个大型程序中的某部分代码,由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码,具备相对独立性。 一般会有输入参数并有返回值,提供…

关于江苏专转本的十大真相,值得一看

【真相1】专转本考试题主要是大学相关科目的骨干老师出的。他们较长时间从事相应课程教学,专业领域较宽,学术造诣较高。具有副高及以上职称,年龄—般在55周岁以下。VX:hhkb5200【真相2】专转本考试题"紧扣《考试大纲》,大家要…

C++11 新特性

文章目录 🍪统一列表初始化🍪左值引用,右值引用🥛概念和作用🥛使用场景 🍪完美转发🍪可变参数模板 C11是C的一次大更新,出现了很多实用的语法和特性,所以我们很有必要学习…

[网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集

[网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集 XSS(Stored)-low level源代码姿势基于Message板块基于Name板块 XSS(Stored)-medium level源代码姿势双写绕过大小写绕过Xss标签绕过 XSS(Stored)-high level源代码姿势:Xss标签绕过 XSS(S…

汇编学习教程:灵活寻址(四)

引言 在上篇博文中,我们学习了 [bxsi] 的灵活寻址形式,由此讲解了汇编中的多重循环实现。那么本篇博文中,我们将继续学习灵活寻址其他实现形式。 本次学习从一道编程案例开始学起。 编程示例如下: assume cs:code,ds:datadata…

【Jmeter第二章】将Jmeter界面切换为中文显示

1、Jmeter临时切换为中文显示 注意:上面的配置只能保证本次运行是中文,如果要永久中文,需要修改Jmeter的配置文件 2、通过修改Jmeter配置文件设置为中文显示 1、在 Jmeter/bin目录下,找到:jmeter.properties 文件 2…

K_A39_012 基于STM32驱动W25Q32 模块读写数据 串口+OLED0.96显示

K_A39_012 基于STM32驱动W25Q32 模块读写数据 串口OLED0.96显示 所有资源导航一、资源说明二、基本参数参数引脚说明 三、驱动说明时序对应程序: 四、部分代码说明1、接线引脚定义1.2、STM32F103C8T6W25Q32 模块 五、基础知识学习与相关资料下载六、视频效果展示与程序资料获取…

LeetCode 429. N 叉树的层序遍历

429. N 叉树的层序遍历 描述 给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。 树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。 示例 示例1 输入&…

货拉拉Java开发实习

目录 1.Java的重载和重写有什么区别2.什么情况下需要用到重载3.有很多个字符串和变量,需要把它们加起来,这时候用String会有什么问题4.有没有其它的替代方案5.StringBuffer和StringBuilder有什么区别6.一个自定义对象,分别创建了两个实例&…

5分钟梳理银行测试,文末附带实战项目

很多银行招聘都要求有相关从业经验,这对于想跨入这个岗位的0经验从业同学可真犯了难 “你都不让我上岗,我哪来的工作经验呢?” 为了解决这个问题,小柠檬整理了本篇文章,从3个方面介绍银行项目是如何进行测试的 银行…

springboot---IoC 和 AOP

目录 引语IoC传统开发模式的弊端控制反转和依赖注入 AOP面向对象的局限性面向切面编程 总结 引语 Inversion of Control,缩写为IoC:控制反转 Aspect-oriented programming,缩写为AOP:面向切面编程 IoC和AOP是spring框架最核心的…

VMware Workstation 与 Device/Credential Guard 不兼容.在禁用 Device/Credenti

这个时候我们需要去关掉几个功能 1、关闭Hyper-V 打开控制面板首页,找到“程序”,然后找到“启用或关闭Windows功能”,找到“Hyper-V”,有勾中的全部都取消掉,如果这一步操作失败,不要紧,继续…

使用马哈鱼SQLFlow分析聚合函数中的数据流列

聚合函数通常将列作为参数,在本文中,我们将讨论在用作函数参数的列和聚合函数之间创建什么样的数据流。 1. COUNT() COUNT()可以采用COUNT(),也可以采用任何列名,甚至可以采用空参数。如果参数为空或为列,则参数和函…

DatenLord前沿技术分享 No.25

达坦科技专注于打造新一代开源跨云存储平台DatenLord,通过软硬件深度融合的方式打通云云壁垒,致力于解决多云架构、多数据中心场景下异构存储、数据统一管理需求等问题,以满足不同行业客户对海量数据跨云、跨数据中心高性能访问的需求。在本周…

【已解决】使用Arduino调试ARM时编译错误error: ordered comparison of pointer with integer zero的解决方法

在使用Arduino的资源库对STM32编程时,出现: error: ordered comparison of pointer with integer zero (byte* {aka unsigned char*} and int) 编译错误的解决方法。 Arduino因其开源和易用性,丰富的三方资源,受到很多人的喜欢…

Android无线调试

1、首先在系统环境变量——》新建——》"ANDROID_ADB_SERVER_PORT",值:手机的端口号 2、通过adb kill-server,adb start-server,重启abd 3、最后使用:adb connect ip:port(如:192.16…

【SpringBoot】SpringBoot 纯后端项目如何自定义异常页面(Whitelabel Error Page)

文章目录 背景安排方案步骤 验证 背景 一个短链服务,业务将长链接给我,我转换成短地址,用户访问短地址时,我再做redirect;没有前端,纯后端项目短链会有过期时间,过期后将返回错误信息某一天一个…