Home
Configurare una Servlet

11 Luglio 2002

Configurare una Servlet

di

Passare parametri di configurazione ad una Servlet

Come si è visto negli articoli precedenti una Servlet è una componente applicativa server-side in grado di rispondere direttamente alle request HTTP producendo le adeguate response anche in funzione di parametri che possano essere passati alla Servlet utilizzando i metodi HTTP Get e Post.

Per capire come sia possibile un’operazione di questo genere è necessario comprendere quale sia il life-time di una generica Servlet ed in particolare quale sia il comportamento del Servlet Engine quando i suoi servizi vengano richiesti dall’Application Server in caso di request HTTP diretta esplicitamente ad una Servlet.

In particolare si hanno tre casi distinti:

  • prima request: il Servlet Engine carica in memoria la Servlet e ne richiama il metodo init()
  • request successive: il Servlet Engine chiama il metodo service() della Servlet
  • richiesta di eliminazione: il Servlet Engone chiama il metodo destroy() della Servlet

Nel caso in cui, quindi, si intendano passare parametri di configurazione ad una Servlet è ovvio che questi debbano essere scritti da qualche parte e letti allo startup del servizio, cioè nel metodo init() della Servlet stessa.

L’oggetto ideale per contenere i parametri per una Servlet è senza dubbio il file di configurazione della Web Application che contiene la Servlet stessa, cioè il file web.xml.
Vediamo a proposito un frammento del file web.xml dell’applicazione sviluppata in precedenza contenente la colorServlet.



color


com.apogeo.colorServlet

/



color


/colorServlet

/

Questo frammento di XML descrive all’Application Server che esiste una Servlet cui assegniamo un alias-name color ed è implementata attraverso la classe com.apogeo.colorServlet
A questa Servlet inoltre assegniamo un percorso HTTP rimappato in modo che questa possa essere chiamata attraverso un url del tipo: http://hostname:port/app-name/colorServlet

Appare chiaro dunque come sia proprio questo il posto giusto per contenere le informazioni di configurazione ed inizializzazione per una componente applicativa come una Servlet, vediamo come questo potrebbe essere fatto.

Supponiamo di voler sviluppare, utilizzando una Servlet, un convertitore di valuta che trasformi il dato in ingresso e lo converta, ad esempio, dalla Lira all’Euro. Un parametro come il fattore di conversione, il famoso 1 Euro = 1936,27 Lire, potrebbe essere direttamente cablato nel codice poiché esiste una ragionevole certezza che non muti con il passare del tempo. In ogni caso sappiamo che non è bene inserire valori grezzi direttamente all’interno del codice, pertanto lo inseriremo tra i parametri di configurazione contenuti all’interno del file web.xml



euroconverter


com.apogeo.euroServlet

conversion1936,27

/



euroconverter


/euroServlet

/

Chiaramente ha senso inserire dei parametri di configurazione per una componente soltanto se siamo in grado di leggerne questi valori, questo si ottiene riscrivendo il metodo init() della Servlet, ecco come:

public class euroServlet extends HttpServlet
{
private Double conversionValue;

public void init(ServletConfig conf) trows ServletException
{
super.init(conf);
conversionValue = conf.getInitParameter(“conversion”);
}

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{

}
}

/

Come vediamo riscrivendo il metodo init() è possibile recuperare i parametri di configurazione che avevamo in precedenza impostato all’interno del file web.xml e, a questo punto, inserirli ad esempio all’interno di una sessione applicativa per gestirli all’interno della stessa Servlet oppure da pagine JSP.

L'autore

  • Massimo Canducci
    Massimo Canducci vanta oltre 25 anni di esperienza nel campo dell'innovazione e della digital transformation ed è Chief Innovation Officer per Engineering Ingegneria Informatica. È docente alla Singularity University, l'Università di Torino e l'Università di Pavia, e insegna in master MBA.

Iscriviti alla newsletter

Novità, promozioni e approfondimenti per imparare sempre qualcosa di nuovo

Gli argomenti che mi interessano:
Iscrivendomi dichiaro di aver preso visione dell’Informativa fornita ai sensi dell'art. 13 e 14 del Regolamento Europeo EU 679/2016.