第 6 章 · 终点站:Servlet 生态 章节摘要:请求穿过阀门、过滤器前哨,终于抵达终点站。本章讲四件事:过滤器链如何一环环传递控制权、Servlet 从出生到销毁的完整生命周期;JSP 如何被 Jasper 编译成 Servlet(以及首访慢的真相);WebSocket 如何把 HTTP 连接升级成双向通道;Spring Boot 为什么反过来把 Tomcat 装进应用里,内嵌模式与传统部署模式的取舍。学完本章,管道漫游的"进城到终点"全线贯通。 学习目标 能手绘过滤器链的调用栈图,解释 chain 的 doFilter 前后代码的执行时机差异。 能说出 Servlet 生命周期的五个阶段与对应回调,解释初始化参数与启动加载的关系。
章节摘要:请求穿过阀门、过滤器前哨,终于抵达终点站。本章讲四件事:过滤器链如何一环环传递控制权、Servlet 从出生到销毁的完整生命周期;JSP 如何被 Jasper 编译成 Servlet(以及首访慢的真相);WebSocket 如何把 HTTP 连接升级成双向通道;Spring Boot 为什么反过来把 Tomcat 装进应用里,内嵌模式与传统部署模式的取舍。学完本章,管道漫游的"进城到终点"全线贯通。
金句:过滤器链是一副弹簧手串——请求顺着链滑到 Servlet,响应再沿原路弹回来,每个环的前置后置代码各执行一次。
6.1 是终点站的主线(过滤器链与 Servlet 的执行机制),6.2 揭示一个真相——JSP 只是自动生成的 Servlet,编译流水线是它成为 Servlet 的路径,因此必须先懂 6.1 再看 6.2。6.3 的 WebSocket 改写了"一问一答"的请求模型,而 Spring Boot 内嵌则改写了"应用住进容器"的部署关系——两者都是终点站的延伸形态。
6.1 执行机制 6.2 生成路径 6.3 延伸形态 ┌────────────┐ ┌────────────┐ ┌────────────┐ │ 过滤器链 │ │ JSP 源文件 │ │ WebSocket │ │ 生命周期 │ ───> │ 四级流水线 │ ───> │ Spring Boot│ │ 调用栈 │ │ work 产物 │ │ 内嵌容器 │ └────────────┘ └────────────┘ └────────────┘ 手写的 Servlet 生成的 Servlet 不止 Servlet
前置:5.1 的两道闸(过滤器在链中的位置)、4.3 的 web.xml(过滤器与 Servlet 的声明处)、6.0 之前最好把 3.2 的线程模型再翻一眼——本章讨论的执行链与线程占用关系密切。
后续延伸:本章是管道漫游的最后一站,第 7 章转入回程与保养——调优、监控、排障、安全加固,全部建立在前六章的管道视图之上。其中 7.4 的慢请求排查会直接引用本章的调用栈知识:线程转储里的每一帧,都能在本章找到对应的环节。若你在做前后端分离架构,6.2 的 JSP 部分可略读,但 6.1 的过滤器机制与 6.3 的内嵌模式仍是必读——前者是所有 Java Web 框架的地基,后者决定你的交付形态。