Home
Servlet

27 Giugno 2002

Servlet

di

Analizziamo una delle componenti fondamentali del pattern MVC

Quando abbiamo descritto il pattern MVC si è fatto un gran parlare di Servlet.

In particolare si è detto che la componente di dispatching della request all’applicazione sviluppata attraverso tale pattern è implementata proprio utilizzando una servlet, ma una servlet … cos’è?

Definizione

Una servlet è una componente applicativa server-side sviluppata in Java che risponde direttamente alle request HTTP ed è in grado di restituire in streaming un flusso di response HTTP.

La filosofia utilizzata assomiglia a quella dei software di Common Gateway Interface, i tanto amati (oppure odiati, a seconda delle esperienze) CGI.

Il grande vantaggio di avere una componente di questo tipo, cioè in grado di rispondere direttamente alle request HTTP, sta nel fatto che non si è obbligati ad avere una “pagina” (di solito una JSP) che faccia da tramite verso la componente pure-java, ma a rispondere ed a gestire la richiesta sarà la servlet stessa, magari utilizzando business logic contenuta all’interno di altre componenti (beans ed EJB).

Caratteristiche

Chiaramente non tutte le classi Java possono rispondere direttamente alle request HTTP, per far questo è necessario seguire una serie di regole, vediamole:

  • utilizza servlet.jar, che deve quindi essere nel CLASSPATH
  • deve importare javax.servlet.*
  • deve estendere la classe HttpServlet
  • deve implementare il metodo:
  • doGet(HttpServletRequest request, HttpServletResponse response)
  • throws IOException, ServletException
  • deve essere registrata nel file web.xml

I compiti di una servlet

La collocazione fisica impone alla servlet dei comportamenti obbligati che si traducono in caratteristiche specifiche di operatività, vediamo alcuni di questi comportamenti:

  • legge i dati dell’utente che vengono passati come parametri HTTP attraverso i metodi POST o GET
  • legge tutte le variabili d’ambiente della request HTTP, come ad esempio l’IP del chiamante oppure il device utilizzato per realizzare la request
  • produce un risultato computazionale, eventualmente utilizzando servizi messi a disposizione da altri business service
  • genera il flusso di output già formattato per la risposta, questo potrebbe essere HTML oppure XML che venga elaborato da una componente di trasformazione attraverso XSL
  • spedisce il flusso al client attraverso la response

Esempio

package 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(““);
}
}

/

Per compilare questo codice è necessario includere nel classpath il package servlet.jar ed eseguire il comando:

javac provaServlet.java

/

La classe così prodotta, cioè la nostra servlet, dovrà essere copiata all’interno della directory:

%TOMCAT_HOME%webappsapogeoWEB-INFclassescomapogeo

/

A questo punto è necessario registrare la servlet all’interno del file di configurazione dell’applicazione web, cioè il file web.xml. La sezione da inserire è la seguente:



prova


com.apogeo.provaServlet

/



prova


/provaServlet

/

Questa sezione, da includere dentro il root-tag



/

contiene tutte le configurazioni delle servlet utilizzate nella nostra applicazione.

Con queste impostazioni, una volta fatto partire l’application server, sarà possibile vedere il risultato dell’elaborazione utilizzando l’url:

http://localhost:8080/apogeo/provaServlet

/

Ecco il risultato della request:

Come si può vedere l’utilizzo è piuttosto semplice, nei prossimi articoli vedremo di approfondire l’argomento descrivendo anche le interazioni con le altre componenti delle specifiche J2EE

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.