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

相关推荐
计算机毕设指导62 小时前
基于Springboot林业产品推荐系统【附源码】
java·开发语言·spring boot·后端·mysql·spring·intellij-idea
Q_19284999063 小时前
基于Spring Boot的社区药房系统
java·spring boot·后端
Q_19284999064 小时前
基于Spring Boot的房屋租赁管理系统
java·spring boot·后端
王ASC5 小时前
Springboot访问到Controller中不存在的接口BUG
spring boot·后端·mvc
zfoo-framework5 小时前
【SpringBoot中SpringMVC服务之处理post请求】
java·spring boot·spring
杨荧6 小时前
【开源免费】基于Vue和SpringBoot的靓车汽车销售网站(附论文)
java·前端·javascript·vue.js·spring boot·spring cloud·开源
水w6 小时前
springBoot Maven 剔除无用的jar引用
开发语言·spring boot·后端·maven·jar
xiangzhihong87 小时前
Spring Boot基于Jsoup的爬虫实现
spring boot
Q_19284999068 小时前
基于Spring Boot的新能源汽车个性化推荐系统
spring boot·后端·汽车