Tomcat中对 HttpServletRequest 的封装与Http请求体的延迟加载

1,459 阅读1分钟

提纲

RequestFacade -> request -> inputBuffer -> bb 用于存储数据包的所有数据(包括请求头和请求体)

tomcat 在收到请求时只会解析 http - header。在首次进行读取时才会触发数据读取

触发入口 InputBuffer::checkByteBufferEof -> realReadBytes -> Http11InputBuffer::doRead -> SocketInputBuffer::doRead

以上类均在 org.apache.catalina.connector 包下

请求头解析 org.apache.coyote.http11.Http11InputBuffer::parseHeader