A chave para compreender a funcionalidade subjacente dos JSPs é compreender os ciclos de vida aos quais eles aderem.
O ciclo de vida JSP é todo o processo, desde a criação até a destruição, que é semelhante ao ciclo de vida do servlet. A diferença é que o ciclo de vida JSP também inclui a compilação de arquivos JSP em servlets.
A seguir estão os estágios pelos quais o ciclo de vida JSP passa:
Fase de compilação:
O contêiner do servlet compila o arquivo de origem do servlet e gera a classe do servlet
Fase de inicialização:
Carregue a classe servlet correspondente ao JSP, crie sua instância e chame seu método de inicialização
Fase de execução:
Chame o método de serviço da instância do servlet correspondente ao JSP
Fase de destruição:
Chame o método de destruição da instância do servlet correspondente ao JSP e, em seguida, destrua a instância do servlet
Obviamente, os quatro estágios principais do ciclo de vida JSP são muito semelhantes ao ciclo de vida do servlet, conforme mostrado abaixo:
Quando o navegador solicita uma página JSP, o mecanismo JSP primeiro verifica se esse arquivo precisa ser compilado. Se este arquivo não foi compilado ou foi alterado desde a última compilação, compile o arquivo JSP.
O processo de compilação consiste em três etapas:
Analise arquivos JSP.
Converta arquivos JSP em servlets.
Compile o servlet.
Depois que o contêiner carrega o arquivo JSP, ele chama o método jspInit() antes de fornecer qualquer serviço à solicitação. Se você precisar executar tarefas personalizadas de inicialização JSP, basta substituir o método jspInit(), assim:
public void jspInit(){ // código de inicialização}
De modo geral, o programa é inicializado apenas uma vez, e o mesmo vale para servlets. Normalmente você pode inicializar a conexão com o banco de dados, abrir o arquivo e criar a tabela de consulta no método jspInit().
Este estágio descreve todas as interações relacionadas à solicitação no ciclo de vida do JSP até que ele seja destruído.
Quando a página da web JSP concluir a inicialização, o mecanismo JSP chamará o método _jspService().
O método _jspService() requer um objeto HttpServletRequest e um objeto HttpServletResponse como parâmetros, como o seguinte:
void _jspService(solicitação HttpServletRequest, resposta HttpServletResponse){ // código de processamento do lado do servidor}
O método _jspService() é chamado uma vez em cada solicitação e é responsável por gerar a resposta correspondente, e também é responsável por gerar respostas para todos os 7 métodos HTTP, como GET, POST, DELETE, etc.
A fase de destruição do ciclo de vida JSP descreve o que acontece quando uma página JSP é removida do contêiner.
O método jspDestroy() em JSP é equivalente ao método de destruição em servlet. Substitua o método jspDestroy() quando precisar realizar qualquer trabalho de limpeza, como liberar a conexão com o banco de dados ou fechar a pasta, etc.
O formato do método jspDestroy() é o seguinte:
public void jspDestroy(){ // Limpar código}
Um exemplo do código do ciclo de vida JSP é o seguinte:
<%@ 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;%> <%! System.out.println("jspInit(): JSP foi inicializado "+initVar+" vezes"); } public void jspDestroy(){ destroyVar++; "vezes"); }%><% serviceVar++; System.out.println("_jspService(): JSP respondeu a um total de solicitações "+serviceVar+""); String content1="Número de inicializações: "+initVar; String content2="Número de respostas a solicitações de clientes: "+serviceVar; String content3="Número de destruições: " +destroyVar;%> <h1>exemplo de teste JSP do tutorial w3cschool</h1><p><%=content1 %></p><p><%=content2 %></p><p><%=content3 %></p></body></html>