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

相关推荐
华如锦2 小时前
使用SSE进行实时消息推送!替换WebSocket,轻量好用~
java·开发语言·网络·spring boot·后端·websocket·网络协议
不够优雅3 小时前
【Concept Plugin 3】轻量级插件化解决方案|动态类加载
java·spring boot·spring cloud
现在,此刻6 小时前
flink学习与如何在springboot项目中使用flink
spring boot·学习·flink
JIngJaneIL9 小时前
停车场管理|停车预约管理|基于Springboot的停车场管理系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·停车场管理系统
苹果醋312 小时前
element-ui源码阅读-样式
java·运维·spring boot·mysql·nginx
没有bug.的程序员12 小时前
@Controller、@RestController、@RequestMapping 解析机制
java·spring boot·spring·controller·requestmapping·restcontroller
老华带你飞13 小时前
商城推荐系统|基于SprinBoot+vue的商城推荐系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·商城推荐系统
一 乐13 小时前
物业管理系统|小区物业管理|基于SprinBoot+vue的小区物业管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端
yolo_Yang14 小时前
【Spring Boot】Spring Boot解决循环依赖
java·spring boot·后端
屹奕15 小时前
Arthas工具快速使用
spring boot·arthas