English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ciclo de Vida do JSP

A chave para entender a funcionalidade subjacente do JSP é entender o ciclo de vida que eles seguem.

O ciclo de vida do JSP é todo o processo desde a criação até a destruição, semelhante ao ciclo de vida do servlet, a diferença é que o ciclo de vida do JSP inclui ainda a compilação do arquivo JSP em servlet.

A seguir estão algumas fases pelas quais o ciclo de vida do JSP passa:

  • Fase de compilação:

    O contêiner servlet compila o arquivo-fonte servlet, gerando a classe servlet

  • Fase de inicialização:

    Carrega a classe de servlet correspondente ao JSP, cria seu exemplo e chama seu método de inicialização

  • Fase de execução:

    Chama o método de serviço do exemplo de servlet correspondente ao JSP

  • Fase de destruição:

    Chama o método de destruição do exemplo de servlet correspondente ao JSP, e depois destrói o exemplo de servlet

Claramente, os quatro principais estágios do ciclo de vida do JSP são muito semelhantes ao ciclo de vida do servlet, e a seguir está a ilustração:

Compilação do JSP

Quando o navegador solicita a página JSP, o motor JSP verifica primeiro se é necessário compilar esse arquivo. Se o arquivo não foi compilado ou foi alterado desde a última compilação, o arquivo JSP será compilado.

O processo de compilação inclui três etapas:

  • analisar o arquivo JSP.

  • converter o arquivo JSP para servlet.

  • compilar servlet.

Inicialização do JSP

Após o contêiner carregar o arquivo JSP, ele chama o método jspInit() antes de fornecer qualquer serviço para a solicitação. Se você precisar executar tarefas de inicialização personalizadas do JSP, substitua o método jspInit(), conforme mostrado a seguir:

public void jspInit(){
  // Código de inicialização
}

Normalmente, o programa é inicializado uma vez, assim como o servlet. Geralmente, você pode inicializar conexões de banco de dados, abrir arquivos e criar tabelas de consulta no método jspInit().

Execução do JSP

Esta fase descreve todas as interações relacionadas a solicitações no ciclo de vida do JSP, até que seja destruído.

Após a conclusão da inicialização da página JSP, o motor JSP chama o método _jspService().

_jspService() precisa de um objeto HttpServletRequest e um objeto HttpServletResponse como parâmetros, assim como no exemplo a seguir:

void _jspService(HttpServletRequest request,
                 HttpServletResponse response)
{
   // código de processamento do servidor
}

_jspService() é chamado uma vez em cada request e é responsável por gerar a response correspondente, e também é responsável por gerar todas7respostas de métodos HTTP, como GET, POST, DELETE, etc.

Limpeza do JSP

A fase de destruição do ciclo de vida do JSP descreve tudo o que acontece quando uma página JSP é removida do contêiner.

O método jspDestroy() é equivalente ao método de destruição do servlet no JSP. Quando você precisar executar qualquer trabalho de limpeza, substitua o método jspDestroy(), por exemplo, liberar conexões de banco de dados ou fechar pastas, etc.

O formato do método jspDestroy() é o seguinte:

public void jspDestroy()
{
   // Código de limpeza
}

Exemplo online

Exemplo de código de ciclo de vida do JSP conforme mostrado a seguir:

<%@ 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(): O JSP foi inicializado"+initVar+"requisições");
  }
  public void jspDestroy(){
    destroyVar++;
    System.out.println("jspDestroy(): O JSP foi destruído"+destroyVar+"requisições");
  }
%>
<%
  serviceVar++;
  System.out.println("_jspService(): O JSP respondeu a "+serviceVar+"requisições");
  String content1="Número de inicializações: "+initVar;
  String content2="Número de respostas ao cliente: "+serviceVar;
  String content3="Número de exclusões: "+destroyVar;
%>
<h1>Tutorial Básico(oldtoolbag.com) Teste de JSP</h1>
<p><%=content1 %></p>
<p><%=content2 %></p>
<p><%=content3 %></p>
</body>
</html>

Abra esta página no navegador, e o resultado será: