Realizzare una semplice servlet con NetBeans

Un articolo per capire cosa sia e come realizzare una semplice servlet con NetBeans: tutto il necessario per iniziare subito e testare il funzionamento della servlet tramite Apache Tomcat. Primi passi e impostazione Una servlet non e altro che un'applicazione eseguita da un Web servers a cui aggiunge delle funzionalita. Tipicamente la Servlet e uno dei componenti piu importanti e di maggior impegno, a livello di studio, per chi si avvicina al mondo Java: questo elemento all'interno dell'applicazione gestisce solitamente lo scambio di messaggi tra client e server.

Creazione della servlet

Creazione della servlet

Per ora NetBeans non ha fatto altro che crearci una pagina jsp con scritto “Hello World!” che sarà invocata clicando sul tasto “run main project” e la struttura per permetterci di lavorare.

netb6.jpg

Per creare la nostra prima servlet cliccate con il tasto destro sulla cartella src/java nella finestra file alla vostra sinistra, quindi su new e poi su servlet.

netb7.jpg

Come Class name specificate “InvocareServlet”, lasciate il resto inalterato e cliccate su next. A questo punto vi verranno chiesti il nome della servlet e l’url pattern che sono due parametri che NetBeans andrà a inserire nel file web.xml di cui abbiamo parlato prima e che vedremo successivamente in dettaglio.

Specificate come nome servlet lo stesso nome che avete utilizzato per la classe e come url pattern /InvocareServlet che significa che l’indirizzo relativo che forniremo al browser per invocare la nostra servlet sarà PrimaServlet/InvocareServlet.

netb8.jpg

A questo punto NetBeans avrà creato un file InvocareServlet.java che è proprio la nostra servlet e avrà apportato delle modifiche al file web.xml.

Esaminiamo il file InvocareServlet.java:

I servlet basati sul web tipicamente estendono la classe HttpServlet sovrascrivendone alcuni o tutti i suoi metodi.

Infatti la prima riga di codice della nostra servlet è proprio

“public class InvocareServlet extends HttpServlet {…”

Che crea una nuova classe “InvocareServlet” che estende HttpServlet ereditandone i metodi.

I due tipi di richieste Http più comuni sono GET e POST rispettivamente per ottenere informazioni da un’indirizzo o per inviare informazioni al server (ad esempio i dati di una form)

Per rispondere a tali richieste la classe HttpServlet delle servlet definisce i metodi doGet e doPost che ricevono come argomenti un’oggetto HttpServerRequest contenente la richiesta del client e un’oggetto HttpServletResponse contenete la risposta per il client.

Possiamo notare che all’interno del codice della nostra Servlet NetBeans ha fatto in modo da non fare distinzione tra i due metodi richiamando indistintamente il metodo processRequest da lui creato sia nel caso in cui sia stato invocato il metodo doGet che nel caso in cui sia stato invocato il doPost.

Infatti se guardiamo in dettaglio il codice i metodi doGet e doPost sono stati ridefiniti nel seguente modo:

in questo modo quando vengono invocati richiamano il metodo processRequest passandogli l’oggetto HttpServletRequest request e HttpServletResponse response.

Esaminiamo ora il metodo processRequest.

“throws ServletException, IOException”: significa che se processRequest non fosse in grado di gestire la richiesta del client lancerebbe una javax.servlet. ServletException e se processRequest incontrasse un’errore durante l’elaborazione del flusso di dati ( leggendo dal client o scrivendo al client), lancierebbe una java.io. IOException.

“.setContentType(“text/html;charset=UTF-8”);”: è un metodo dell’oggetto response che permette al browser di comprendere e gestire il contenuto della risposta per il client che in questo caso sarà una semplice pagina html.

“PrintWriter out = response.getWriter();”: permette al server di inviare al client il documento html.

Le righe all’interno del try, invece, creano il documento html inviato al client; NetBeans le ha commentate quindi per fare in modo da visualizzare la pagina dobbiamo rimuovere “/* TODO output your page here” e “*/”.

Avevamo detto che all’interno del file “web.xml” contenuto nella cartella web/WEB-INf devono essere specificati i parametri di configurazione che permetteranno alla nostra servlet di funzionare.

Esaminiamo il contenuto del file web.xml modificato da NetBeans:

  

InvocareServlet

InvocareServlet

InvocareServlet

/InvocareServlet

….

L’elemento servlet-name è il nome che scegliamo per la servlet, l’elemento servlet-class specifica il nome completo della classe della servlet e l’elemento servlet-mapping indica l’url relativo che forniremo al browser per richiamare la nostra servlet.