Ciclo di vita di JSP

ciclo di vita di jsp

Cos'è il ciclo di vita JSP?

Il ciclo di vita JSP è definito come la traduzione della pagina JSP in servlet poiché una pagina JSP deve essere prima convertita in servlet per elaborare le richieste di servizio. Il ciclo di vita inizia con la creazione di JSP e termina con la sua disintegrazione.

Diverse fasi del ciclo di vita di JSP

Quando il browser richiede una JSP, il motore JSP controlla innanzitutto se è necessario compilare la pagina. Se il JSP viene compilato per ultimo o la modifica recente viene eseguita in JSP, il motore JSP compila la pagina.

Il processo di compilazione della pagina JSP prevede tre passaggi:

  • Analisi di JSP
  • Trasformare JSP in servlet
  • Compilazione della servlet

Diagramma del ciclo di vita di JSP

Il ciclo di vita di JSP è illustrato nel diagramma seguente.

Ciclo di vita di JSP

I seguenti passaggi spiegano il ciclo di vita di JSP:

  1. Traduzione della pagina JSP
  2. Compilazione della pagina JSP (Compilazione della pagina JSP in _jsp.java)
  3. Caricamento della classe (_jsp.java viene convertito nel file di classe _jsp.class)
  4. Istanziazione (viene creato l'oggetto del servlet generato)
  5. Inizializzazione(_jspinit() il metodo viene richiamato dal contenitore)
  6. Elaborazione della richiesta (_jspservice() metodo viene richiamato dal contenitore)
  7. Distruggi (_jspDestroy() metodo invocato dal contenitore)

Cerchiamo di avere un riepilogo più dettagliato sui punti di cui sopra:

1) Traduzione della pagina JSP:

A Java il file servlet viene generato da un file sorgente JSP. Questo è il primo passo del ciclo di vita di JSP. Nella fase di traduzione, il contenitore convalida la correttezza sintattica della pagina JSP e dei file di tag.

  • Il contenitore JSP interpreta le direttive e le azioni standard, nonché le azioni personalizzate che fanno riferimento alle librerie di tag (fanno tutte parte della pagina JSP e saranno trattate nella sezione successiva) utilizzate in questa pagina JSP.
  • Nella descrizione pittorica sopra, demo.jsp viene tradotto in demo_jsp.java nel primo passaggio
  • Prendiamo un esempio di "demo.jsp" come mostrato di seguito:

Demo.jsp

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

Spiegazione del codice per Demo.jsp

Linea di codice 1: tag iniziale html

Linea di codice 2: Etichetta di testa

Riga di codice 3 – 4: Tag del titolo, ad esempio JSP demo e tag head di chiusura

Riga di codice 5 – 6: tag scriptlet in cui inizializza la variabile demo

Riga di codice 7 – 8: Nel tag body, un testo da stampare nell'output (il conteggio è: )

Riga di codice 9: Tag scriptlet in cui si tenta di stampare la variabile demovar con valore incrementato

Riga di codice 10 – 11: Tag corpo e HTML chiusi

La pagina JSP demo viene convertita nel servlet demo_jsp nel codice seguente.

Ciclo di vita di JSP

Spiegazione del codice per Demo_jsp.java

Linea di codice 1: La classe servlet demo_jsp sta estendendo la classe genitore HttpServlet

Riga di codice 2 – 3: Sovrascrive il metodo di servizio di jsp, ad esempio _jspservice che ha gli oggetti HttpServletRequest e HttpServletResponse come parametri

Linea di codice 4: Metodo di apertura

Linea di codice 5: Chiamata del metodo getWriter() dell'oggetto risposta per ottenere PrintWriterobject (stampa la rappresentazione formattata degli oggetti nel flusso di output del testo)

Linea di codice 6: chiamata al metodo setContentType dell'oggetto risposta per impostare il tipo di contenuto

Linea di codice 7: Utilizzando write() metodo dell'oggetto PrintWriter che tenta di analizzare html

Linea di codice 8: Inizializzazione della variabile demovar su 0

Linea di codice 9: Chiamata write() metodo dell'oggetto PrintWriter per analizzare il testo

Linea di codice 10: Chiamata print() metodo dell'oggetto PrintWriter per incrementare la variabile demovar da 0+1=1. Quindi, l'output sarà 1

Linea di codice 11: Utilizzando write() metodo dell'oggetto PrintWriter che tenta di analizzare html

Produzione:

Ciclo di vita di JSP

  • Qui puoi vedere che nello screenshot theOutput è 1 perché demvar è inizializzato a 0 e quindi incrementato a 0+1=1

Nell'esempio sopra,

  • demo.jsp, è un JSP in cui una variabile viene inizializzata e incrementata. Questo JSP viene convertito nel servlet (demo_jsp.class) in cui il motore JSP carica la pagina JSP e la converte in contenuto servlet.
  • Quando avviene la conversione, viene convertito tutto il testo del modello println() dichiarazioni e tutto il resto Elementi JSP vengono convertiti in Java codice.

Ecco come una semplice pagina JSP viene tradotta in una classe servlet.

2) Compilazione della Pagina JSP

  • Il file servlet Java generato viene compilato nella classe servlet Java
  • La traduzione della pagina sorgente Java nella sua classe di implementazione può avvenire in qualsiasi momento tra la distribuzione della pagina JSP nel contenitore e l'elaborazione della pagina JSP.
  • Nella descrizione pittorica sopra demo_jsp.java è compilato in un file di classe demo_jsp.class

3) Caricamento delle classi

  • La classe servlet che è stata caricata dall'origine JSP viene ora caricata nel contenitore

4) Istanziazione

  • In questo passaggio viene generato l'oggetto, ovvero l'istanza della classe.
  • Il contenitore gestisce una o più istanze di questa classe nella risposta a richieste e altri eventi. In genere, un contenitore JSP viene creato utilizzando un contenitore servlet. Un contenitore JSP è un'estensione del contenitore servlet poiché sia ​​il contenitore supporta JSP che il servlet.
  • Fornisce un'interfaccia JSPPage fornita dal contenitore init() e di destroy() metodi.
  • Esiste un'interfaccia HttpJSPPage che serve le richieste HTTP e contiene anche il metodo del servizio.

5) Inizializzazione

public void jspInit()
{
	//initializing the code
}
  • _jspinit() Il metodo avvierà l'istanza del servlet che è stata generata da JSP e verrà richiamato dal contenitore in questa fase.
  • Una volta creata l'istanza, il metodo init verrà richiamato immediatamente
  • Viene chiamato solo una volta durante il ciclo di vita della JSP, il metodo per l'inizializzazione è dichiarato come mostrato sopra

6) Elaborazione della richiesta

void _jspservice(HttpServletRequest request HttpServletResponse response)
{
	//handling all request and responses
}
  • _jspservice() Il metodo viene invocato dal contenitore per tutte le richieste sollevate dalla pagina JSP durante il suo ciclo di vita
  • Per questa fase, è necessario passare attraverso tutte le fasi precedenti e quindi è possibile richiamare solo il metodo di servizio.
  • Passa oggetti di richiesta e risposta
  • Questo metodo non può essere sovrascritto
  • Il metodo è mostrato sopra: è responsabile della generazione di tutti i metodi HTTP, ad esempio GET, POST, ecc.

7) Distruggi

public void _jspdestroy()
{
            //all clean up code
}
  • _jspdestroy() Il metodo viene richiamato anche dal contenitore
  • Questo metodo viene chiamato quando il contenitore decide di non aver più bisogno dell'istanza del servlet per soddisfare le richieste.
  • Quando viene effettuata la chiamata al metodo destroy, la servlet è pronta per la garbage collection
  • Questa è la fine del ciclo di vita.
  • Possiamo sovrascrivere jspdestroy() metodo quando eseguiamo qualsiasi pulizia come il rilascio delle connessioni al database o la chiusura dei file aperti.