Nell’articolo della settimana scorsa abbiamo creato una semplice Servlet in grado di rispondere ad una chiamata HTTP e di generare sullo standard output un flusso HTML interpretabile dal browser.
Obiettivo di oggi è invece creare una Servlet che in funzione di un parametro che le viene passato si comporti in maniera differente, in particolare modificando il colore di sfondo della pagina HTML visualizzata dal browser.
La Servlet che vogliamo costruire si chiamerà colorServlet e riceverà sulla QueryString, cioè utilizzando il metodo HTTP Get, il parametro color=nomecolore mentre se non vengono specificati parametri si prenderà come default “white”, cioè il colore bianco.
La Servlet, inoltre, produrrà sul browser una pagina HTML in grado di richiamare se stessa attraverso un semplice form ed una lista di radio button.
Ecco cosa vogliamo ottenere:
Come si vede quando la Servlet viene chiamata senza parametri restituisce al browser una pagina HTML con una lista di radio button ed un pulsante di submit.
Selezionando un colore e premendo il pulsante si ottiene il risultato seguente:
In questo caso la Servlet ha richiamato se stessa passandosi il parametro che identifica il colore di sfondo della pagina, di conseguenza la Servlet stessa deve essere in grado di leggere questo parametro per poterlo utilizzare.
Come avviene questo? Per capirlo diamo un’occhiata al codice Java della Servlet.
package com.apogeo;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class colorServlet extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
String color_param;
color_param = request.getParameter(“color”);
if (color_param == null) color_param = “white”;
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();
out.println(““);
out.println(“
“);out.println(“
Color Servlet “);out.println(““);
out.println(“
“);out.println(“
“);
out.println(““);
out.println(““);
}
}
/
A parte la sezione che si occupa di generare il codice HTML da restituire al browser, possiamo notare questa porzione di codice:
String color_param;
color_param = request.getParameter(“color”);
if (color_param == null) color_param = “white”;
/
C’è un oggetto String di nome color_param che viene inizializzato utilizzando il metodo getParameter dell’oggetto request.
L’oggetto request è la richiesta HTTP che il client effettua alla Servlet ed il suo metodo getParameter, come si può intuire, restituisce il valore del parametro il cui nome viene passato al metodo.
Nel nostro caso, quindi, l’oggetto color_param viene inizializzato al valore “red” e questo valore viene poi utilizzato durante la creazione dello stream di output per dare un valore all’attributo bgcolor del tag
. Ecco come:out.println(“
“);/
Come vedete, e come era lecito aspettarsi, una servlet può ricevere parametri via HTTP e può assumere di conseguenza dei comportamenti differenti in funzione dei valori dei parametri stessi.
Questo apre la strada ad integrazioni tra le Servlet e le altri componenti dello standard J2EE. Ne parleremo.