springmvc直接访问 上下文路径 302 后路径更改并跳转源码解析

【问题现状】

application.yml 配置如下属性:

yaml 复制代码
server:
  servlet:
    context-path: /learning

直接访问:http://localhost:8888/learning 路径时,会返回302的响应状态;并跳转路径:http://localhost:8888/learning/ (原路径后多了个斜杠/)

源码分析:

org.apache.tomcat.util.net.NioEndpoint.SocketProcessor#doRun

org.apache.coyote.AbstractProtocol.ConnectionHandler#process

org.apache.coyote.AbstractProcessorLight#process

org.apache.coyote.http11.Http11Processor#service

org.apache.catalina.connector.CoyoteAdapter#service

此时 status 还为 200,执行过后,status 变为 302,如下所示:

详细看 org.apache.catalina.connector.CoyoteAdapter#postParseRequest 方法:

再深入分析 request.getMappingData().redirectPath 的值是怎么来的:

org.apache.catalina.mapper.Mapper#map

org.apache.catalina.mapper.Mapper#internalMap

org.apache.catalina.mapper.Mapper#internalMapWrapper

扩展学习:

1、Tomcat源码分析:HTTP请求处理过程

2、SpringBoot Tomcat 工作流程

相关推荐
苹果酱05671 小时前
无IDEA不Java:快速掌握Java集成开发环境
java·开发语言·spring boot·mysql·中间件
lixiaoyi012 小时前
【springboot入门-静态资源与配置文件原理】
java·spring boot·后端
2401_858120262 小时前
宠物咖啡馆平台开发:SpringBoot技术的综合应用
java·spring boot·宠物
2401_854391082 小时前
SpringBoot驱动的飘香水果购物网站:设计与实现
spring boot·后端·宠物
2402_857589362 小时前
宠物咖啡馆在线互动:SpringBoot框架的创新实现
spring boot·后端·宠物
2401_857636392 小时前
构建宠物咖啡馆:SpringBoot框架的实现策略
java·spring boot·宠物
武昌库里写JAVA3 小时前
好玩的大数据之05:MySQL安装方法一(下载文件安装,mysql-server_8.0.21)
spring boot·spring·毕业设计·layui·课程设计
健康平安的活着3 小时前
springboot将logback替换成log4j2
spring boot·log4j·logback
卓越软件开发4 小时前
基于SSM创城志愿者管理系统JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解
java·vue.js·spring boot