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 工作流程

相关推荐
计算机学姐8 分钟前
基于SpringBoot的在线教育管理系统
java·vue.js·spring boot·后端·mysql·spring·mybatis
Minyy1122 分钟前
“爱生活”小项目问题总结
java·数据库·spring boot·spring·maven·intellij-idea
工业互联网专业2 小时前
基于springboot+vue的房屋租赁管理系统
java·vue.js·spring boot·毕业设计·源码·课程设计·房屋租赁管理系统
阿乾之铭2 小时前
Spring Boot 中的重试机制
java·spring boot·后端
苹果酱05674 小时前
Mac下Robotframework + Python3环境搭建
java·vue.js·spring boot·mysql·课程设计
程序员阿鹏5 小时前
Spring Boot项目(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot前后端分离)
java·前端·vue.js·spring boot·后端·spring·maven
LJianK16 小时前
JavaWeb, Spring, Spring Boot
java·spring boot·spring
一勺菠萝丶7 小时前
深入浅出:Spring Boot 中 RestTemplate 的完整使用指南
java·spring boot·后端
caihuayuan58 小时前
前端面试2
java·大数据·spring boot·后端·课程设计
郭尘帅6668 小时前
SpringBoot学习(上) , SpringBoot项目的创建(IDEA2024版本)
spring boot·后端·学习