TW Servlet Nicola Gessa. TW Nicola Gessa Introduzione alle servlet n Le servlet sono oggetti java che vengono caricati ed eseguiti dal web server all’interno.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Java Stream e File. La classe File Per operare con lintero file java mette a disposizione la classe File Per utilizzare la classe File è necessario importare.
Costruttori e Distruttori
Recupero debito quarto anno Primo incontro
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
PHP.
Java: programmazione concorrente con condivisione di memoria
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Le gerarchie di tipi.
Mantenimento dello stato Laboratorio Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Connessione con MySQL.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Java2 Esercitazioni del corso di Sistemi Informativi Marina Mongiello
REST Il paradigma REST è basato su un protocollo di comunicazione stateless, client-server, chacheable e scalabile, tipicamente HTTP (ma non necessariamente,
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
1 Basi di dati e Web Prof. Stefano Paraboschi Prof. Barbara Pernici.
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
Un framework per il pattern MVC
Sistemi Operativi GESTIONE DEI PROCESSI.
Elaborazione di Franco Grivet Chin
Corso Java/J2EE per PM/software architect Servlet
Struts. Framework open source per lo sviluppo di applicazioni web su piattaforma J2EE. Progetto inizialmente sviluppato come sotto-progetto di Apache.
Corso di PHP.
Distributed File System Service Dario Agostinone.
Ing. Enrico Lecchini BetaTre S.r.l.
File ad accesso casuale o random
Cosa è una applicazione distribuita?
Sistemi Informativi sul Web
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
BIOINFO3 - Lezione 111 CGI-BIN CGI-BIN sono chiamati i programmi la cui esecuzione può essere richiesta attraverso il WEB. Il server web (httpd) della.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
1 Applet ed HTML Fondamenti di Informatica Corso D.
I metodi F. Bombi Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.
ASP – Active Server Pages - 1 -Giuseppe De Pietro Introduzione ASP, acronimo di Active Server Pages, sta ad indicare una tecnologia per lo sviluppo di.
Servlet e Java Server Pages
Web Form Presentazione 2.3 Comunicazione integrata in rete| Prof. Luca A. Ludovico.
Lezione 8.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Protocolli e architetture per WIS. Web Information Systems (WIS) Un Web Information System (WIS) usa le tecnologie Web per permettere la fruizione di.
Laboratorio di Servizi Web - servlet - Ardissono 1 Java Servlet API package javax.servlet: include classi e interfacce di gestione di servlet indipendenti.
Introduzione a Javascript
Eprogram informatica V anno. ASP.NET Introduzione ASP.NET (Active Server Page) è il linguaggio che, sfruttando la tecnologia.NET, permette di: -scrivere.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Programmazione Web PHP e MySQL 1. 2Programmazione Web - PHP e MySQL Esempio: un blog.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Laboratorio di Servizi Web - servlet - Ardissono 1 Chiarimenti su Servlet Note aggiuntive su architettura di applicazione web che usa Servlet per gestire.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Sistemi di elaborazione dell’informazione Modulo 3 -Protocolli applicativi Unità didattica 4 -Protocolli del Web Ernesto Damiani Lezione 1 – World Wide.
LIP: 22 Marzo 2005 Eccezioni. Eccezioni-Richiami Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
CORSO INTERNET la Posta elettronica
Eprogram informatica V anno.
Eprogram informatica V anno. Introduzione a PHP Introduzione La diffusione di PHP ha avuto un notevole incremento dalla fine degli anni Novanta a oggi,
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
1 Corso di Ingegneria del Web e Applicazioni A A Domenico Rosaci 20 – Web Applications – Servlet e JSP.
+ Connettersi al web Nicolò Sordoni. + Verificare se lo smartphone è connesso Per poter accedere alla rete, è consigliato innanzitutto verificare se il.
Socket programming in Java La realizzazione di un server in Java consente di scrivere una sola versione eseguibile su diverse piattaforme. Il linguaggio.
Gestire i dati: download e salvataggio. L’importanza dei dati La quasi totalità delle applicazioni hala necessità di gestire varie funzionalità relative.
SQLite. Introduzione a SQLite Oltre alla possibilità di memorizzare informazioni persistenti attraverso Preferences e files, Android mette a disposizione.
Socket programming in Java La realizzazione di un server in Java consente di scrivere una sola versione eseguibile su diverse piattaforme. Il linguaggio.
Transcript della presentazione:

TW Servlet Nicola Gessa

TW Nicola Gessa Introduzione alle servlet n Le servlet sono oggetti java che vengono caricati ed eseguiti dal web server all’interno del processo di richiesta/risposta di servizi. n Le servlet consentono l’estensione delle potenzialità dei servizi di rete n Il web server agisce difatto come “container” che si occupa della gestione del ciclo di vita delle servlet n Il 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.

TW Nicola Gessa Servlet: caratteristiche n Le servlet non vengono eseguite in processi separati, quindi ogni richiesta non causa la creazione di un nuovo processo n Le 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 n Una solo istanza della servlet risponde a più richieste n Dispongono di classi per la gestione delle sessioni n Garantiscono maggiore velocità di esecuzione rispetto a script CGI n Consentono una più semplice condivisione dei dati fra le istanze di una servlet n Ereditano la portabilità di Java

TW Nicola Gessa 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

TW Nicola Gessa Architettura n Il package javax.servlet.http fornisce classi che estendono le funzionalità di base di una servlet adottando le caratteristiche del protocollo http come u gestione dei metodi HTTP (GET, POST) u gestione degli header HTTP n Per 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

TW Nicola Gessa Architettura n Quando una servlet accetta una richiesta da un client riceve due oggetti: u ServletRequest, utilizzato per la comunicazioner dal client verso il server 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

TW Nicola Gessa Servlet concorrenti n Il web server per definizione utilizza una sola istanza di servlet condividendola fra le varie richieste n N 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. n In fase di programmazione si deve tenere conto dei meccanismi di accesso concorrente alle servlet a ai loro dati. n L’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. n Per 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.

TW Nicola Gessa 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

TW Nicola Gessa 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

TW Nicola Gessa Ciclo di vita delle servlet Il ciclo di vita di una servlet definisce: u come una servlet viene caricata: caricamento e istanziazione sono eseguiti dal web server e avvengono al momento della prima richiesta da parte dei client u come 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 u come 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 u come 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()

TW Nicola Gessa Inizializzazione di una servlet n L’inizializzazione di una servlet avviene con la chiamata del metodo init() al momento del suo caricamento n Un solo threads viene eseguito al momento della inizializzazione n Le richieste possono essere ricevute dalla servlet solo dopo il completamento della fase di inizializzazione n Se la servlet non riesce a completare l’inizializzazione viene generata una eccezione n Il 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.

TW Nicola Gessa Inizializzazione di una servlet n I parametri di configurazione di una servlet sono definiti all’interno della configurazione del web server che li comunica alla servlet nella forma chiave=valore. n I metodi utilizzati dall’oggetto ServletConfig per accedere ai parametri sono: getInitParameterNames() e getInitParameter(String) n Si puo accedere ai parametri di configurazione anche tramite il metodo getServletConfig() dell’interfaccia servlet all’interno del metodo service() Es. public void init(ServletConfig config){ super.init(config); String initpar = config.getInitParameter(‘PARAMETER’); if(initpar== null){ throw new UnavailableException(this,”errore!”) }}

TW Nicola Gessa Il metodo service() n Se il metodo service() non viene sovrascritto, la nostra classe eredita il metodo definito all’interno della classe che andiamo ad estendere n Se 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()  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.

TW Nicola Gessa Interazione con client 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 doGet, per gestire richiesta di tipo GET o HEAD 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

TW Nicola Gessa Interazione con client Il modo in cui si accede ai dati del client può dipendere dal metodo HTTP della richiesta: 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 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

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

TW Nicola Gessa 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!”: n Creiamo un file SalveMondoServlet.java n Compiliamo il file con javac per ottenere il file SalveMondoServlet.class n Rendiamo il file disponibile via web attraverso un URL

TW Nicola Gessa Un esempio: Salve Mondo! n Import dei package necessari alla servlet Import java.io.*; import java.servlet.*; import java.servlet.http.*; n Dichiarazione della classe che sarà la nostra servlet. Poiché creaimo una servlet HTTP estendiamo la classe javax.servlet.http.HttpServlet public class SalveMondoServlet extends HttpServlet n Volendo far gestire alla nostra servlet richieste di tipo GET, ridefiniamo il metodo doGet() protected void doGet(HttpServletRequest req, HttpServletResponse res) n Impostiamo il tipo MIME della risposta da inviare al client. res.setContentType(“text/html”);

TW Nicola Gessa Un esempio: Salve Mondo! n Creiamo un oggetto PrintWriter associato alla risposta per la scrittura verso il client. PrinterWriter out =res.getWriter(); n Utilizziamo l’oggetto PrintWriter per creare il testo della pagina da inviare al client. out.println(“ SalveMondo! ”); n Chiudiamo 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

TW Nicola Gessa 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(“ SalveMondo! ”); out.close(); }

TW Nicola Gessa Ottenere informazioni sul client Vediamo come si puo’ riscrivere il metodo service() per ottenere informazioni sulla richiesta effettuata dal client: public class InfoClient extends HttpServlet{ public void service(HttpServletRequest req, HttpServletResponse) throws ServletException, IOException{ res.setContentType(“text/html”); PrinterWriter out =res.getWriter(); out.println(“ Informazioni ”); out.println(req.getProtocol()+” ”); out.println(req.getServerPort()+” ”); out.println(req.getCharacterEncoding()+” ”); out.println(req.getRemoteHost()+” ”); out.println(“ ”); out.println(“ }

TW Nicola Gessa 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à: Test servlet

TW Nicola Gessa 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(“ Grazie di aver partecipato! ”); out.close();}

TW Nicola Gessa Servlet: uso delle query string Utilizzando il metodo GET del protocollo http i dati inviati dal client vengono appesi alla URL richiesta nella forma di coppie nome=valore ES. I valori di una query string possono essere recuperati utilizzando i seguenti metodi della classe HttpServletRequest n String getQueryString() ritorna la query string completa n Enumeration getParameterNames() ritorna una enumerazione dei nomi dei parametri n String getParameter(String) ritorna il valore del parametro a partire dal suo nome n String[] getParameterValues() ritorna una array di valori del parametro

TW Nicola Gessa Uso delle sessioni n Una sessione è rappresentata attraverso la classe HttpSession n La 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); n Con questa chiamata la servlet cerca di identificare il client, e se non esiste già una sessione associata alla richiesta ne viene creata una nuova. n Una volta ottenuto l’oggetto session, questo può essere utilizzato tramite i suoi metodi per memorizzare qualsiasi tipo di informazione. n Un sessione rimane valida finchè non viene invalidata col metodo invalidate(), oppure scade il suo timeout.

TW Nicola Gessa Uso delle sessioni n La 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. n Se il browser non supporta il cookie, il numero di sessione viene registrato nelle query string al momento della creazione del codice della pagina. n I 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)

TW Nicola Gessa 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()){ out.println(“ Tempo di creazione:”+session.creationTime()); session.putValue(“accessi”,new Integer(1)); }else{ int accessi=((Integer)session.getValue(“accessi”)).intValue(); accessi++; out.println(“ Numero accessi:”+accessi);} out.println(…);//stampo i tag finali out.close }

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

TW Nicola Gessa 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(“ …..”); for(i=0;i< list.size();i++){ out.print(“ ”+ list.elementAt(i); } out.print(“ ”); out.print(“….. ”); out.close; }

TW Nicola Gessa Esempio di gestione di una lista - 3 public void doPost (HttpServletRequest req, HttpServletResponse) throws ServletException, IOException{ String =req.getParameter;String msg; if( ==null){ res.sendError(res.SC_BAD_REQUEST,”nessuna ins.”); return;} if(req.getParameter(“action”).equals(“subscribe”)){ if(subscribe( ))msg=“Sottoscrizione avvenuta”; else{ res.sendError(res.SC_BAD_REQUEST,”nessuna ins.”); return;} }else{ if(unsubscribe( ))msg=“Rimozione avvenuta”; else{ res.sendError(res.SC_BAD_REQUEST,”errore!”); return;}}

TW Nicola Gessa Esempio di gestione di una lista - 4 res.setContentType(“text/html”); res.setHeader(“pragma”,”no-cache”); PrinterWriter out = res.getWriter(); out.print(“ ”); out.print(msg); out.print(”<A HREF=\””); out.print(req.getRequestURI()); out.print(“\”>>Torna alla lista”); out.print(“….. ”); out.close(); }

TW Nicola Gessa Esempio di gestione di una lista - 5 I metodi per registrare le operazioni degli utenti sono: private syncronized boolean subscribe(String )throws IOException{ if(! list.contains( )) return false; list.addElement( ); save(); return true; } private syncronized boolean unsubscribe(String )throws IOException{ if(! list.removeElement( )) return false; save(); return true; }

TW Nicola Gessa Uso dei Cookie n L’oggetto Session utilizza i cookie per consentire l’identificazione delle sessioni ma memorizza i parametri della sessione sul server. n I cookie possono essere utilizzati per memorizzare altre informazioni sul client n La Java fornisce la classe javax.servlet.http.Cookie per rappresentare e gestire i cookie senza dover manipolare gli header http. n Sui cookie si può definire: u il dominio applicativo (metodo setDomain) u il path dell’applicazione (metodo setPath) u la durata di validità(metodo setMAxAge) n I cookie possono essere aggiunti o letti attraverso l’oggetto HttpServletRequest

TW Nicola Gessa 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()); }

TW Nicola Gessa Il tag Le servlet possono essere richiamati anche tramite uno speciale tag HTML, Es. Quando una pagina con questi tag viene richiamata, i tag mandano in esecuzione la servlet specificata e vengono poi sostituiti dal risultato della loro elaborazione. I tag specificano dei parametri da passare alle servlet, che comunque possono accedere ai parametri spediti via GET o POST.

TW Nicola Gessa Link utili n n