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 如何将 lib 目录中jar包打包进最终的jar包里面
spring boot·后端·maven·jar·mvn
亦暖筑序12 小时前
Spring AI Alibaba 1.1.2 实战:5种多Agent编排模式完全指南
java·spring boot·ai编程
憧憬成为java架构高手的小白13 小时前
苍穹外卖--day10(订单状态定时处理、来单提醒和客户催单)
java·spring boot
invicinble13 小时前
springboot出现的原因二---作为web的后端服务一站式整合器
前端·spring boot·后端
zhz521414 小时前
Spring Boot + 腾讯 Kona 实现 TLCP 8443 国密 HTTPS 排障实录(奇安信浏览器已通)
spring boot·后端·https·国密·gmssl·kona
夕除15 小时前
spring boot 14
xml·spring boot·redis
是宇写的啊15 小时前
博客系统-小项目
java·数据库·spring boot·mybatis
韩小兔修媛史15 小时前
SpringBoot面试八股文(持续更新)
spring boot·后端·面试
憧憬成为java架构高手的小白16 小时前
苍穹外卖--day11数据统计-图形报表(管理端)
java·spring boot·echarts
JAVA面经实录91716 小时前
完整版Spring全家桶学习体系
java·spring boot·spring·面试