Lezione Servlet Natalizi

Post on 13-Jun-2015

692 views 3 download

description

come organizzare un progetto JavaEE con servlet

Transcript of Lezione Servlet Natalizi

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