JSP - Architettura
Il server Web necessita di un motore JSP, ovvero un contenitore per elaborare le pagine JSP. Il contenitore JSP è responsabile dell'intercettazione delle richieste per le pagine JSP. Questo tutorial fa uso di Apache che ha un contenitore JSP integrato per supportare lo sviluppo di pagine JSP.
Un contenitore JSP funziona con il server Web per fornire l'ambiente di runtime e altri servizi necessari a JSP. Sa capire gli elementi speciali che fanno parte dei JSP.
Il diagramma seguente mostra la posizione del contenitore JSP e dei file JSP in un'applicazione Web.
Elaborazione JSP
I seguenti passaggi spiegano come il server Web crea la pagina Web utilizzando JSP -
Come con una normale pagina, il tuo browser invia una richiesta HTTP al server web.
Il server Web riconosce che la richiesta HTTP è per una pagina JSP e la inoltra a un motore JSP. Questo viene fatto utilizzando l'URL o la pagina JSP che termina con.jsp invece di .html.
Il motore JSP carica la pagina JSP dal disco e la converte in un contenuto servlet. Questa conversione è molto semplice in cui tutto il testo del modello viene convertito in istruzioni println () e tutti gli elementi JSP vengono convertiti in codice Java. Questo codice implementa il comportamento dinamico corrispondente della pagina.
Il motore JSP compila il servlet in una classe eseguibile e inoltra la richiesta originale a un motore servlet.
Una parte del server web chiamata motore servlet carica la classe Servlet e la esegue. Durante l'esecuzione, il servlet produce un output in formato HTML. L'output viene trasmesso al server web dal motore servlet all'interno di una risposta HTTP.
Il server web inoltra la risposta HTTP al tuo browser in termini di contenuto HTML statico.
Infine, il browser web gestisce la pagina HTML generata dinamicamente all'interno della risposta HTTP esattamente come se fosse una pagina statica.
Tutti i passaggi sopra menzionati possono essere visti nel diagramma seguente:
In genere, il motore JSP verifica se esiste già un servlet per un file JSP e se la data di modifica sul JSP è precedente al servlet. Se il JSP è più vecchio del servlet generato, il contenitore JSP presume che il JSP non sia cambiato e che il servlet generato corrisponda ancora al contenuto del JSP. Questo rende il processo più efficiente rispetto agli altri linguaggi di scripting (come PHP) e quindi più veloce.
Quindi, in un certo senso, una pagina JSP è davvero solo un altro modo per scrivere un servlet senza dover essere un mago di programmazione Java. Ad eccezione della fase di traduzione, una pagina JSP viene gestita esattamente come un normale servlet.