在本章中,我们将学习JSP的生命周期。理解JSP底层功能的关键是了解它们遵循的简单生命周期。
JSP生命周期定义为从创建到销毁的整个过程。这类似于Servlet生命周期,但需要额外的步骤才能将JSP编译为Servlet。
1. JSP遵循的过程
以下是JSP遵循的过程-
- 编译
- 初始化
- 执行
- 清理
JSP生命周期的四个主要阶段与Servlet生命周期非常相似。主要分为四个阶段 –
1.1. JSP编译
当浏览器请求JSP时,JSP引擎首先检查是否需要编译该页面。 如果该页面从未被编译过,或者自上次编译以来已修改过JSP,则JSP引擎将编译该页面。
编译过程包括三个步骤 –
- 解析JSP。
- 将JSP转换为servlet。
- 编译servlet。
1.2. JSP初始化
当容器加载JSP时,它将在处理任何请求之前调用jspInit()
方法。 如果需要执行特定于JSP的初始化,那么可以重写jspInit()
方法 –
public void jspInit(){ // Initialization code... }
通常,初始化仅执行一次,并且与servlet init()
方法一样,通常在jspInit()
方法中初始化数据库连接,打开文件或者创建查找表。
1.3. 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
等。
1.4. JSP清理
JSP生命周期的销毁阶段表示何时从容器中删除JSP。
jspDestroy()
方法与Servlet的destroy()
方法等效。当需要执行任何清理(如释放数据库连接或关闭打开的文件)时,那么可以重写jspDestroy()
。
jspDestroy()
方法具有以下形式-
public void jspDestroy() { // Your cleanup code goes here. }
2. 阶段描述
下表列出了JSP生命周期的每个阶段并进行了描述:
阶段 | 描述 |
---|---|
转换 | JSP容器解析JSP页面。它转换JSP页面以生成相应的servlet源代码。如果JSP文件名是hello.jsp ,通常容器将其命名为hello_jsp.java 。 |
页面编译 | 如果转换成功,则容器将编译生成的java文件。 |
类加载 | 将JSP编译为servlet类后,其生命周期与servlet相似。然后将已编译的类加载到内存中。 |
实例创建 | 将JSP类加载到内存后,其对象将由容器实例化。 |
调用jspInit() 或初始化 |
初始化JSP类是从普通类转换为servlet。 初始化结束后,JSP类即可访问ServletConfig 和ServletContext 对象。 jspInit() 方法在JSP生命周期中仅被调用一次,它初始化配置参数。 |
调用_jspService() 或请求处理 |
每个客户请求都调用此方法。 |
调用jspDestroy() 或destroy() |
这是最后一个阶段,当容器决定从内存中卸载JSP时,将调用此方法。 |
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/264029.html