JSP生命周期
JSP生命周期
JSP 生命周期
理解JSP的核心机制离不开对其生命周期的深入探讨。JSP生命周期是指从创建直至销毁的全过程,其中包含了JSP页面转化为Servlet并执行的一系列步骤。
JSP生命周期阶段
1. 编译阶段
- Servlet容器读取JSP文件并对其进行编译,将其转换为相应的Servlet源代码。
- 进一步编译产生的Servlet源代码,生成可执行的Servlet类。
2. 初始化阶段
- 容器加载生成的Servlet类,并创建该Servlet的实例。
- 调用该Servlet实例的初始化方法——
jspInit()。开发者可以重写此方法以实现自定义初始化操作,例如建立数据库连接、打开文件或预处理资源。
@Override
public void jspInit() {
// 初始化代码,例如初始化数据库连接
}
3. 执行阶段
- 当客户端发起对JSP页面的请求时,容器调用已创建的Servlet实例的
_jspService()方法来处理请求。 _jspService()方法接收HttpServletRequest和HttpServletResponse对象作为参数,负责生成针对请求的响应内容。
void _jspService(HttpServletRequest request, HttpServletResponse response) {
// 处理请求并生成响应内容
}
4. 销毁阶段
- 在JSP页面不再需要服务时,容器会调用Servlet实例的销毁方法——
jspDestroy()。 - 开发者可以重写此方法以执行必要的清理工作,如关闭数据库连接或清除临时文件。
@Override
public void jspDestroy() {
// 清理代码,例如关闭数据库连接
}
JSP编译过程详解
当首次请求JSP页面或JSP文件被修改后,JSP引擎会经历以下编译步骤:
- 解析JSP文件:解析JSP页面中的各种元素,包括模板文本、JSP指令、脚本元素、表达式等。
- 转换为Servlet:将解析后的JSP页面生成对应的Servlet源代码。
- 编译Servlet:将生成的Servlet源代码编译为字节码文件,即Servlet类。
示例
以下是一个演示JSP生命周期各个阶段的简单示例:
<%@ page contentType="text/html; charset=GB2312" %>
<%!
private int initVar = 0;
private int serviceVar = 0;
private int destroyVar = 0;
@Override
public void jspInit() {
initVar++;
System.out.println("jspInit(): JSP被初始化了" + initVar + "次");
}
@Override
public void jspDestroy() {
destroyVar++;
System.out.println("jspDestroy(): JSP被销毁了" + destroyVar + "次");
}
%>
<%
serviceVar++;
System.out.println("_jspService(): JSP共响应了" + serviceVar + "次请求");
String content1 = "初始化次数 : " + initVar;
String content2 = "响应客户请求次数 : " + serviceVar;
String content3 = "销毁次数 : " + destroyVar;
%>
<h1><%=content1 %></h1>
<h2><%=content2 %></h2>
<h3><%=content3 %></h3>

浙公网安备 33010602011771号