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