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

相关推荐
摇滚侠4 小时前
《SpringBoot 3:入门与应用实战》第 9 章 跨域问题 阅读笔记 27
spring boot·笔记·okhttp
苏生Susheng8 小时前
【软件实施】Windows 服务器运维实战
java·运维·服务器·windows·spring boot·javaweb·实施
学长毕业设计11 小时前
基于SpringBoot的健康食谱管理系统的设计与实现(源码+文档+讲解视频)
java·spring boot·后端
骇客野人12 小时前
Springboot 的 配置文件 application.yml 和 bootrap.yml 的由来和作用
java·spring boot·后端
xcl092512 小时前
幼儿托管系统开发实战:从需求分析到部署上线全指南
java·spring boot·需求分析
步行cgn12 小时前
Spring Boot 中的 YAML 完全指南
android·spring boot·firefox
csdn2015_12 小时前
java springboot项目,接收到的参数多个逗号
java·开发语言·spring boot
摇滚侠13 小时前
《SpringBoot 3:入门与应用实战》第 13 章 整合 MyBatis MyBatis 简单开发 阅读笔记 39
spring boot·笔记·mybatis
Mr.敦的私房菜13 小时前
【SpringEvent】Spring Boot / Spring Framework 事件大全
spring boot·spring
程序员阿明13 小时前
spring boot4+springAI 2加redis多轮对话存储
spring boot·redis·后端