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.

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

Primi passi e impostazione

Una servlet non è altro che un’applicazione eseguita da un Web servers a cui aggiunge delle funzionalità. Tipicamente la Servlet è uno dei componenti più 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. Interessante anche notare che, nonostante qui vedremo le Servlet applicate al protocollo HTTP, queste possono essere usate anche in altri contesti e con altri protocolli, sfruttando ugualmente tutte le potenzialità del linguaggio Java.

Un’operazione preliminare alla creazione della nostra prima servlet è quella di rendere disponibile a netbeans un application server su cui farla girare.

Articolo offerto da:

hosty_logo.jpg

Hosty.it utilizza strumenti tecnologicamente avanzati e seri professionisti per la miglior gestione dei vostri siti web.

L’azienda è specializzata nei più importanti tipi di hosting. Assistenza eccezionale, ottimo prezzo e soluzioni preconfigurate rendono Hosty.it il partners ideale per tutti coloro che pensano al web come una grande opportunità di crescita e guadagno. L’azienda offre piani hosting Java, Ruby on Rails con la possibilità di aggiungere altri servizi, oltre ad una soluzione ecommerce e un piano rivenditori.

In questa guida come application server utilizziamo Apache Tomcat che potete scaricare gratuitamente a questo indirizzo http://tomcat.apache.org/download-60.cgi

Una volta scaricato l’archivio .zip contenente Tomcat basterà estrarlo sul pc.

Passiamo ora alla creazione della nostra servlet. Una volta fatto partire Netbeans cliccate su file e successivamente su new project, quindi su web, web application e infine next.

netb1.jpg

A questo punto si aprirà una finestra che vi chiede il nome del progetto e dove collocarlo sul disco. Nel nostro esempio abbiamo chiamato il progetto “PrimaServlet” e l’abbiamo impostato come progetto principale spuntando la casella apposita.

netb2.jpg

Ora si aprirà la finestra “Server and Settings” che serve a specificare che application server utilizzare e il percorso dove è presente sul nostro pc.

Cliccate su Add quindi selezionate la versione di Tomcat che avete precedentemente scaricato e cliccate su next.

netb3.jpg

La finestra seguente sarà “Add Server Instance”; come percorso del Catalina Home di Tomcat si dovrà specificare la cartella che avete precedentemente estratto contenente l’application server.

Quindi dovrete creare un nuovo utente Tomcat con il ruolo di “manager” andando a modificare il file tomcat-users.xml presente nella cartella apache-tomcat-6.0.18conf e inserire username e password dove richieso da NetBeans.

netb4.jpg

Un’esempio di configurazione del file tomcat-users.xml è mostrato nella figura seguente.

netb5.jpg

A questo punto NetBeans avrà creato tutto l’occorrente per permetterci di scrivere la nostra prima servlet.

All’interno della cartella “web” inseriremo le nostre pagine jsp, all’interno della cartella src/java inseriremo i nostri file.java e all’interno della cartella web/WEB-INF sarà presente il file “web.xml” nel quale andranno specificati vari parametri di configurazione che permetteranno alla nostra servlet di funzionare come: il nome utilizzato per invocare la servlet (il suo alias), una descrizione della servlet, il percorso o i percorsi che fanno in modo che il contenitore di servlet invochi la servlet.

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.

Test di funzionamento e utilizzo avanzato della servlet

Test di funzionamento e utilizzo avanzato della servlet

La nostra prima servlet ora è pronta e il suo compito è quello di restituire una pagina html quando c’è la richiesta PrimaServet/InvocareServlet; Per testare il suo funzionamento cliccate sul pulsante “run main project” nella parte alta di NetBeans.

A questo punto dovrebbe aprirsi il vostro browser con il contenuto della pagina index.jsp contenuta nella cartella web; Se tutto è andato per il verso giusto richiamando PrimaServlet/InvocareServlet richiamerete la vostra servlet e quindi il la pagina html presente all’interno del try nel metodo processRequest.

netb9.jpg

A questo punto potremmo complicare leggermente la servlet facendo in modo che questa riceva e stampi a video un parametro passatogli da una form inserita nell’index.jsp.

Il procedimento è molto semplice basterà inserire una form nell’index.jsp specificando come action della form la nostra servlet:

  

e inserendo nel try dalla servlet la riga:

out.println(request.getParameter("parametro"));[/crayon]

che recupererà il parametro passatogli dalla form e lo stamperà a video.

A cura di Hosty.it per HostingTalk.it