Introduzione alle Servlet 3.0

Inizio questo articolo “dalla fine”, con la bibliografia, citando i testi che ho utilizzato per scrivere questo articolo in modo da darvi dei testi da acquistare nel caso vogliate approfondire gli argomenti introdotti in questa sede.

Ho fatto molte ricerche sui libri dedicati alle Servlet, ed ho notato che i libri consigliati ai principianti sono fondamentalmente due:

Entrambi affrontano assieme alle Servlet anche il discorso relativo alle JSP, ma trattano poco o nulla gli altri componenti JEE, per i quali esistono altri libri specifici (potete trovare i link ad alcuni libri su Java EE alcuni anche in questo blog, negli articoli relativi a JEE).

La differenza più importante tra i due, che fa pendere l’ago della bilancia a mio avviso verso il secondo titolo, è che il secondo è riferito ad una versione più nuova delle specifiche Java EE e delle Servlet, in particolare alle Servlet 3.0 e alle Java Server Pages 2.0. Ho letto entrambi i libri e devo dire che anche il primo è comunque valido, anche se non fa riferimento alle nuove funzionalità introdotte con Java EE 6.

Le Servlet

Un minimo di introduzione

Le Servlet vengono introdotte nel 1996 per competere, nell’ambito della creazione di contenuti web dinamici con lo standard CGI (Common Gateway Interface), che prevedeva l’esecuzione di un programma esterno scritto in un linguaggio di programmazione (soprattutto Perl, C, Python), che restituiva un certo contenuto dinamico al web server che provvedeva a restituirlo al browser dell’utente finale.

Essendo programmi che necessitano di un’esecuzione indipendente, ad ogni richiesta di una pagina dinamica doveva essere eseguito un nuovo processo: al contrario l’idea alla base della Servlet, che le permette di superare in velocità la tecnologia CGI è che esiste un processo sempre in esecuzione (il Servlet Container e ad ogni richiesta viene creato solo un thread (più leggero rispetto all’intero programma CGI), con evidenti vantaggi per quel che riguarda il discorso delle performance ed anche della scalabilità.

La struttura di una Servlet

Una Servlet è sostanzialmente una classe Java che estende Servlet o una sua sottoclasse (es. GenericServlet o HTTPServlet), in modo da implementare una determinata interfaccia che sarà utilizzata dal Servlet Container all’interno del quale la Servlet deve essere caricata.

Una Servlet infatti non possiede un metodo main (che renderebbe quindi possibile l’esecuzione Stand-Alone, come avviene per un programma CGI), utilizzando una determinata interfaccia (un contratto) il Servlet Container ne orchestra l’esecuzione ogni qualvolta che questo riceve una specifica richiesta per quella Servlet da parte di un Web Server.

Per capire a quale URL è associata l’esecuzione di una determinata Servlet ci sono due modi:

  • Definire all’interno di un file xml (WEB-INF/web.xml) chiamato Deployment Descriptor un mapping tra URL e la classe Servlet da richiamare
  • Novità Servlet 3.0! Utilizzare l’annotazione @WebServlet all’interno della classe Servlet

Il secondo metodo è più pratico (anche se necessita di ricompilare la classe per ogni modifica apportata), ed è stato introdotto solo ultimamente, quindi molti libri e tutorial online effettuano il mapping servlet->url utilizzando il deployment descriptor, che non è comunque sbagliato, ma non è il modo più veloce per arrivare al risultato.

Si tenga a mente che il DD (abbreviazione di Deployment Descriptor) così come anche l’annotazione, hanno anche altre funzionalità oltre a quella di mappare gli URL, in particolare si occupano di impostare parametri di configurazione iniziale, pagine di errore, regole di sicurezza ed altro.

Come scrivere un DD è un argomento che non verrà affrontato in questo articolo, ma in uno successivo.

Servlet Container

Consiglio di utilizzare Apache Tomcat: è un web/servlet container, cioè gestisce anche le richieste di pagine web, a differenza dei primi servlet container che erano dei semplici plugin per web server.

Per dovere di cronaca bisogna citare che è possibile eseguire Servlet anche all’interno di un Java Enterprise Edition Container, che permette anche il deployment degli altri componenti JEE oltre alle Servlet, come ad esempio i Java Beans.

Esistono molti JEE container gratuiti e a pagamento (GlassFish, JBoss, WebLogic Server, eccetera), ad ogni modo se dovete solo utilizzare Servlet e non gli altri componenti JEE è consigliato utilizzare un Web/Servlet Container come Tomcat, che risulta più snello da eseguire e configurare.

Nel prossimo articolo vedremo come scrivere la nostra prima Servlet (utilizzando Eclipse). Se non volete aspettare, vi ricordo che i testi consigliati per entrare nel mondo delle Servlet sono i seguenti:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *