Ciclo de Vida JSP

ciclo de vida jsp

O que รฉ ciclo de vida JSP?

O ciclo de vida JSP รฉ definido como a traduรงรฃo da pรกgina JSP em servlet, pois uma pรกgina JSP precisa primeiro ser convertida em servlet para processar as solicitaรงรตes de serviรงo. O Ciclo de Vida comeรงa com a criaรงรฃo do JSP e termina com a desintegraรงรฃo deste.

Diferentes fases do ciclo de vida JSP

Quando o navegador solicita um JSP, o mecanismo JSP primeiro verifica se รฉ necessรกrio compilar a pรกgina. Se o JSP foi compilado pela รบltima vez ou a modificaรงรฃo recente foi feita no JSP, o mecanismo JSP compila a pรกgina.

O processo de compilaรงรฃo da pรกgina JSP envolve trรชs etapas:

  • Anรกlise de JSP
  • Transformando JSP em servlet
  • Compilando o servlet

Diagrama do Ciclo de Vida JSP

O ciclo de vida JSP รฉ representado no diagrama abaixo.

Ciclo de Vida JSP

As etapas a seguir explicam o ciclo de vida do JSP:

  1. Traduรงรฃo da pรกgina JSP
  2. Compilaรงรฃo da pรกgina JSP (Compilaรงรฃo da pรกgina JSP em _jsp.java)
  3. Carregamento de classe (_jsp.java รฉ convertido no arquivo de classe _jsp.class)
  4. Instanciaรงรฃo (Objeto do servlet gerado รฉ criado)
  5. Inicializaรงรฃo(_jspinit() mรฉtodo รฉ invocado pelo contรชiner)
  6. Processamento de solicitaรงรฃo (_jspservice() mรฉtodo รฉ invocado pelo contรชiner)
  7. Destruir (_jspDestroy() mรฉtodo invocado pelo contรชiner)

Deixe-nos ter um resumo mais detalhado sobre os pontos acima:

1) Traduรงรฃo da pรกgina JSP:

A Java O arquivo servlet รฉ gerado a partir de um arquivo de origem JSP. Esta รฉ a primeira etapa do ciclo de vida JSP. Na fase de traduรงรฃo, o contรชiner valida a correรงรฃo sintรกtica da pรกgina JSP e dos arquivos de tags.

  • O contรชiner JSP interpreta as diretivas e aรงรตes padrรฃo e as aรงรตes customizadas que fazem referรชncia ร s bibliotecas de tags (todas fazem parte da pรกgina JSP e serรฃo discutidas na seรงรฃo posterior) usadas nesta pรกgina JSP.
  • Na descriรงรฃo pictรณrica acima, demo.jsp รฉ traduzido para demo_jsp.java na primeira etapa
  • Vejamos um exemplo de โ€œdemo.jspโ€ conforme mostrado abaixo:

Demo.jsp

<html>
<head>
<title>Demo JSP</title>
</head>
<%
int demvar=0;%>
<body>
Count is:
<% Out.println(demovar++); %>
<body>
</html>

Code Explicaรงรฃo para Demo.jsp

Code Linha 1: tag de inรญcio html

Code Linha 2: Etiqueta de cabeรงa

Code Linha 3 โ€“ 4: Tag de tรญtulo, ou seja, Demo JSP e tag de fechamento head

Code Linha 5 โ€“ 6: Tag Scriptlet onde inicializa a variรกvel demo

Code Linha 7 โ€“ 8: Na tag body, um texto a ser impresso na saรญda (Contagem รฉ: )

Code Linha 9: Tag scriplet onde tenta imprimir a variรกvel demovar com valor incrementado

Code Linha 10 โ€“ 11: Tags de corpo e HTML fechadas

A pรกgina Demo JSP รฉ convertida em servlet demo_jsp no cรณdigo abaixo.

Ciclo de Vida JSP

Code Explicaรงรฃo para Demo_jsp.java

Code Linha 1: A classe servlet demo_jsp estรก estendendo a classe pai HttpServlet

Code Linha 2 โ€“ 3: Substituindo o mรฉtodo de serviรงo de jsp, ou seja, _jspservice que tem os objetos HttpServletRequest e HttpServletResponse como seus parรขmetros

Code Linha 4: Mรฉtodo de abertura

Code Linha 5: Chamando o mรฉtodo getWriter() do objeto de resposta para obter PrintWriterobjeto (imprime a representaรงรฃo formatada de objetos no fluxo de saรญda de texto)

Code Linha 6: Chamando o mรฉtodo setContentType do objeto de resposta para definir o tipo de conteรบdo

Code Linha 7: Usando write() mรฉtodo de impressรฃoWriter objeto tentando analisar html

Code Linha 8: Inicializando a variรกvel demovar para 0

Code Linha 9: Ligando write() mรฉtodo de impressรฃoWriter objeto para analisar o texto

Code Linha 10: Ligando print() mรฉtodo de impressรฃoWriter objeto para incrementar a variรกvel demovar de 0+1=1. Portanto, a saรญda serรก 1.

Code Linha 11: Usando write() mรฉtodo de impressรฃoWriter objeto tentando analisar html

Saรญda:

Ciclo de Vida JSP

  • Aqui vocรช pode ver que na captura de tela a saรญda รฉ 1 porque demvar รฉ inicializado em 0 e depois incrementado em 0+1=1

No exemplo acima,

  • demo.jsp, รฉ um JSP onde uma variรกvel รฉ inicializada e incrementada. Este JSP รฉ convertido no servlet (demo_jsp.class ) em que o mecanismo JSP carrega a pรกgina JSP e converte em conteรบdo do servlet.
  • Quando a conversรฃo acontece, todo o texto do modelo รฉ convertido para println() declaraรงรตes e tudo Elementos JSP sรฃo convertidos para Java cรณdigo.

ร‰ assim que uma pรกgina JSP simples รฉ traduzida em uma classe de servlet.

2) Compilaรงรฃo da pรกgina JSP

  • O arquivo java servlet gerado รฉ compilado na classe java servlet
  • A traduรงรฃo da pรกgina de origem Java para sua classe de implementaรงรฃo pode acontecer a qualquer momento entre a implantaรงรฃo da pรกgina JSP no contรชiner e o processamento da pรกgina JSP.
  • Na descriรงรฃo pictรณrica acima, demo_jsp.java รฉ compilado em um arquivo de classe demo_jsp.class

3) Carregamento de classe

  • A classe servlet que foi carregada da origem JSP agora รฉ carregada no contรชiner

4) Instanciaรงรฃo

  • Nesta etapa o objeto, ou seja, a instรขncia da classe, รฉ gerado.
  • O contรชiner gerencia uma ou mais instรขncias desta classe na resposta a solicitaรงรตes e outros eventos. Normalmente, um contรชiner JSP รฉ construรญdo usando um contรชiner de servlet. Um contรชiner JSP รฉ uma extensรฃo do contรชiner de servlet, pois ambos suportam JSP e servlet.
  • Uma interface JSPPage fornecida pelo contรชiner fornece init() e destroy() mรฉtodos.
  • Existe uma interface HttpJSPPage que atende solicitaรงรตes HTTP e tambรฉm contรฉm o mรฉtodo de serviรงo.

5) Inicializaรงรฃo

public void jspInit()
{
	//initializing the code
}
  • _jspinit() O mรฉtodo iniciarรก a instรขncia do servlet que foi gerada a partir do JSP e serรก chamada pelo contรชiner nesta fase.
  • Assim que a instรขncia for criada, o mรฉtodo init serรก invocado imediatamente apรณs isso
  • ร‰ chamado apenas uma vez durante o ciclo de vida JSP, o mรฉtodo de inicializaรงรฃo รฉ declarado conforme mostrado acima

6) Processamento de solicitaรงรฃo

void _jspservice(HttpServletRequest request HttpServletResponse response)
{
	//handling all request and responses
}
  • _jspservice() O mรฉtodo รฉ invocado pelo contรชiner para todas as solicitaรงรตes levantadas pela pรกgina JSP durante seu ciclo de vida
  • Para esta fase, รฉ necessรกrio passar por todas as fases acima e entรฃo apenas o mรฉtodo de serviรงo poderรก ser invocado.
  • Ele passa objetos de solicitaรงรฃo e resposta
  • Este mรฉtodo nรฃo pode ser substituรญdo
  • O mรฉtodo รฉ mostrado acima: ร‰ responsรกvel por gerar todos os mรฉtodos HTTP, ou seja, GET, POST, etc.

7) Destruir

public void _jspdestroy()
{
            //all clean up code
}
  • _jspdestroy() O mรฉtodo tambรฉm รฉ invocado pelo contรชiner
  • Este mรฉtodo รฉ chamado quando o contรชiner decide que nรฃo precisa mais da instรขncia do servlet para atender ร s solicitaรงรตes.
  • Quando a chamada para o mรฉtodo destroy รฉ feita, o servlet estรก pronto para uma coleta de lixo
  • Este รฉ o fim do ciclo de vida.
  • Nรณs podemos substituir jspdestroy() mรฉtodo quando realizamos qualquer limpeza, como liberar conexรตes de banco de dados ou fechar arquivos abertos.

Resuma esta postagem com: