Antonio d Acierno 13/01/2006 1 Introduzione alle Servlet - Isa-Cnr

Antonio d Acierno
13/01/2006
Servlet
Introduzione alle Servlet
Corso di Sistemi Web e
Basi Dati
Prof. Antonio d Acierno
Alternativa Java ai CGI-BIN
Classi java che estendono le funzionalità
di un server Web generando
dinamicamente le pagine Web.
Riferimento:
http://java.sun.com/products/servlets
http://www.coreservlets.com
1
Vantaggi di una servlet
2
Servlet Engine
Efficienti
Con l approccio CGI-BIN un nuovo programma è avviato per ogni richiesta. Con le
servlets ogni nuova richiesta è gestita tramite threads.
Convenienti
Esiste un significativa infrastruttura per leggere e decodificare forms, mantenere i dati
di una sessione, gestire cookies, gestrire headers HTTP, interagire con DB, etc.
Possibilità di riutilizzare opportunamente l enorme quantità di utilities JAVA presenti nel
mondo freeware/opensource
Portabili
Sono scritte in Java rispettando uno standard ben preciso.
Sicure
Non sono eseguibili a se stanti, per cui non sono utilizzabili per attaccare un
server.
Economiche
Tutta l infrastruttura necessaria esiste (anche) nel mondo open source.
3
Le servlet operano in una macchina virtuale
dell ambiente controllato dal server e
comunicano con i client utilizzando
semplicemente i comandi HTTP.
Servlet Engine: gestisce il caricamento e lo
scaricamento delle servlet e collabora con il
server Web per dirigere le richieste alle servlet
e per rinviare il loro output ai client Web.
4
1
Antonio d Acierno
13/01/2006
Architettura di riferimento
Servlet Engine: Tomcat
Tomcat
http://tomcat.apache.org/
Realizza sia l'engine per Servlet e JSP, sia l engine
per HTTP.
Può essere utilizzato come server web completo di
tecnologia servlet/jsp.
La versione corrente di Tomcat è la 5.X
Tomcat è scritto in Java, per cui richiede un
Java Runtime Environment (JRE) per poter
funzionare (almeno la versione 1.5.0 per
Tomcat 5.0).
5
Tomcat Monitor
6
Tomcat funziona!
http://localhost:8080/
7
8
2
Antonio d Acierno
13/01/2006
Applicazione web secondo
Tomcat
Layout delle directories di una
Web Application in Tomcat
Un'applicazione Web è l'insieme di file
html, immagini, servlet, jsp, ecc. che
servono per realizzare le pagine di un
sito Web.
In Tomcat un'applicazione Web è
denominata Context.
Un applicazione Web deve essere
organizzata secondo una struttura ben
precisa.
Nella root directory dell applicazione
*.html, *.jsp, etc.
I file che devono essere visibilie al bowser del client.
/WEB-INF/web.xml
Il file web.xml rappresenta il descrittore dell applicazione. E un file XML
che descrive le servlets e gli altri componenti dell applicazione.
/WEB-INF/classes/
Questa directory contiene le classi java organizzarti in packages..
/WEB-INF/lib/
Contiene i files JAR che contengono classi JAVA necessarie
all applicazione.
Esistono directories per librerie condivise tra più applicazioni.
I nuovi server accettano applicazioni nel formato Web
Application Archive (WAR).
9
Servlet: ciclo di vita
10
Servlet: Esempio
L engine svolge le seguenti operazioni:
carica una Servlet la prima volta che viene
richiesta;
richiama il metodo init() della Servlet;
gestisce le varie richieste richiamando il
metodo service() delle Servlet in una nuova
thread;
alla chiusura richiama il metodo destroy()
11
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletHelloWWW extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws IOException,
ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println( <HTML><HEAD> );
out.println( <TITLE>Hello World </TITLE></HEAD> );
out.println( <BODY> <H1> Hello World
</H1></BODY></HTML> );
}
}
12
3
Antonio d Acierno
13/01/2006
Compilare ed eseguire una
servlet
Session tracking
HTTP è un protocollo stateless:
Ogni volta che un client richiede una pagina lo
fa con una nuova connessione ed il server
non mantiene informazioni sul client stesso.
Importante: sbloccare l invoker nel file
C:\Programmi\Apache Software Foundation\Tomcat 5.5\conf\web.xml
Problema
Copiare il .class nella dir
C:\Programmi\Apache Software Foundation\Tomcat 5.5\webapps\ROOT\WEBINF\classes
In un sito di e-commerce, un cliente aggiunge
prodotti al suo carrello. Come fa il server a
ricordarsi cosa il cliente ha nel carrello?
13
Soluzioni possibili
14
L API HttpSession
HTTP Cookies
Un cookie è un insieme sintetico di informazioni
inviate da un web server ad un client. Il client, ogni
volta che accede una pagina su quel server, reinvia
queste informazioni.
URL-Rewriting
Ogni URL locale su cui l utente può cliccare è riscritto
in modo da portare con se le informazioni necessarie
ad identificare la sessione.
Hidden form field
15
Le servlet propongono una soluzione
basata sull interfaccia HttpSession che
usa cookies o (se il browser non li
supporta o se questi sono esplicitamente
disattivati) URL rewriting.
Il programmatore non deve preoccuparsi
di dettagli implementativi manipolando
cookies o informazioni da appendere
all URL.
16
4
Antonio d Acierno
13/01/2006
L API HttpSession
L API HttpSession
Ogni sessione ha un oggetto HttpSession
che può essere invocato con il metodo
getSession di HttpServletRequest.
HttpSession session =request.getSession(true);
Con il parametro true, se la sessione non
esiste ancora viene creata.
Con parametro false, se la sessione non
esiste getSession ritornerà null.
Gli oggetti HttpSession vivono sul server
e sono automaticamente associati al
client tramite una meccanismo tipo
cookies o URL-rewriting.
Un oggetto HttpSession ha una serie di
metodi tra cui vanno citati
setAttribute(String name, Object obj)
Object getAttribute(String name)
17
Esempio
18
Esempio
19
20
5
Antonio d Acierno
13/01/2006
Esempio
Esempio
21
22
6