Abbiamo parlato in precedenza dell’utilizzo di componenti attive lato server che, nel contesto di una Web Application si occupano di gestire le problematiche di back-end e front-end. Si tratta in particolare delle Servlet che, come abbiamo visto, permettono di gestire una request HTTP (anche parametrica) e produrre un output in streaming nella response HTTP in modo che giunga direttamente al dispositivo chiamante.
Questa soluzione, seppur dotata di caratteristiche interessanti, ha però dei limiti intrinseci, vediamo perché.
I limiti delle Servlet
Analizziamo il codice di una delle Servlet di esempio presentate in precedenza, si tratta del file provaServlet.java:
package com.apogeo;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;public class provaServlet extends HttpServlet
“);
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();
out.println(““);
out.println(“
out.println(““);
out.println(“Prova di utilizzo di una Servlet “);
out.println(““);
out.println(““);
out.println(“Questo output è prodotto da una Servlet
“);
out.println(““);
out.println(““);
}
}/
Come si può vedere gran parte del codice di questa Servlet è dedicato alla gestione dell’output attraverso l’utilizzo dell’istruzione out.println(“…”);
Questo comporta che ad ogni singola modifica di un componente dell’interfaccia sia necessario scrivere codice Java e ricompilare la Servlet per testare quanto modificato, certamente non il massimo dell’efficienza.
Non dimentichiamo poi che il codice HTML gestito dai browser di nuova generazione può essere anche molto complesso, magari dotato esso stessi di codice di scripting client side.
Ecco quindi nascere l’esigenza di avere uno strumento più flessibile per la gestione del lato di presentazione di una Web Application, questo strumento può essere costituito dalla Java Server Pages.
Definizioni
Una Java Server Page (JSP) è una pagina HTML condita con codice Java.
La pagina viene trattata dal JSP Engine dell’Application Server e viene trasformata, alla prima chiamata che cerca di utilizzarla, in una Servlet.
In particolare il codice JSP viene trasformato in codice Java, questo viene compilato ottenendo una Servlet il cui comportamento dipenderà da due fattori:
dal suo codice Java (si tratta come vedremo di particolari scripting element) per quanto riguarda la logica di business
dal codice HTML per quanto riguarda l’aspetto di presentazione.ù
Esempio
Per capire come questo possa avvenire scriviamo una JSP di prova, eccone il codice:
Esempio di pagina JSP
Oggi è il: <%= new java.util.Date() %>
/
Ora prendiamo questo codice e creiamo il file:
C:ProgrammiApache Tomcat 4.0webappsapogeoprova.jsp
/
Si tratta quindi di una JSP collocata nella root directory della Web Application di nome “apogeo” nell’application container predefinito dell’application server Tomcat.
Lanciamo ora Tomcat ed effettuiamo una request alla pagina in questione attraverso l’url:
http://localhost:8080/apogeo/prova.jsp
/
Ecco quello che otterremo:
L’utilizzo del tag speciale <%= new java.util.Date() %> ha prodotto il risultato che immaginavamo, ovvero l’output della data corrente del server.
Se adesso andiamo a curiosare nella cartella dove di solito vengono generate e compilate le Servlet derivate dalle JSP, cioè la cartella:
C:ProgrammiApache Tomcat 4.0worklocalhostapogeo
/
troveremo il file prova$jsp.java, contenente il codice Java della Servlet ottenuta dalla prima elaborazione della pagina JSP.
Dalla seconda chiamata in poi, in effetti, la Servlet non deve più essere ricompilata.
Naturalmente al suo fianco sarà presente anche il compilato prova$jsp.java.
Conclusioni
Utilizzando le pagine JSP siamo in grado di scrivere codice HTML arricchito da codice script server side ed il linguaggio utilizzato per scrivere questo codice è, naturalmente, Java.