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.
I seguenti passaggi spiegano il ciclo di vita di JSP:
- Traduzione della pagina JSP
- Compilazione della pagina JSP (Compilazione della pagina JSP in _jsp.java)
- Caricamento della classe (_jsp.java viene convertito nel file di classe _jsp.class)
- Istanziazione (viene creato l'oggetto del servlet generato)
- Inizializzazione(
_jspinit()il metodo viene richiamato dal contenitore) - Elaborazione della richiesta (
_jspservice()metodo viene richiamato dal contenitore) - 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.
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:
- 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()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.



