Servlet 有用的资源
规范、容器、常用库与继续深入的方向。
Key PointsServlet 是基础,实际项目多在其上叠框架;理解容器模型后,Spring MVC 只是更省事的封装。
规范与文档
- Jakarta Servlet Specification —— 权威定义,映射规则、生命周期、过滤器链都在里面
- Jakarta Servlet Javadoc —— 每个方法的精确语义与异常条件
- Tomcat 官方文档 —— 配置项、连接器参数、部署方式
- RFC 9110 / 9112 —— HTTP 语义与报文格式,理解状态码与头的根本
容器
| Container | Character |
|---|---|
| Apache Tomcat | 最主流,文档全,Servlet/JSP 参考实现 |
| Jetty | 轻量、可嵌入,适合测试与微服务 |
| Undertow | 高性能,WildFly 的默认 Web 层 |
| Netty | 不是 Servlet 容器,但常被用来实现自定义协议层 |
常用库
- Spring MVC / Spring Boot —— 在 Servlet 之上提供注解路由、参数绑定、统一异常
- HikariCP —— 高性能 JDBC 连接池
- SLF4J + Logback —— 门面 + 实现,替代
System.out - Thymeleaf / FreeMarker —— 现代模板引擎,比 JSP 更适合 HTML
从 Servlet 到框架
Text
Servlet 原生写法
@WebServlet("/user")
doGet → getParameter → 校验 → 调 Service → setAttribute → forward
Spring MVC 写法
@GetMapping("/user/{id}")
public String user(@PathVariable int id, Model m) { ... return "user"; }
底层仍是同一个 DispatcherServlet,只是把重复的胶水代码收进了框架。Once you know servlets, Spring MVC looks like an abstraction over the same repeated glue: mapping, parameter binding, view resolution. Learn the framework first and questions about filter order, lost request scope or dead sendRedirect will stall you.
Suggested next steps: learn JSP or Thymeleaf for the view layer, then JDBC and pooling, then Spring Boot. Skipping the view layer makes
Model and ViewResolver look like magic.规范与文档
- Jakarta Servlet Specification —— 权威定义,映射规则、生命周期、过滤器链都在里面
- Jakarta Servlet Javadoc —— 每个方法的精确语义与异常条件
- Tomcat 官方文档 —— 配置项、连接器参数、部署方式
- RFC 9110 / 9112 —— HTTP 语义与报文格式,理解状态码与头的根本
容器
| 容器 | 特点 |
|---|---|
| Tomcat | 最主流,文档全,Servlet/JSP 参考实现 |
| Jetty | 轻量、可嵌入,适合测试与微服务 |
| Undertow | 高性能,WildFly 的默认 Web 层 |
| Netty | 不是 Servlet 容器,但常被用来实现自定义协议层 |
常用库
- Spring MVC / Spring Boot —— 在 Servlet 之上提供注解路由、参数绑定、统一异常
- HikariCP —— 高性能 JDBC 连接池
- SLF4J + Logback —— 门面 + 实现,替代
System.out - Thymeleaf / FreeMarker —— 现代模板引擎,比 JSP 更适合 HTML
从 Servlet 到框架
Text
Servlet 原生写法
@WebServlet("/user")
doGet → getParameter → 校验 → 调 Service → setAttribute → forward
Spring MVC 写法
@GetMapping("/user/{id}")
public String user(@PathVariable int id, Model m) { ... return "user"; }
底层仍是同一个 DispatcherServlet,只是把重复的胶水代码收进了框架。理解 Servlet 之后再看 Spring MVC,会发现它只是把「映射、参数绑定、视图解析」这些每次都一样的代码抽象掉了。反过来,先学框架再补 Servlet,遇到 Filter 顺序、request 域丢失、sendRedirect 失效这类问题时就会卡住。
下一步建议:先把 JSP 或 Thymeleaf 学一门把「视图」补上,再学 JDBC 与连接池,最后进 Spring Boot。跳过视图层直接上框架,会看不懂为什么要有
Model 和 ViewResolver。