Lezione Servlet Natalizi

35
Oct 26, 2 022 Lezione Servlet Silvano Natalizi

description

come organizzare un progetto JavaEE con servlet

Transcript of Lezione Servlet Natalizi

Page 1: Lezione Servlet Natalizi

Apr 13, 2023

Lezione Servlet

Silvano Natalizi

Page 2: Lezione Servlet 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

Page 3: Lezione Servlet Natalizi

Client - Server

Page 4: Lezione Servlet Natalizi

Che cosa fa il web server ?

Page 5: Lezione Servlet Natalizi

Che cosa fa il client ?

Page 6: Lezione Servlet Natalizi

Il client browser ottiene l’HTML e lo visualizza all’utente

Page 7: Lezione Servlet Natalizi

Il protocollo HTTP

Page 8: Lezione Servlet Natalizi

Html è parte della risposta http

Page 9: Lezione Servlet Natalizi

Che cosa c’è nella request ? GET

Page 10: Lezione Servlet Natalizi

Che cosa c’è nella Request: POST

Page 11: Lezione Servlet Natalizi

Anatomia di una request GET

Page 12: Lezione Servlet Natalizi

Anatomia di una richiesta POST

Page 13: Lezione Servlet Natalizi

Anatomia di una response HTTP

Page 14: Lezione Servlet Natalizi

Tutti i pezzi del puzzle

Page 15: Lezione Servlet Natalizi

Il server web ama servire pagine statiche

Page 16: Lezione Servlet Natalizi

Web server application

Page 17: Lezione Servlet Natalizi

Helper app

Page 18: Lezione Servlet Natalizi

Che cosa è un contenitore ?

Page 19: Lezione Servlet Natalizi

La servlet

Una servlet non ha un metodo main Essa è sotto il controllo di un’altra applicazione java Questa applicazione java è un container

Page 20: Lezione Servlet Natalizi

Come è fatta una servlet

Page 21: Lezione Servlet Natalizi

Organizzare un progetto

La servlet è salvata in src La classe compilata è

salvata nella cartella classes

Il descrittore web.xml nella cartella etc

Page 22: Lezione Servlet Natalizi

Organizzazione delle cartelle nel server

Page 23: Lezione Servlet Natalizi

Il comando di compilazione

Page 24: Lezione Servlet Natalizi

Web.xml

Page 25: Lezione Servlet Natalizi

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

Page 26: Lezione Servlet Natalizi

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

Page 27: Lezione Servlet Natalizi

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().

Page 28: Lezione Servlet Natalizi

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

Page 29: Lezione Servlet Natalizi

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()

Page 30: Lezione Servlet Natalizi

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

Page 31: Lezione Servlet Natalizi

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

Page 32: Lezione Servlet Natalizi

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

Page 33: Lezione Servlet Natalizi

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;

Page 34: Lezione Servlet Natalizi

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

Page 35: Lezione Servlet Natalizi

The End