Servlet. Nicola Gessa

Documenti analoghi
Introduzione alla programmazione Http lato server in Java

Tener traccia del client

Tito Flagella - Introduzione alla programmazione di Servlet

Note pratiche sullo sviluppo di servlet (I)

Gestire le sessioni con le Servlet

Servlet e JDBC. Servlet e Web Server. Servlet e Web Server. Servlet e Web Server. Richieste. Servlet. Servlet:

Programmazione server-side: Java Servlet

Servlet API. Programmazione in Ambienti Distribuiti A.A

SERVLET & JSP DISPENSE

Tecnologie di Sviluppo per il Web

I file WAR. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2004/05-1

Il Protocollo HTTP e la programmazione di estensioni Web

Server-side Programming: Java servlets Parte II

Architetture Web: un ripasso

Tito Flagella - Introduzione alla programmazione di Servlet

Sessioni Applicative in Http. Tito Flagella

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Laboratorio di reti II: Servlet

Laboratorio di sistemi Prima Web Application JSP [Java]

19. LA PROGRAMMAZIONE LATO SERVER

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL

Laboratorio Progettazione Web PHP e FORMs HTML. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2013/2014

Servlet e JDBC. Programmazione in Rete e Laboratorio

Web Programming. Lezione 4: Cookie e Sessioni. Giulio Rossetti 14/04/2011. Guru@Work

Servlet e JDBC. Servlet e Web Server. Servlet e Web Server. Servlet:

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

3 ServletContext. Marco Tessarotto Programmazione dei Web Server Anno Accademico

Socket & RMI Ingegneria del Software - San Pietro

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Architetture Web parte 2

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Osservazioni. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2005/06-1

Laboratorio di reti II: Java Server Pages

Tomcat & Servlet. Contenuti. Programmazione in Ambienti Distribuiti. Tomcat Applicazioni Web. Servlet JSP Uso delle sessioni

Laboratorio di Basi di Dati

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi

Lezione 1 Introduzione

Svantaggi delle servlet

Protocolli applicativi: FTP

HTTP adaptation layer per generico protocollo di scambio dati

appunti delle lezioni Architetture client/server: applicazioni client

Architettura MVC-2: i JavaBeans

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Java Virtual Machine

Chat. Si ha un server in ascolto sulla porta Quando un client richiede la connessione, il server risponde con: Connessione accettata.

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Database & WWW. Basi di dati Architetture e linee di evoluzione P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

SWISSCAST. Descrizione della modalità di esportazione di documenti in pagine HTML

Manuale Utente Albo Pretorio GA

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

Introduzione al Linguaggio C

Progetto di Gestione Documenti in Ambiente Web

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

APPENDICE A Servlet e Java Server Page

MANUALE UTENTE. TeamPortal Liste Distribuzioni

Do-Dots Protocollo di comunicazione

Ciclo di vita di una Servlet

I file di dati. Unità didattica D1 1

Siti web centrati sui dati (Data-centric web applications)

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Esercizio 2. Client e server comunicano attraverso socket TCP

Lezione 6: Form 27/04/2012

SQL Server Integration Services. SQL Server 2005: ETL - 1. Integration Services Project

1 JSPDynPage, componenti portale e Java Server Pages

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Lezione III: Oggetti ASP e interazione tramite form HTML

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

PSNET UC RUPAR PIEMONTE MANUALE OPERATIVO

Chat. Connettersi a un server di chat. Modificare le impostazioni di chat. Ricevere impostazioni chat. Chat

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistema Informativo di Teleraccolta EMITTENTI

SMS API. Documentazione Tecnica YouSMS HTTP API. YouSMS Evet Limited

Laboratorio di Sistemi Distribuiti Leonardo Mariani

View Mobile User s Guide

Inizializzazione degli Host. BOOTP e DHCP

Le tecnologie software Internet

Procedura SMS. Manuale Utente

Telematica II 17. Esercitazione/Laboratorio 6

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

Architettura MVC-2 A L B E R T O B E L U S S I A N N O A C C A D E M I C O /

Registratori di Cassa

EVOLUZIONI DEL CALCOLO WEB. DIREZIONI CORRENTI di EVOLUZIONE Sicuramente il campo applicativo più ampio di dimensioni è il sistema Web stesso

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

filrbox Guida all uso dell interfaccia WEB Pag. 1 di 44

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database

FPf per Windows 3.1. Guida all uso

Programmazione dei socket con TCP #2

Applicazioni web centrati sui dati (Data-centric web applications)

Sistema per scambi/cessioni di Gas al Punto di Scambio Virtuale

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

L aspetto dei file HTML

Transcript:

Servlet

Introduzione alle servlet nle servlet sono oggetti java che vengono caricati ed eseguiti dal web server all interno del processo di richiesta/risposta di servizi. nle servlet consentono l estensione delle potenzialità dei servizi di rete nil web server agisce difatto come container che si occupa della gestione del ciclo di vita delle servlet nil web server passa alle servlet i dati del client e restituisce ai client i dati prodotti dall esecuzione delle servlet Es. Una servlet può estendere le potenzialità di un web server ricevendo i dati inseriti da un client attraverso una form e operando su di essi inserendoli per esempio in un DB.

Servlet: caratteristiche nuna solo istanza della servlet risponde a più richieste nle servlet non vengono eseguite in processi separati, quindi ogni richiesta non causa la creazione di un nuovo processo nle servlet risiedono in memoria tra una richiesta e l altra, quindi vengono caricate solo una volta, alla prima richiesta. Ciò comporta che anche le inizializzazioni necessarie vengono eseguite una volta sola ndispongono di classi per la gestione delle sessioni ngarantiscono maggiore velocità di esecuzione rispetto a script CGI nconsentono una più semplice condivisione dei dati fra le istanze di una servlet nereditano la portabilità di Java

Architettura n Il package Java di base per le API Servlet è javax.servlet: u contiene la definizione dell interfaccia Servlet e u contiene classi utili alla comunicazione fra client e server n L interfaccia Servlet u contiene i prototipi di tutti i metodi necessari alla gestione del ciclo di vita di una servlet e alla esecuzione delle operazione implementate dalla servlet u i metodi definiti in questa intefaccia devono essere supportati da tutte le servlet n Tutte le servlet sono classi che implementano l intefaccia servlet, o in maniera diretta, o estendendo una classe che la implementa come ad esempio HttpServlet

Architettura u gestione dei metodi HTTP (GET, POST) nil package javax.servlet.http fornisce classi che estendono le funzionalità di base di una servlet adottando le caratteristiche del protocollo http come u gestione degli header HTTP nper creare una servlet che utilizzi il protocollo http per ricevere e fornire dati si può implementare una classe che estenda la classe javax.servlet.http.httpservlet

Architettura u ServletRequest, utilizzato per la comunicazioner dal client verso il server nquando una servlet accetta una richiesta da un client riceve due oggetti: u ServletResponse, utilizzato per gestire la comunicazioie dal server verso il client Estensioni di queste classi consentono di disporre di metodi per manipolare informazioni e header specifici di determinati protocolli. In particolare le servlet che utilizzano il protocollo HTTP usano oggetti che sono istanza delle classi HttpServletRequest e HttpServletResponse

Servlet concorrenti nil web server per definizione utilizza una sola istanza di servlet condividendola fra le varie richieste nn richieste da parte di client della stessa servlet portano alla creazione di n threads differenti da parte del web server capaci di eseguire la servlet in maniera concorrente. nin fase di programmazione si deve tenere conto dei meccanismi di accesso concorrente alle servlet a ai loro dati. nl operatore synchronized consente di sincronizzare blocchi di codice della servlet ( o anche tutto il metodo service) difendendoli da accessi concorrenti da parte di più threads. nper creare più istanze di una stessa servlet da associare alle richieste, la servlet deve implementare l interfaccia SingleThreadModel. In questo modo il web server creerà più istanza della stessa servlet al momento del caricamento dell oggetto e assegnerà ai threads solo istanza libere.

L oggetto HttpServerRequest Rappresenta una richiesta http e mediante i metodi di questa classe è possibile u accedere a parametri o meta informazioni relative alla richiesta. Es: F getrequesturi() restituisce l URI richiesto F getmethod() fornisce il metodo HTTP utilizzato per inoltrare la richiesta F il metodo getparameter(string) consente di accedere per nome ai parametri contenuti nella query string u creare gli stream di input e la possibilità quindi di ricevere i dati della richiesta attraverso i metodi getinputstream e getreader

L oggetto HttpServerResponse Fornisce alla servlet i metodi per rispondere al client: u permette di fissare parametri relativi alla risposta inviata (come lunghezza o tipo MIME) u fornisce metodi per manipolare gli header del protocollo http u rende possibile il reindirizzamento u fornisce i metodi per creare gli stream di output e la possibilità quindi di inviare i dati della risposta. F getoutputstream per l invio di dati in forma binaria F getwriter per l invio attraverso il canale System.out u definisce una serie di constanti per inviare al browser il risultato della operazione richiesta

Ciclo di vita delle servlet Il ciclo di vita di una servlet definisce: ucome una servlet viene caricata: caricamento e istanziazione sono eseguiti dal web server e avvengono al momento della prima richiesta da parte dei client ucome una servlet viene inizializzata: in questa fase la servlet carica dati persistenti, apre connessioni verso DB. Questa operazione avviene tramite la chiamata al metodo init(). Il metodo di default non esegue nessuna operazione ucome può ricevere e rispondere alle richieste dei client: il metodo eseguto all arrivo di una nuova richiesta è il metodo service(), che riceve come parametri gli oggetti ServletRequest e ServletResponse per gestire le richieste ucome viene terminata ( tipicamente quando termina l esecuzione del web server): ad esempio si specifica come rilasciare le risorse occupate. Questa operazione avviene tramite la chiamata al metodo destroy()

Inizializzazione di una servlet nun solo threads viene eseguito al momento della inizializzazione nl inizializzazione di una servlet avviene con la chiamata del metodo init() al momento del suo caricamento nle richieste possono essere ricevute dalla servlet solo dopo il completamento della fase di inizializzazione nse la servlet non riesce a completare l inizializzazione viene generata una eccezione nil metodo init() riceve come parametro un oggetto di tipo ServletConfig che contiene la configurazione iniziale di una servlet. Per salvare la configurazione si puo richiamare il metodo super.init, altrimenti si deve implemetare questa operazione nel nuovo init.

Inizializzazione di una servlet Es. public void init(servletconfig config){ ni parametri di configurazione di una servlet sono definiti all interno della configurazione del web server che li comunica alla servlet nella forma chiave=valore. ni metodi utilizzati dall oggetto ServletConfig per accedere ai parametri sono: getinitparameternames() e getinitparameter(string) nsi puo accedere ai parametri di configurazione anche tramite il metodo getservletconfig() dell interfaccia servlet all interno del metodo service() super.init(config); String initpar = config.getinitparameter( PARAMETER ); if(initpar== null){ }} throw new UnavailableException(this, errore! )

Il metodo service() nse il metodo service() non viene sovrascritto, la nostra classe eredita il metodo definito all interno della classe che andiamo ad estendere nse estendiamo la classehttpservlet, questo metodo ha la funzione di distribuire la gestione della richiesta fra altri metodi in base al tipo di richiesta ricevuta. Ad esempio in caso di richiesta GET o POST vengono richiamati in automatico rispettivamente i metodi doget() e dopost() fi Nel caso non si implementi una nuova versione del metodo service() sarà necessario implementare nella nostra classe un metodo scelto fra questi in base al tipo di richiesta da gestire.

Interazione con client u doget, per gestire richiesta di tipo GET o HEAD Scrivere una servlet che estende la classa HttpServlet per gestire il protocollo HTTP comporta l implementazione dei metodi definiti per gestire l interazione HTTP col client che si ritengono necessari. Es. u dopost, per gestire richiesta di tipo POST u doput, per gestire richiesta di tipo PUT Di default queste richieste restituiscono il codice HTTP BAD_REQUEST (400) Tali metodi ricevono tutti 2 argomenti, gli oggetti HttpServletRequest e HttpServletResponse per la gestione dei dati ricevuti o inviati al client

Interazione con client u Con tutti i metodi HTTP, il metodo getparametervalues fornisce i valori in base al nome del parametro, il metodo getparameternames fornisce i nomi dei parametri Il modo in cui si accede ai dati del client può dipendere dal metodo HTTP della richiesta: u Col metodo GET si può utilizzare il motodo getquerystring che restituisce una stringa da parserizzare u Con i metodi POST,PUT si può scegliere fra i metodi getreader per la lettura di dati di tipo testo o getinputstream per la creazione di uno stream per la lettura di dati binari Per inviare dati al client sono disponibili invece i metodi u getwriter, per inviare dei dati di tipo testo u getoutputstream per inviare dati binari

Interazione con client Procedura per l invio di dati ( per esempio nella creazione di una pagina html dinamica): nprima di inviare dati tramite l oggetto Writer o OutputStream, è necessario fissare gli header HTTP. nla classe HttpServletResponse fornisce dei metodi per accedere e fissare gli header della risposta, come il content-type, encoding, content lenght. nuna volta impostati gli header della risposta, si può inviare il body

Un esempio: Salve Mondo! Vogliamo creare una servlet la cui chiamata da parte di un client restituisca una semplice pagina HTML con la scritta Salve Mondo! : ncreiamo un file SalveMondoServlet.java ncompiliamo il file con javac per ottenere il file SalveMondoServlet.class nrendiamo il file disponibile via web attraverso un URL

Un esempio: Salve Mondo! nimport dei package necessari alla servlet Import java.io.*; import java.servlet.*; import java.servlet.http.*; ndichiarazione della classe che sarà la nostra servlet. Poiché creaimo una servlet HTTP estendiamo la classe javax.servlet.http.httpservlet public class SalveMondoServlet extends HttpServlet nvolendo far gestire alla nostra servlet richieste di tipo GET, ridefiniamo il metodo doget() protected void doget(httpservletrequest req, HttpServletResponse res) nimpostiamo il tipo MIME della risposta da inviare al client. res.setcontenttype( text/html );

Un esempio: Salve Mondo! ncreiamo un oggetto PrintWriter associato alla risposta per la scrittura verso il client. PrinterWriter out =res.getwriter(); nutilizziamo l oggetto PrintWriter per creare il testo della pagina da inviare al client. out.println( <HTML><HEAD><TITLE>SalveMondo!</TITLE> ); out.println( </HEAD><BODY>SalveMondo!</BODY></HTML> ); nchiudiamo l oggetto PrintWriter ( il server chiude gli stream di input/output automaticamente alla terminazione dell esecuzione di una servlet). out.close(); Questa chiamata informa il server che la risposta è terminata e la connessione può essere chiusa

Un esempio: Salve Mondo! Import java.io.*; import java.servlet.*; import java.servlet.http.*; public class SalveMondoServlet extends Httpservlet{ } protected void doget(httpservletrequest req, HttpServletResponse) } throws ServletException, IOException{ res.setcontenttype( text/html ); PrinterWriter out =res.getwriter(); out.println( <HTML><HEAD><TITLE>SalveMondo!</TITLE> ); out.println( </HEAD><BODY>SalveMondo!</BODY></HTML> ); out.close();

Ottenere informazioni sul client public class InfoClient extends HttpServlet{ Vediamo come si puo riscrivere il metodo service() per ottenere informazioni sulla richiesta effettuata dal client: } public void service(httpservletrequest req, HttpServletResponse) throws ServletException, IOException{ res.setcontenttype( text/html ); PrinterWriter out =res.getwriter(); out.println( <HTML><HEAD><TITLE>Informazioni</TITLE> ); out.println(req.getprotocol()+ <BR> ); out.println(req.getserverport()+ <BR> ); out.println(req.getcharacterencoding()+ <BR> ); out.println(req.getremotehost()+ <BR> ); out.println( </ </BODY></HTML> ); out.println( </HEAD><BODY>

Gestire il metodo POST - 1 Creiamo una servlet che riceve da input due campi inseriti dall utente e li salva su file. La form di inserimento sarà: <html> <head><title>test servlet</title></head> <body> </body> </html> <form action= http://host/myservlet method= post > <br><input type= text name= nome value= Mario > <br><input type= text name= cognome value= Rossi > <br><input type= submit >

Gestire il metodo POST - 2 Public void dopost (HttpServletRequest req, HttpServletResponse) throws ServletException, IOException{ res.setcontenttype( text/html ); PrinterWriter out =res.getwriter(); FileWriter myfile = new FileWriter( nomefile,true); PrinterWriter tomyfile = new PrinterWriter(myFile); Enumeration values = req.getparameternames(); while(values.hasmoreelements()){ } String name = (String) valus.nextelement); String value = req.getparametervalues(name); if(name.compareto( submit)!=0){ tomyfile.println(name+ : +value);} myfile.close(); out.println( <html><body>grazie di aver partecipato!</body></html> ); out.close();}

Servlet: uso delle query string ES. www.prova.it/lista.html?citta=bologna&cap=40125 Utilizzando il metodo GET del protocollo http i dati inviati dal client vengono appesi alla URL richiesta nella forma di coppie nome=valore I valori di una query string possono essere recuperati utilizzando i seguenti metodi della classe HttpServletRequest nstring getquerystring() ritorna la query string completa nenumeration getparameternames() ritorna una enumerazione dei nomi dei parametri nstring getparameter(string) ritorna il valore del parametro a partire dal suo nome nstring[] getparametervalues() ritorna una array di valori del parametro

Uso delle sessioni nuna sessione è rappresentata attraverso la classe HttpSession nla creazione di una sessione può essere fatta all interno dei metodi doget o dopost tramite il metodo getsession dell oggetto HttpServletRequest HttpSession session = req.getsession(true); ncon questa chiamata la servlet cerca di identificare il client, e se non esiste già una sessione associata alla richiesta ne viene creata una nuova. nuna volta ottenuto l oggetto session, questo può essere utilizzato tramite i suoi metodi per memorizzare qualsiasi tipo di informazione. nun sessione rimane valida finchè non viene invalidata col metodo invalidate(), oppure scade il suo timeout.

Uso delle sessioni nla creazione di una sessione comporta in pratica la predisposizione di un area di memoria per la gestione delle informazioni e la creazione trasparente di un cookie con un numero di sessione. nse il browser non supporta il cookie, il numero di sessione viene registrato nelle query string al momento della creazione del codice della pagina. http://localhost/servlet/myservlet?sessionid=9824765234931133 ni metodi dell oggetto HttpSession permettono di avere informazioni sulla sessione (id della sessione, tempo trascorso, tempo di inattività) o di memorizzare dati di sessione nella forma di coppia nome=valore. putvalue(string name,object value) void removevalue(string name)

Esempio di uso delle Sessioni public void service(httpservletrequest req, HttpServletResponse) } throws ServletException, IOException{ res.setcontenttype( text/html ); PrinterWriter out = res.getwriter(); out.println(.. ); //stampo i tag iniziali HttpSession sessione = req.getsession(true); if(session.isnew()){ }else{ out.println( <br>tempo di creazione: +session.creationtime()); session.putvalue( accessi,new Integer(1)); int accessi=((integer)session.getvalue( accessi )).intvalue(); accessi++; out.println( <br>numero accessi: +accessi);} out.println( ); //stampo i tag finali out.close

Esempio di gestione di una lista - 1 Come esempio vediamo l implementazione di una servlet per la gestione di una lista di email. La struttura della servlet è: public class ListManagerServlet extends HttpServlet{ } private Vector emaillist; init(); doget(); dopost(); subscribe() unsubscribe() save() //esegue le inizializzazioni //riceve la richiesta della lista delle email //riceve i dati per l inserimento di una //nuova email //esegue una nuova sottoscrizione //cancella una email //salva le modifiche

Esempio di gestione di una lista - 2 Il motodo doget è: Protected void doget (HttpServletRequest req, HttpServletResponse) throws ServletException, IOException{ res.setcontenttype( text/html ); res.setheader( pragma, no-cache ); PrinterWriter out = res.getwriter(); out.print( <HTML>.. ); for(i=0;i<emaillist.size();i++){ } out.print( <LI> +emaillist.elementat(i); out.print( <INPUT type=text name=email><br> ); out.print( <INPUT type=submit name=action value=subscribe><br> ); out.print( <INPUT type=submit name=action value=unsubscribe><br> ); out.print(..</html> ); out.close; }

Esempio di gestione di una lista - 3 public void dopost (HttpServletRequest req, HttpServletResponse) throws ServletException, IOException{ String email=req.getparameter; if(email==null){ String msg; res.senderror(res.sc_bad_request, nessuna email ins. ); return;} if(req.getparameter( action ).equals( subscribe )){ }else{ if(subscribe(email))msg= Sottoscrizione avvenuta ; else{ res.senderror(res.sc_bad_request, nessuna email ins. ); return;} if(unsubscribe(email))msg= Rimozione avvenuta ; else{ res.senderror(res.sc_bad_request, errore! ); return;}}

Esempio di gestione di una lista - 4 } res.setcontenttype( text/html ); res.setheader( pragma, no-cache ); PrinterWriter out = res.getwriter(); out.print( <HTML>-----<BODY> ); out.print(msg); out.print( <A HREF=\ ); out.print(req.getrequesturi()); out.print( \ >>Torna alla lista ); out.print(..</html> ); out.close();

Esempio di gestione di una lista - 5 I metodi per registrare le operazioni degli utenti sono: private syncronized boolean subscribe(string email)throws IOException{ } if(!emaillist.contains(email)) return false; emaillist.addelement(email); save(); return true; private syncronized boolean unsubscribe(string email)throws IOException{ if(!emaillist.removeelement(email)) return false; save(); return true; }

Uso dei Cookie ni cookie possono essere utilizzati per memorizzare altre informazioni sul client nl oggetto Session utilizza i cookie per consentire l identificazione delle sessioni ma memorizza i parametri della sessione sul server. nla Java fornisce la classe javax.servlet.http.cookie per rappresentare e gestire i cookie senza dover manipolare gli header http. nsui cookie si può definire: u il dominio applicativo u il path dell applicazione u la durata di validità (metodo setdomain) (metodo setpath) (metodo setmaxage) ni cookie possono essere aggiunti o letti attraverso l oggetto HttpServletRequest

Uso dei cookie:esempio //Aggiungere un nuovo cookie Cookie mycookie=null; String nome= nome_cookie ; String valore= valore_cookie ; mycookie=new Cookie(nome,valore); mycookie.setmaxage(1000); res.addcookie(); //Leggere i cookie ricevuti Cookie cookies[]=req.getcookies(); for(int i=0;i<cookies.length;i++){ Cookie cookie_ric=cookies[i]; out.print(cookie_ric.getname()+ = + cookie_ric.getvalue()); }

Il tag <SERVLET> <SERVLET NAME=MyServlet> Le servlet possono essere richiamati anche tramite uno speciale tag HTML, <SERVLET> Es. <PARAM NAME=param1 VALUE=valore1> <PARAM NAME=param2 VALUE=valore2> </SERVLET> Quando una pagina con questi tag viene richiamata, i tag <SERVLET> mandano in esecuzione la servlet specificata e vengono poi sostituiti dal risultato della loro elaborazione. I tag <PARAM> specificano dei parametri da passare alle servlet, che comunque possono accedere ai parametri spediti via GET o POST.

Link utili n n http://java.sun.com/products/servlet/index.html http://java.apache.org/