JSP 的生命周期
JSP 的生命周期本质上是Servlet 的生命周期(因为 JSP 最终会被编译为 Servlet 类),分为以下 7 个阶段:
阶段 1:编译阶段(JSP → Servlet)
- Web 容器(如 Tomcat)首次接收到 JSP 请求时,会先将 JSP 文件解析为 Java 源文件(Servlet 类,命名规则如
xxx_jsp.java); - 再将 Java 源文件编译为字节码文件(
xxx_jsp.class)。 - 后续请求若 JSP 文件未修改,容器会跳过编译阶段,直接执行已编译的 Servlet。
阶段 2:加载与实例化
容器加载编译后的 Servlet 类,并创建该类的实例(通过newInstance())。
阶段 3:初始化(init ())
容器调用 JSP 对应的 Servlet 实例的jspInit()方法(JSP 专属的初始化方法,可通过<%! void jspInit() { ... } %>重写),完成初始化操作(如加载配置、创建数据库连接池)。
- 该方法仅在实例创建后执行一次。
阶段 4:请求处理(service ())
容器调用_jspService(HttpServletRequest request, HttpServletResponse response)方法处理客户端请求:
- 每次请求都会触发该方法;
- 方法内部处理 JSP 中的 Java 代码、表达式,并生成动态 HTML 响应。
- 注意:
_jspService()是自动生成的,开发者不能手动重写。
阶段 5:销毁(destroy ())
当 Web 容器关闭、或 JSP 实例被移除时,容器调用jspDestroy()方法(可通过<%! void jspDestroy() { ... } %>重写),释放资源(如关闭数据库连接、清理缓存)。
- 该方法仅执行一次。
核心总结:
编译(首次请求)→ 加载实例化 → 初始化(jspInit)→ 处理请求(_jspService,多次)→ 销毁(jspDestroy)。



