Apr 13, 2023
Lezione Servlet
Silvano Natalizi
Le form Html e le Servlet
Le form HTML permettono l’input dei dati tramite le loro caselle di testo, ma non possono elaborare questa informazione per creare una risposta dinamica.
Per elaborare l’informazione possiamo usare una SERVLET
Questa è uno speciale programma java che può estrarre l’informazione da una request, ed inviare al cliente la risposta (response) desiderata
Client - Server
Che cosa fa il web server ?
Che cosa fa il client ?
Il client browser ottiene l’HTML e lo visualizza all’utente
Il protocollo HTTP
Html è parte della risposta http
Che cosa c’è nella request ? GET
Che cosa c’è nella Request: POST
Anatomia di una request GET
Anatomia di una richiesta POST
Anatomia di una response HTTP
Tutti i pezzi del puzzle
Il server web ama servire pagine statiche
Web server application
Helper app
Che cosa è un contenitore ?
La servlet
Una servlet non ha un metodo main Essa è sotto il controllo di un’altra applicazione java Questa applicazione java è un container
Come è fatta una servlet
Organizzare un progetto
La servlet è salvata in src La classe compilata è
salvata nella cartella classes
Il descrittore web.xml nella cartella etc
Organizzazione delle cartelle nel server
Il comando di compilazione
Web.xml
Approfondimento Servlet
Il package javax.servlet.http ha la classe HttpServlet che possiamo usare per scrivere la nostra Servlet.
Javax è un’estensione di java HttpServlet è una classe astratta (abstract) Dobbiamo pertanto definire la nostra servlet che eredita
(extends) HttpServlet e la personalizza per i campi che abbiamo sulla nostra form
Ad esempio una form con i campi firstName e lastName Questa form deve ora puntare alla nostra servlet
Struttura predefinita della servlet
Una servlet è una classe java con una struttura predefinita, nonché metodi ed attributi.
Questi sono mandati in esecuzione con una sequenza preordinata ogni qual volta c’è una request per la servlet
Metodi della servlet
Due dei più importanti metodi della servlet sono: doGet() doPost() Questi metodi sono richiamati automaticamente dalla
classe genitrice HttpServlet quando c’è rispettivamente una richiesta GET/POST
Per elaborare un contenuto personalizzato, occorre sovrascrivere i metodi doGet() e doPosto().
Sovrascrittura doGet
Per sovrascrivere il metodo doGet, dobbiamo comprendere la sua dichiarazione (signature)
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
Ha un parametro HttpServletRequest chiamato req Ha un parametro HttpServletResponse chiamatato resp
Il parametro req
req rappresenta la richiesta corrente da elaborare L’input immesso nella form html è trasportato fino al
server dalla richiesta quello che ci occorre è un metodo per ricavare dal
parametro req questa informazione. Questo metodo c’è !! Si chiama getParameter()
getParameter()
Il metodo getParameter() è dichiarato nella interface HttpServletRequest
Al metodo getParameter() passiamo il nome del campo di input che vogliamo ricavare
getParameter ci restituisce il valore che l’utente ha digitato per quella variabile
Esempio getParameter
Se vogliamo ottenere il valore digitato dall’utente nel campo di <input> firstName della form html:
String nome=req.getParameter(“firstName”); il valore restituito dal metodo getParameter() è sempre
di tipo String e contiene null se il campo cercato non esiste nella request
Il parametro resp
Ok abbiamo ottenuto firstName e lastName dalla request ed ora ?
L’azione successiva da intraprendereè creare una dinamica risponse, magari rinviando al cliente firstName e lastName.
A questo scopo già abbiamo un puntatore all’oggetto response: resp
resp è di tipo HttpServletResponse
Il metodo getWriter()
La classe HttpServletResponse ha un conveniente metodo chiamato getWriter che restituisce un oggetto di tipo java.io.PrintWriter:
PrintWriter out=resp.getWriter;
Un oggetto di tipo PrintWriter
Usiamo un oggetto di tipo PrintWriter per scrivere qualsiasi elemento HTML che vogliamo mostrare nel browser del client.
PrintWriter è simile a System.out. In entrambi i casi si usa println() per scrivere una
stringa di caratteri. Ma nel primo caso questa stringa è visualizzata sullo schermo del computer; nel caso invece del println di PrintWriter il contenuto scritto è trasmesso al cliente e visualizzato come HTML
The End
Top Related