JSP 生命周期定义了 JSP 从创建到销毁的整个过程。这类似于 Servlet 生命周期,不同的是,JSP 需要先被编译成 Servlet。
JSP 生命周期阶段如下:
当浏览器请求 JSP 时,JSP 容器会首先检查是否需要编译页面。如果该页面从未被编译过,或者自上次编译以来对其进行了修改,则编译该页面。
JSP 本质是 Servlet,因此 JSP 容器就是 Servlet 容器。
编译过程包括 3 个步骤:
当容器加载 JSP 时,它将在处理任何请求之前调用 jspInit() 方法。如果您需要自定义 JSP 的初始化内容,可以重写 jspInit() 方法。
public void jspInit(){
// ...
}
一般情况下,程序只初始化一次。与 Servlet init 方法一样,我们通常在 jspInit() 方法中初始化数据库连接、打开文件。
此阶段表示了 JSP 生命周期中所有与请求相关的交互行为,直到被销毁。
JSP 页面完成初始化后,JSP 将会调用 _jspService() 方法。
_jspService() 以 HttpServletRequest 对象和 HttpServletResponse 对象作为方法参数,如下所示:
void _jspService(HttpServletRequest request, HttpServletResponse response) {
// ...
}
JSP 的 _jspService() 方法根据 request 来生成相应的 response,并且它还负责生成对 HTTP 方法的响应,即 GET、POST、DELETE 等。
JSP 生命周期的销毁阶段表示从容器中删除 JSP。
jspDestroy() 方法等效于 Servlet 中的 destroy() 方法。如果您需要自定义 JSP 的销毁内容,可以重写 jspDestroy() 方法。
jspDestroy() 方法具有以下形式。
public void jspDestroy() {
...
}
通常我们在 jspDestroy() 方法中释放数据库连接、关闭打开的文件。