Conntroller内存马详解(2)

devtools/2024/9/22 14:34:48/

流程分析

获取context

第一种:getCurrentWebApplicationContext()
// getCurrentWebApplicationContext方法获得的是一个XmlWebApplicationContext实例类型的Root WebApplicationContext。WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();第二种:WebApplicationContextUtils
// 通过这种方法获得的也是一个 Root WebApplicationContext 。此方法看起来比较麻烦WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(RequestContextUtils.getWebApplicationContext(((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest()).getServletContext());第三种:RequestContextUtils
// 通过 ServletRequest 类的实例来获得 Child WebApplicationContextWebApplicationContext context = RequestContextUtils.getWebApplicationContext(((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest());第四种:getAttribute
// 这种方式与前几种的思路就不太一样了,因为所有的Context在创建后,都会被作为一个属性添加到了ServletContext中。所以通过直接获得ServletContext通过属性Context拿到 Child WebApplicationContext

获取RequestMappingHandlerMapping

RequestMappingHandlerMapping mappingHandlerMapping = context.getBean(RequestMappingHandlerMapping.class);
虽然获取的是RequestMappingHandlerMapping类
但是RequestMappingHandlerMapping继承自AbstractHandlerMethodMapping
同样拥有register

注册Controller

这里主要是通过register进行注册Controller

可以看到register方法的三个参数的类型

这里主要是映射关系,需要配置url和方法的方式

下面看一下RequestMappingInfo类

构造方法

handler是一个Object类,及自定义的Controller类的实例对象

自定义的Controller类方法的method类


http://www.ppmy.cn/devtools/32617.html

相关文章

奈氏准则和香农定理

一、奈奎斯特和香农 哈里奈奎斯特(Harry Nyquist)(左) 克劳德艾尔伍德香农(Claude Elwood Shannon)(右) 我们应该在心里记住他们,记住所有为人类伟大事业做出贡献的人,因为他们我们的生活变得越来越精彩&…

软件设计师-重点的行为型设计模式

一、命令模式(Command): 意图:(上午题) 将一个请求封装为一个对象,从而使得可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 结构…

华为机考入门python3--(22)牛客22- 汽水瓶

分类:数字 知识点: 整除符号// 5//3 1 取余符号% 5%3 2 题目来自【牛客】 import sysdef calc_soda_bottles(n):if n 0: # 结束输入,不进行处理returnelse:# 循环进行汽水换算total_drunk 0 # 记录总共喝了多少瓶汽水while…

深入探索微信小程序:图像处理与优雅预览的艺术

深入探索微信小程序:图像处理与优雅预览的艺术 微信小程序中的图片基础一、图片上传与压缩二、图片预览技巧三、图片处理进阶:Canvas与滤镜四、性能优化与最佳实践参考资料 微信小程序中的图片基础 图片资源存储:本地资源与网络资源的使用区…

自动化软件的开发流程——CI和CD

在软件开发过程中,最容易出问题的阶段是将多个开发者开发的程序统一到一起的时候。即使每个程序都进行了严格的测试,运行起来没有问题,但是将它们作为一个统一的系统运行时,就有可能出现无法正常执行的情况。 如果能够在早期发现…

10G MAC层设计系列-(4)MAC TX模块

一、前言 MAC TX模块就是要将IP层传输过来的数据封装前导码、MAC地址、帧类型以及进行CRC校验,并与CRC值一块组成以太网帧。 二、模块设计 首先对输入的数据进行缓存,原因是在之后要进行封装MAC帧头,所以需要控制数据流的流动 FIFO_DATA_6…

vue路由懒加载是什么

Vue路由懒加载是一种优化技术,旨在减少应用程序的初始加载时间并提高性能。具体来说,它允许我们在用户实际需要访问某个路由时,才加载对应的组件代码,而不是在应用程序启动时一次性加载所有组件。 举个例子来说明Vue路由懒加载的…

接收区块链的CCF会议--ISPA 2024 截止7.1 附录用率

会议名称:ISPA CCF等级:CCF C类会议 类别:计算机体系结构/并行与分布计算/存储系统 录用率:2023年录用率19.6%(接收了75篇) Track 4: Security and Blockchain – Blockchain-based applications and s…