English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La clave para entender la función subyacente de JSP es entender el ciclo de vida que siguen.
El ciclo de vida de JSP es el proceso completo desde la creación hasta la destrucción, similar al ciclo de vida de servlet, la diferencia es que el ciclo de vida de JSP también incluye la compilación del archivo JSP en servlet.
A continuación, se enumeran algunas fases que se han pasado en el ciclo de vida de JSP:
Fase de compilación:
El contenedor de servlet compila los archivos de origen de servlet, generando la clase de servlet
Fase de inicialización:
Cargue la clase de servlet correspondiente a JSP, cree su ejemplo y llame a su método de inicialización
Fase de ejecución:
Llame al método de servicio del ejemplo de servlet correspondiente a JSP
Fase de destrucción:
Llame al método de destrucción del ejemplo de servlet correspondiente a JSP y luego destruya el ejemplo de servlet
很明显,JSP生命周期的四个主要阶段与servlet生命周期非常相似,下面给出图示:
当浏览器请求JSP页面时,JSP引擎会首先检查是否需要编译此文件。如果此文件尚未编译,或者在上次编译后被更改,则编译此JSP文件。
编译过程包括三个步骤:
解析JSP文件。
将JSP文件转换为servlet。
编译servlet。
容器加载JSP文件后,它会在为请求提供服务之前调用jspInit()方法。如果您需要执行自定义的JSP初始化任务,可以重写jspInit()方法,如下所示:
public void jspInit(){ // 初始化代码 }
通常情况下,程序只初始化一次,servlet也是如此。通常情况下,您可以在jspInit()方法中初始化数据库连接、打开文件和创建查询表。
这一阶段描述了JSP生命周期中与请求相关的所有交互行为,直到被销毁。
当JSP网页完成初始化后,JSP引擎将调用_jspService()方法。
_jspService()方法需要一个HttpServletRequest对象和一个HttpServletResponse对象作为它的参数,就像下面这样:
void _jspService(HttpServletRequest request, HttpServletResponse response) { // 服务端处理代码 }
_jspService()方法在每个request中被调用一次,并负责生成相应的response,并且它还负责生成所有7个HTTP方法的响应,比如GET、POST、DELETE等等。
JSP生命周期的销毁阶段描述了当一个JSP网页从容器中被移除时所发生的一切。
jspDestroy()方法在JSP中相当于servlet中的销毁方法。当您需要执行任何清理工作,如释放数据库连接或关闭文件夹等时,重写jspDestroy()方法。
jspDestroy()方法的格式如下:
public void jspDestroy() { // 清理代码 }
以下是一个JSP生命周期代码示例:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>" <html> <head> <title>life.jsp</title> </head> <body> <%! private int initVar=0; private int serviceVar=0; private int destroyVar=0; %> <%! public void jspInit(){ initVar++; System.out.println("jspInit(): JSP fue inicializada"+initVar+"solicitudes"); } public void jspDestroy(){ destroyVar++; System.out.println("jspDestroy(): JSP fue destruida"+destroyVar+"solicitudes"); } %> <% serviceVar++; System.out.println("_jspService(): JSP respondió un total de"+serviceVar+"solicitudes"); String content1="Número de inicializaciones: "+initVar; String content2="Número de respuestas a solicitudes de clientes: "+serviceVar; String content3="Número de eliminaciones: "+destroyVar; %> <h1>Tutoriales básicos(oldtoolbag.com) Ejemplo de prueba de JSP</h1> <p><%=content1 %></p> <p><%=content2 %></p> <p><%=content3 %></p> </body> </html>
Abra esta página en el navegador, el resultado de salida es: