Laboratorio di reti II: Java Server Pages



Похожие документы
Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

Laboratorio di Basi di Dati

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

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:

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

Architettura MVC-2: i JavaBeans

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

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 /

Svantaggi delle servlet

Introduzione alla programmazione Http lato server in Java

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

19. LA PROGRAMMAZIONE LATO SERVER

Laboratorio di sistemi Prima Web Application JSP [Java]

Esempio di esecuzione di una pagina JSP: Il client chiede la pagina: sdfonline.unimc.it/info/modulo.jsp;

Java: Compilatore e Interprete

Funzioni in C. Violetta Lonati

Soluzione dell esercizio del 2 Febbraio 2004

Java Server Pages. Corso di Applicazioni Telematiche. A.A Lezione n.18 Prof. Roberto Canonico

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Modulo 4: Ereditarietà, interfacce e clonazione

JavaServer Pages: Introduzione

1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet

Invio SMS. DM Board ICS Invio SMS

Programmazione a Oggetti Modulo B

Architetture Web: un ripasso

Introduzione al linguaggio Java: Servlet e JSP

Verso l architettura MVC-2 Java Server Pages (JSP)

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA

Programmazione server-side: Java Servlet

Configurazione di Outlook Express

Laboratorio di reti II: Servlet

Registratori di Cassa

1 JSPDynPage, componenti portale e Java Server Pages

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

L architettura MVC (Model- View-Controller) Introduzione

Concetto di Funzione e Procedura METODI in Java

Esercitazione n 4. Obiettivi

Gestire le sessioni con le Servlet

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

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara

Tener traccia del client

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Procedura SMS. Manuale Utente

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

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

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

MANUALE PARCELLA FACILE PLUS INDICE

Struttura di un programma Java

Progettazione : Design Pattern Creazionali

Lezione III: Oggetti ASP e interazione tramite form HTML

Gestione Filtri. InfoBusiness 2.8 Gestione Filtri Pag. 1/ 11

HTML HTML. HyperText Markup Language. Struttura di un documento. Gli elementi essenziali di un documento HTML sono i seguenti TAG: <HTML>...

Manuale Utente Albo Pretorio GA

Siti interattivi e dinamici. in poche pagine

4.1 FAX Sollecito consegne via (Nuova funzione)

Inizializzazione, Assegnamento e Distruzione di Classi

Implementazione di MVC. Gabriele Pellegrinetti

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

flusso delle informazioni... 2 password... 3 password/ inserimento di una nuova richiesta... 4 le condizioni di vendita... 6

Mac Application Manager 1.3 (SOLO PER TIGER)

7.4 Estrazione di materiale dal web

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

Il linguaggio HTML - Parte 3

COSTER. Import/Export su SWC701. SwcImportExport

Lezione 6: Form 27/04/2012

I file di dati. Unità didattica D1 1

Integrazione InfiniteCRM - MailUp

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

Manuale operatore per l utilizzo dell utente di dominio

Obiettivo dell esercitazione

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

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

In questo manuale sono indicate le procedure per utilizzare correttamente la gestione delle offerte dei fornitori.

Note pratiche sullo sviluppo di servlet (I)

MANUALE UTENTE Fiscali Free

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

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

Test di unità con JUnit4

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

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

appunti delle lezioni Architetture client/server: applicazioni client

7. Layer e proprietà degli oggetti

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

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

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

La struttura dati ad albero binario

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Dispensa di database Access

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Транскрипт:

Laboratorio di reti II: Java Server Pages Stefano Brocchi brocchi@dsi.unifi.it 6 aprile, 2009 Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 1 / 34

JSP - Java Server Pages Le Java Server Pages (JSP) sono un astrazione di alto livello per rappresentare delle servlet Una JSP è rappresentata da codice HTML con incapsulato al suo interno delle direttive JSP rappresentanti codice Java Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 2 / 34

JSP - Java Server Pages Alla prima richiesta di una pagina JSP il server effettuerà i seguenti passi Il codice JSP viene compilato per ottenere il codice Java rappresentante una servlet Il codice della servlet viene a sua volta compilato per ottenere un file class rappresentante una servlet La richiesta HTTP viene inviata alla classe che si occupa di generare la risposta Dopo la prima richiesta la classe viene tenuta in cache dal server per permettere una rapida risposta alle richieste successive Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 3 / 34

Perchè usare JSP? Il principale vantaggio delle JSP è quello di separare il codice HTML dal codice Java, separando così la vista dalla logica del sito Per questo obiettivo è opportuno inserire meno codice Java possibile in una JSP delegando eventualmente operazioni complesse a classi esterne alla pagina In questo modo una volta creata una pagina JSP questa può essere mantenuta o modificata da chiunque conosca anche solo l HTML Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 4 / 34

Oggetti predefiniti Java Server Pages In una pagina JSP vengono resi disponibili automaticamente diversi oggetti, tra cui i seguenti out di tipo JSPWriter, lo stream che scrive sulla risposta HTTP request di tipo HttpServletRequest, rappresentante la richiesta HTTP response di tipo HttpServletResponse, rappresentante la risposta HTTP session di tipo HttpSession, contenente la sessione corrente application di tipo ServletContext, rappresentante il contesto della servlet pagecontext di tipo PageContext, rappresentante il contesto della pagina JSP Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 5 / 34

Scriptlet Hello World in JSP Il codice Java può essere inserito direttamente nelle JSP tramite il tag <%... %>. In questo caso si parla di scriptlet Vediamo una semplice pagina JSP di esempio: <html> <head> <title>hello world in JSP</title> </head> <body> <% out.println("<h1>hello World!</h1>"); %> </body> </html> Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 6 / 34

Scriptlet Scriptlet frammentate E possibile inserire codice Java anche in frammenti di per sè incompleti: <html> <head> <title>hello world in JSP</title> </head> <body> <% String lang = request.getheader("accept-language"); if (lang!= null && lang.startswith("it")) { %> <h1> Ciao mondo! </h1> <% } else { %> <h1> Hello World! </h1> <% } %> </body> </html> Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 7 / 34

Scriptlet Esempio di stampa dei parametri Vediamo inoltre un esempio di pagina HTML che stampa in output i parametri in ingresso: <html><head><title>...</title></head><body> <%@ page import= java.util.* %> <h2> Parametri in ingresso: </h2><ul> <% Enumeration e = request.getparameternames(); while (e.hasmoreelements()) { String p = (String)e.nextElement(); out.println("<li>" + p + " = " + request.getparameter(p)); } %> </ul></body></html> Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 8 / 34

Espressioni JSP Espressioni JSP Tramite il tag <%=... %> è possibile specificare delle espressioni che verranno valutate ed il loro risultato, convertito se necessario a stringa, scritto nell HTML. Degli esempi: Valore del rapporto aureo: <%= (1 + Math.sqrt(5)) / 2 %> <br> Data di oggi: <%= new Date() %> <br> Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 9 / 34

Dichiarazioni JSP Dichiarazioni JSP Tramite il tag <%!... %> è possibile specificare delle dichiarazioni Java relative a campi o metodi della servlet Un esempio che conteggia il numero totale di visite ad una pagina <%! private int numeroaccessi = 0; %> <% numeroaccessi ++; %> Accessi globali a questa pagina: <%= numeroaccessi %> Notare che la variabile numeroaccessi viene inizializzata a zero solo al momento della creazione della servlet, cioè alla prima richiesta della pagina, mentre il suo incremento avviene ad ogni accesso Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 10 / 34

Direttive JSP Direttiva import Con il tag <%@... %> si dichiarano le direttive JSP Una possibile direttiva è la direttiva page che permette di specificare caratteristiche relative alla servlet che verrà generata Tramite l attributo import questa permette di specificare i pacchetti Java da importare nella servlet La sintassi da utilizzare è <%@ page import="..." %> Es, <%@ page import="java.util.*, java.sql.*" %> I pacchetti javax.servlet, javax.servlet.jsp e javax.servlet.http sono inclusi implicitamente in ogni JSP Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 11 / 34

Da JSP a servlet Java Server Pages Direttive JSP Riassumendo, le direttive di inclusione andranno nell intestazione della servlet, le dichiarazioni nel corpo della classe e le scriptlet all interno dei metodi di servizio (doget, dopost...) <%@ page import= java.util.* %> <%! private int numeroaccessi = 0;%> <html>... <% numeroaccessi ++; %> Data corrente: <%= new Date() %>... JSP Servlet import java.util.*;... public class myservlet extends HttpServlet { private int numeroaccessi = 0;... public void doget(...) {... out.println("<html>");... numeroaccessi ++; out.println("data corrente: "+ new Date()); } } Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 12 / 34

Direttiva page Java Server Pages Direttive JSP Altri attributi che si possono definire in direttive di tipo <%@ page... %> sono: extends che permette di specificare che la servlet generata estende una determinata classe isthreadsafe che specifica se più richieste possono essere inviate alla servlet contemporaneamente senza problemi. Per default impostato a true, se uguale a false le richieste successive alla prima vengono messe in attesa errorpage che indica una pagina che viene richiamata nel caso in cui si verifica un eccezione nella JSP iserrorpage che specifica, se uguale a true, che la pagina in questione viene utilizzata per la gestione degli errori Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 13 / 34

Direttive JSP Gestione degli errori Per gestire errori in JSP si utilizzano delle pagine apposite specificate tramite le direttive JSP Quando in una pagina si verifica un eccezione e questa ha specificato una errorpage, l esecuzione passa a questa seconda pagina Oltre ai normali oggetti a disposizione nelle JSP, nelle pagine per gli errori sarà disponibile l oggetto exception di tipo Throwable rappresentante l eccezione che ha causato il problema Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 14 / 34

Direttive JSP Gestione degli errori Vediamo un esempio di una pagina che genera un errore e di un altra che lo gestisce: <%@ page errorpage= err.jsp %> <% throw new RuntimeException("Eccezione di prova"); %> Nella pagina err.jsp: <%@ page iserrorpage= true %> <h1> Riscontrata un eccezione! </h1> <%= exception %> L output dell ultima riga di err.jsp sarà uguale al risultato di exception.tostring(), in questo caso a java.lang.runtimeexception: Eccezione di prova Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 15 / 34

Direttive JSP Direttiva include Un altra direttiva JSP è la direttiva include, definita con la seguente sintassi <%@ include file="filename" %> La direttiva include nella pagina JSP il contenuto del file specificato come se questo si trovasse al posto della direttiva E possibile specificare l inclusione di file JSP Spesso si includono inoltre dei file con del codice JSP che non rappresentano di per sè una pagina JSP completa ma solo un frammento di codice da eseguire nel contesto della pagina originale Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 16 / 34

Uso di bean Uso di bean Per permettere l astrazione della logica dalla vista, si fa uso nelle JSP di classi Java con un interfaccia molto semplice dette bean Grazie alla loro semplicità, l accesso ai loro metodi si può fare in modo del tutto automatico specificando gli opportuni parametri senza scrivere altro codice Grazie alle loro caratteristiche i bean vengono usati in molte librerie Java, come per esempio nelle swing Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 17 / 34

Bean in Java Java Server Pages Uso di bean Un bean è una classe Java con un numero di campi privati detti proprietà Per ogni proprietà con un determinato nome XXX possono esistere i due metodi getxxx() che ritorna il valore della proprietà setxxx() che imposta la proprietà ad un determinato valore Spesso i due metodi non fanno altro che quanto richiesto nella loro definizione; è possibile specificare comunque operazione aggiuntive Si può controllare, per esempio, che il valore della proprietà resti sempre in un determinato intervallo Nel caso in cui la proprietà derivi da un input dell utente, i metodi set possono essere utilizzati per controllarne la validità Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 18 / 34

Uso di bean Uso di Java bean Grazie alla reflection di Java, è possibile automatizzare la chiamata ad un metodo di un bean Per utilizzare un bean si può utilizzare la sintassi <jsp:usebean id="id" scope="scope" class="classname "> </jsp:usebean> Con il seguente codice si inizializza un bean istanza della classe classname in un oggetto di nome Id Il campo scope serve a definire l accesso e la durata di vita del bean. Può assumere i valori page, request, session o application Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 19 / 34

Uso di bean Uso di Java bean Una volta dichiarato l utilizzo di un bean, si possono manipolare i suoi valori con i tag <jsp:getproperty> e <jsp:setproperty> definiti dalla seguente sintassi: <jsp:getproperty name="beanid" property="proprietà"/> <jsp:setproperty name="beanid" property="proprietà" value="valore"/> L attributo name specifica l identificativo del bean da usare, property la proprietà da modificare e value il valore da impostare Il tag <jsp:getproperty> restituisce nella pagina JSP il valore della proprietà richiesta I tag <jsp:setproperty> e <jsp:getproperty> devono essere privi di contenuto Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 20 / 34

Uso di bean Gestione dei parametri tramite bean Se nel tag <jsp:setproperty> l attributo value non viene specificato, di default viene utilizzato il parametro della richiesta HTTP con lo stesso nome Questo consente di elaborare molto semplicemente dati in GET o in POST Se si vuole impostare un campo di un bean al valore di un parametro con un altro nome, specificare questo nome nell attributo param Es. <jsp:setproperty name="beanid" property="beanproperty" param="getparameter"> Sempre in <jsp:setproperty>, se l attributo property è impostato a *, verranno impostate tutte le proprietà del bean con nome uguale ad un parametro in ingresso Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 21 / 34

Uso di bean Esempio d uso dei bean: form HTML Vediamo un esempio di gestione di una form tramite bean File submit.html per l immissione di dati: <html> <head> <title> Pagina immissione dati </title> </head> <body> <form action= compute.jsp > <p><input type= text name= nome > Nome </p> <p><input type= text name= cognome > Cognome </p> <p><input type= submit ></p> </form> </body> </html> Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 22 / 34

Uso di bean Esempio d uso dei bean: bean Java Bean mybean.java: package beans; public class mybean { private String nome = ""; private String cognome = ""; public void setnome(string n) { nome = n; } public void setcognome(string c) { cognome = c; } public String getnome() { return nome; } public String getcognome() { return cognome; } } Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 23 / 34

Uso di bean Esempio d uso dei bean: pagina JSP File compute.jsp per l elaborazione dei dati: <jsp:usebean class="beans.mybean" id="beanid"> <jsp:setproperty name="beanid" property="*"/> </jsp:usebean> <html> <head> <title>pagina elaborazione dati</title> </head> <body> Nome inserito: <jsp:getproperty name="beanid" property="nome"/> <br> Cognome inserito: <jsp:getproperty name="beanid" property="cognome"/> <br> </body> </html> Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 24 / 34

Uso di bean Vantaggi dei bean Come si vede nell esempio, tramite la gestione con i bean i dati di un form vengono processati in modo molto semplice E possibile inoltre implementare nel bean una logica complessa per effettuare controlli sui campi inseriti dall utente Si può per esempio controllare che un indirizzo email inserito rispetti la sintassi nomeutente@dominio.estensione, o controllare che uno username di un nuovo utente non sia già in uso In questo caso si mantiene l isolamento della logica del programma (nel codice Java) dalla pagina web stessa (pagina JSP) Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 25 / 34

Uso di bean Visibilità dei bean Per permettere la visibilità di un bean, la classe che lo realizza deve essere nel classpath relativo all applicazione web In Tomcat, inserire le classi nella cartella WEB-INF/classes Sempre in Tomcat, inserire sempre i bean in un pacchetto (nell esempio: beans) altrimenti il server potrebbe non essere in grado di trovare la classe Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 26 / 34

JSP ed XML JSP ed XML I tag JSP non rientrano nella normale sintassi HTML, nè nel linguaggio XML A volte considerare pagine JSP come una famiglia di documenti XML può essere comodo, in quanto così si potrebbero elaborare pagine JSP con strumenti relativi all XML Per questo per ogni tag JSP è stato elaborato un tag equivalente che rispetta la sintassi XML: Dichiarazioni <%!... %> <jsp:declaration>... </jsp:declaration> Direttive include <%@ include... %> <jsp:directive.include... /> Direttive page <%@ page... %> <jsp:directive.page... /> Espressioni <%=... %> <jsp:expression>... </jsp:expression> Scriptlet <%... %> <jsp:scriptlet>... </jsp:scriptlet> Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 27 / 34

Cenni sulle taglib Le taglib Nelle JSP, è possibile definire dei nuovi tag da inserire nell HTML il cui comportamento è definito da delle classi Java Alcuni brevissimi cenni sul loro funzionamento: Una taglib viene definita nelle JSP tramite la direttiva <%@ taglib uri="uri" prefix="prefix"> Dove viene specificato un file tld, che definisce la taglib e segnala le classi in essa contenute, ed il prefisso del tag associato A questo punto quando nella JSP vengono incontrati i tag definiti, verranno richiamati dei metodi delle classi associate che produrranno l output relativo a questo nuovo tag Le taglib non sono che un ulteriore meccanismo per astrarre operazioni Java tramite codice HTML Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 28 / 34

Cenni sulle taglib Esempio di taglib Per avere un idea di come è strutturata una pagina con taglib, un breve esempio di pagina JSP che fa uso della taglib definita in taglib.tld, dove è definita una classe di tag mytagclass <%@ taglib uri="/taglib.tld" prefix="mytag" %> <html> <head><title> Esempio di taglib </title></head> <body> <mytag:mytagclass /> </body> </html> In questo esempio quando il tag introdotto viene incontrato vengono richiamati gli opportuni metodi dalla classe associata al nome mytagclass nel file taglib.tld Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 29 / 34

Cenni sulle taglib Esempio di taglib (2) Un altro esempio di taglib: supponiamo di stampare il titolo ed il contenuto di un thread in un forum con il seguente codice <% out.println(threadgestor.getthreadtitle(1)); %> <% out.println(threadgestor.getthreadbody(1)); %> Notare che per non mischiare codice Java con la pagina JSP, presupponiamo che i metodi siano implementati in un oggetto di nome threadgestor definito in una classe diversa dalla JSP L isolamento della logica è già abbastanza buono, in quanto visualizziamo un thread con una quantità minima di codice Java; tuttavia tramite taglib questo codice si può completamente occultare Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 30 / 34

Cenni sulle taglib Esempio di taglib (2) Tramite taglib il precedente codice si potrebbe riscrivere come: <%@ taglib uri="/taglib.tld" prefix="thread" %> <thread:title threadid=1 /> <thread:body threadid=1 /> In questo caso il file taglib.tld e le classi da esso associate a thread:title e thread:body si occuperanno di delegare le operazioni necessarie ai metodi opportuni Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 31 / 34

Esercizio Java Server Pages Esercizio Realizzare tramite JSP la funzionalità di registrazione di nuovi utenti Per ogni utente, definire una serie di dati che questo dovrà inserire per registrarsi al forum Es. username, password, nome, cognome, email, telefono... Imporre vari vincoli sui parametri così inseriti Si può imporre per esempio di usare nomi utenti contenenti solo caratteri alfanumerici, password con una lunghezza minima e massima, controllare che gli indirizzi email siano plausibili (es. contenere una chiocciola ed almeno un punto) Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 32 / 34

Esercizio Esercizio Quando l utente ha inserito i dati, visualizzarne una schermata riassuntiva Stampare un messaggio di errore in caso di dati non validi, e chiedere di reinserire i dati Per controllare che le varie stringhe siano in un determinato formato, si può controllare la loro corrispondenza con un espressione regolare tramite il metodo matches di String Due esempi: s.matches("[a-za-z0-9]*") restituisce true se s è formata solo da alfanumerici; s.matches(".*@.*\\..*") controlla che sia presente una chiocciola e un punto dopo di essa Se l utente ha inserito correttamente i dati, creare l account aggiornando il database Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 33 / 34

Esercizio Esercizio Isolare più possibile la logica del codice Java dalla pagina JSP Trattare i dati in ingresso e controllarne la validità tramite un bean Delegare l operazione di inserimento nel database all apposita classe Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 34 / 34