JSP - 生命周期( Lifecycle)
在本章中,我们将讨论JSP的生命周期。 理解JSP的低级功能的关键是理解它们遵循的简单生命周期。
JSP生命周期被定义为从创建到销毁的过程。 这类似于servlet生命周期,其中包含将JSP编译为servlet所需的附加步骤。
JSP遵循的路径
以下是JSP遵循的路径 -
- Compilation
- Initialization
- Execution
- Cleanup
JSP生命周期的四个主要阶段与Servlet生命周期非常相似。 以下描述了四个阶段 -
JSP编译
当浏览器请求JSP时,JSP引擎首先检查是否需要编译页面。 如果页面从未编译过,或者自上次编译后JSP已被修改,则JSP引擎将编译该页面。
编译过程包括三个步骤 -
- 解析JSP。
- 将JSP转换为servlet。
- 编译servlet。
JSP初始化
当容器加载JSP时,它会在处理任何请求之前调用jspInit()方法。 如果需要执行特定于JSP的初始化,请覆盖jspInit()方法 -
public void jspInit(){
// Initialization code...
}
通常,初始化只执行一次,与servlet init方法一样,通常初始化数据库连接,打开文件,并在jspInit方法中创建查找表。
JSP执行
JSP生命周期的这一阶段表示在销毁JSP之前与请求的所有交互。
每当浏览器请求JSP并且页面已加载并初始化时,JSP引擎就会调用JSP中的_jspService()方法。
_jspService()方法将HttpServletRequest和HttpServletResponse作为其参数,如下所示 -
void _jspService(HttpServletRequest request, HttpServletResponse response) {
// Service handling code...
}
JSP的_jspService()方法是在请求的基础上调用的。 这负责为该请求生成响应,并且该方法还负责生成对所有七种HTTP方法的响应,即GET, POST, DELETE等。
JSP清理
JSP生命周期的销毁阶段表示从容器中删除JSP的时间。
jspDestroy()方法是servlet的destroy方法的JSP等价物。 需要执行任何清理时覆盖jspDestroy,例如释放数据库连接或关闭打开的文件。
jspDestroy()方法具有以下形式 -
public void jspDestroy() {
// Your cleanup code goes here.
}