7 custom tags. Marco Tessarotto Programmazione dei Web Server Anno Accademico
|
|
- Niccoletta Stella
- 4 anni fa
- Visualizzazioni
Transcript
1 7 custom tags Marco Tessarotto Programmazione dei Web Server Anno Accademico
2 Custom Tags Abbiamo visto i tag (azioni) standard JSP(jsp:useBean, jsp:setproperty, jsp:include ) La tecnologia JSP prevede un meccanismo per incapsulare altre funzionalità nella scrittura di pagine JSP tramite i custom tags (elementi personalizzati) [sintassi XML] Consentono di separare le attività di sviluppo delle library dallo sviluppo dell interfaccia utente; riutilizzo del codice; possono incapsulare codice nascondendone la complessità Portabili: indipendenti dall implementazione del container 2
3 Custom Tags/2 Esempi di applicazione dei custom tags: Operazioni su database Elaborazioni condizionate e/o iterazioni (If/Then/Loop) Validazione di web form Elaborazione di sessione, parametri di web form 3
4 Custom Tags/3 Custom tag: estensione del linguaggio JSP definita dall utente Al momento della traduzione in servlet, il tag è convertito in codice che opera su un oggetto chiamato tag handler Posso passare parametri attraverso gli attributi [invece con JavaBeans uso jsp:setproperty] Possono accedere agli stessi oggetti disponibili nella pagina JSP Possono intervenire sulla risposta [response] 4
5 Custom Tags/4 Possono comunicare tra di loro Possono essere annidati tra di loro per farli interagire tra loro I custom tag sono raccolti in tag libraries Definizione tag library: raccolta di azioni JSP che incapsulano delle funzionalità da utilizzare nelle pagine JSP. 5
6 Usare i tags È necessario: 1. Dichiarare la tag library che implementa i tag 2. Rendere disponibile all applicazione web la tag library <%@ taglib uri= taglibraryuri prefix= tagprefix %> L attributo uri specifica un URI relativo o assoluto che identifica univocamente il descrittore della tag library (Tag Library Descriptor) La direttiva va inserita prima di utilizzare i tag 6
7 Usare i tags/2 Se il JSP container non trova il descrittore, errore di traduzione La stringa tagprefix definisce il prefisso da utilizzare nella scrittura dei tag (prefix:tagname) Ogni Tab Library è descritta tramite il Tag Library Descriptor (TLD); è un documento XML 7
8 Usare i tags/3 Esempio [template5, caltag.jsp]: 1. TLD [taglib61.tld] va messo in <proj>\web\web- INF 2. JAR [caltag.jar] (contiene le classi che implementano la tag library) va messo in <proj>\web\web-inf\lib; [altrimenti WEB- INF\classes] Quando richiamo la tag library con la direttiva taglib, posso specificare l URI in due modi: 1. Direttamente: <%@ taglib uri="/web-inf/taglib61.tld" prefix="cal" %> 8
9 Usare i tags/4 Oppure: <%@ taglib uri="/taglib61" prefix="cal" %> Specificando in web.xml: <taglib> <taglib-uri>/taglib61 </taglib-uri> <taglib-location> /WEB-INF/taglib61.tld </taglib-location> </taglib> 9
10 Usare i tags/5 <!-- caltag.jsp --> <%@ taglib uri="/taglib61" prefix="cal" %> <!-- oppure così: --> <!-- uri="/web-inf/taglib61.tld" --> <html><body> Current Month: <cal:calendar /> </body></html> 10
11 Tipi di tag I tag sono scritti seguendo la sintassi XML; devono un tag di inizio ed uno di fine, e possono avere attributi, un body; esempi: <cal:calendar /> <cal:calendar month="3" year="2002" /> <mialib:miotag> corpo </mialib:miotag> Tag semplice: senza corpo, senza attributi È possibile passare informazioni tramite attributi o tramite il corpo del tag 11
12 Tag library
13 Tag library Per definire un custom tag, è necessario: Sviluppare un tag handler (gestore del tag) e le classi necessarie Dichiarare il tag nel descrittore (TLD) Il tag handler è un oggetto invocato dal container per eseguire il custom tag durante l esecuzione della pagina JSP dove è referenziato il tag Il tag handler implementa l interfaccia javax.servlet.jsp.tagext.tag oppure javax.servlet.jsp.tagext.bodytag 13
14 Tag library/2 In alternativa, la classe del tag handler può estendere la classe javax.servlet.jsp.tagext.tagsupport oppure javax.servlet.jsp.tagext.bodytagsupport I metodi della classe che implementa il tag handler sono chiamati dalla servlet della pagina JSP in vari punti durante l esecuzione del tag. 14
15 Tag handler Definizione di un nuovo tag: partiamo dalla classe Java che lo implementa La classe deve implementare l interfaccia javax.servlet.jsp.tagext.tag; questo si effettua estendendo la classe TagSupport o BodyTagSupport Una volta scritta la classe, occorre specificare nel descrittore l associazione tra classe e descrittore Nella pagina JSP: richiamare la library tramite direttiva taglib 15
16 Esempio tag class package corsows.tags; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import java.io.*; public class SimpleTag extends TagSupport { public int dostarttag() { try { JspWriter out = pagecontext.getout(); out.print("custom tag example " +"(corsows.tags.simpletag)"); } catch(ioexception ioe) { System.out.println("Error in SimpleTag: " + ioe); } return(skip_body); } } 16
17 Esempio descrittore tag <?xml version="1.0" encoding="iso "?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" " <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>customtag1</short-name> <tag> <name>simpletag</name> <tag-class>corsows.tags.simpletag</tag-class> <body-content>jsp</body-content> <attribute> <name>par1</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib> 17
18 Esempio pagina JSP <html> <body> <H1>Custom tag test</h1> taglib prefix="corsosw" uri="/web-inf/customtag1.tld" %> <! oppure uri= /corsows --> <corsosw:simpletag /> </body> </html> 18
19 Implementazione di un tag Definiamo un custom tag senza attributi e senza corpo; tag del tipo: <prefix:tagname /> Estendiamo la classe javax.servlet.jsp.tagext. TagSupport Importiamo il package javax.servlet.jsp.tagext.* per estendere la nostra classe Importiamo javax.servlet.jsp.* per poter utilizzare gli oggetti impliciti delle pagine JSP Riscriviamo il metodo dostarttag, che viene chiamato al momento dell esecuzione quando si incontra il tag d inizio dell elemento 19
20 Traduzione del tag /* ---- corsosw:simpletag ---- */ corsows.tags.simpletag _jspx_th_corsosw_simpletag_0 = new corsows.tags.simpletag(); _jspx_th_corsosw_simpletag_0.setpagecontext(pagecontext); _jspx_th_corsosw_simpletag_0.setparent(null); try { int _jspx_eval_corsosw_simpletag_0 = _jspx_th_corsosw_simpletag_0.dostarttag(); // end // begin [file="/customtag1.jsp";from=(5,0);to=(5,21)] if (_jspx_th_corsosw_simpletag_0.doendtag() == javax.servlet.jsp.tagext.tag.skip_page) return; } finally { _jspx_th_corsosw_simpletag_0.release(); } 20
21 Implementazione di un tag/2 Per generare output, occorre ottenere un JspWriter tramite pagecontext.getout() [vedi oggetto implicito out] TagSupport ha un campo pagecontext tramite il quale si può avere accesso agli oggetti impliciti della pagina JSP che richiama il tag (out, request, response, session ) Siccome i metodi print di JspWriter possono lanciare una eccezione IOException, occorre incapsulare il codice in un blocco try/catch Se il nostro dostarttag vuole passare un eccezione alla pagina, usare JspException 21
22 Implementazione di un tag/3 Se il tag non ha corpo, allora dostarttag deve restituire la costante SKIP_BODY (un eventuale corpo del tag viene ignorato) Vediamo la classe javax.servlet.jsp.tagext.tagsupport Implementa le interfacce Tag, IterationTag, java.ioserializable protected PageContext pagecontext: consente di accedere a tutte le risorse accessibili dalla pagina JSP; settato tramite public void setpagecontext(pagecontext pc) 22
23 Implementazione di un tag/4 public int dostarttag() throws JspException: invocato dalla servlet della pagina JSP quando viene incontrato il tag iniziale dell elemento; default: restituisce SKIP_BODY (ignora i contenuti del corpo) Possibili valori che può restituire: EVAL_BODY_INCLUDE, EVAL_BODY_BUFFERED (valido solo per BodyTag): il corpo dell elemento va valutato SKIP_BODY: il corpo non va elaborato 23
24 Implementazione di un tag/5 public int doendtag() throws JspException: elabora il tag di chiusura; invocato dalla servlet della pagina JSP; può restituire: EVAL_PAGE: l elaborazione continua con il resto della pagina JSP SKIP_PAGE: il resto della pagina non viene elaborata e la richiesta è completata. Se la richiesta di elaborazione della pagina corrente avviene tramite forward o include, viene terminata solo l elaborazione della pagina corrente 24
25 Implementazione di un tag/6 public int doafterbody() throws JspException: invocato dopo l elaborazione del corpo; non viene chiamato se non c è il corpo; può restituire: EVAL_BODY_AGAIN: il corpo dell elemento va rielaborato ancora una volta SKIP_BODY: fine elaborazione corpo 25
26 Tag Library Descriptor documento XML con dichiarazione DOCTYPE: <?xml version="1.0" encoding="iso "?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" " L elemento root è <taglib>; per definire un custom tags, usare <tag> che deve contenere: <name>: nome del tag (come verrà richiamato nelle pagine JSP) <tagclass>: nome della classe Java che implementa il tag 26
27 Tag Library Descriptor/2 <bodycontent>: specifica come trattare il corpo del custom tag; EMPTY: ignorare il corpo (errore se presente); JSP: il corpo segue la normale elaborazione JSP; TAGDEPENDENT: il corpo viene elaborato dal custom tag Se il custom tag prevede attributi, all interno di <tag> usare <attribute> [vedremo tra poco] 27
28 Custom tags con attributi Custom tags del tipo: <prefix:tagname attribute1= value1 attribute2= value /> L uso degli attributi viene tradotto in chiamate a metodi della classe che implementa il tag attribute1 public void setattribute1(string ) Gli attributi vengono passati alla classe del custom tag prima dell esecuzione di dostarttag Esempio: immagazzinare gli attributi per la successiva elaborazione 28
29 Esempio tag con attributi public class AcapoTag extends TagSupport { private int numacapo = 0; public void setnum(string arg) { try { numacapo = Integer.parseInt(arg); } catch(numberformatexception nfe) { numacapo = 0; } } 29
30 Esempio tag con attributi/2 <tag> <name>acapo</name> <tag-class>corsows.tags.acapotag</tag-class> <body-content>empty</body-content> <attribute> <name>num</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> 30
31 Custom tags con attributi/3 Per descrivere gli attributi di un custom tag, all interno di <tag> usare l elemento <attribute> con i seguenti elementi annidati: <name>: nome dell attributo <required>true/false</required> <rtexprvalue>true/false</rtexprvalue>: opzionale, default: false, specifica se il valore dell attributo può essere una espressione scriplet ovvero <%= expression %> 31
32 javax.servlet.jsp.tagext Torniamo alle interfacce di javax.servlet.jsp.tagext: [I] Tag: semplice gestore tag (tag handler) che non manipola il corpo del tag; principali metodi: dostarttag, doendtag; dopo la chiamata al costruttore, la pagina JSP chiama setpagecontext, setparent ed i setters degli attributi del tag [I] IterationTag: estende Tag definendo doafterbody che serve a controllare la rielaborazione del corpo del tag 32
33 javax.servlet.jsp.tagext/2 [I] BodyTag: estende IterationTag aggiungendo metodi per gestire l elaborazione del corpo; doinitbody: invocato dalla servlet della pagina JSP prima dell elaborazione del corpo del tag; non è chiamato se il tag è senza corpo o se dostarttag restituisce SKIP_BODY o EVAL_BODY_INCLUDE; è preceduto da una chiamata a: setbodycontent: invocato dalla pagina JSP per passare il corpo del custom tag. 33
34 javax.servlet.jsp.tagext/3 [I] BodyTag: se dostarttag restituisce EVAL_BODY_INCLUDE, allora l elaborazione avviene come in IterationTag; se restituisce SKIP_BODY, il corpo non viene elaborato; se restituisce EVAL_BODY_BUFFERED, si ha l elaborazione tramite BodyContent 34
35 Custom tags con corpo Custom tags del tipo: <prefix:tagname>body</prefix:tagname> Per utilizzare il corpo del custom tag, dostarttag deve restituire EVAL_BODY_INCLUDE oppure EVAL_BODY_BUFFERED Nel TLD, il tag deve avere l elemento <bodycontent> con corpo pari a JSP o TAGDEPENDENT, non EMPTY Se dostarttag restituisce EVAL_BODY_INCLUDE e se il tag ha corpo, allora viene invocato doafterbody 35
36 Manipolazione del corpo di un custom tag La classe che implementa il custom tag estende BodyTagSupport Utilizziamo doafterbody per gestire la manipolazione del corpo del tag, getbodycontent per accedere al corpo del tag (di tipo BodyContent, incapsula il contenuto) La classe BodyContent ha i metodi: getenclosingwriter: restituisce lo stesso oggetto JspWriter usato da dostarttag e doendtag getreader, getstring: restituiscono il corpo del tag [BoldTag.java] 36
37 BodyContent javax.servlet.jsp.tagext.bodycontent: estende javax.servlet.jsp.jspwriter Incapsula il corpo già elaborato di custom tag ovvero contiene il risultato di eventuali altre azioni incorporate public JspWriter getenclosingwriter(): restituisce il JspWriter incapsulato; necessario se si vuole modificare il corpo già elaborato public abstract java.lang.string getstring() 37
38 BodyContent/2 Passi per modificare il corpo elaborato del custom tag in doafterbody: 1. Chiamare getbodycontent() 2. Ottenere il contenuto: getstring() 3. Modificare il contenuto 4. Ottenere il JspWriter con getenclosingwriter 5. Scrivere il corpo modificato 38
39 BodyContent/3 public int doafterbody() { BodyContent body = getbodycontent(); String strbody = "<B>" + body.getstring() + "</B>"; try { JspWriter out = body.getenclosingwriter(); out.print(strbody); } catch (IOException ioe) { System.out.println("Error in BoldTag: " + ioe); } return SKIP_BODY; // EVAL_BODY_AGAIN per ciclare } 39
40 findancestorwithclass public static final Tag findancestorwithclass (Tag from, java.lang.class klass) Metodo della classe TagSupport Restituisce l istanza di una classe specificata (klass) più vicina all istanza from LoopTag parent = (LoopTag) findancestorwithclass(this, LoopTag.class);. 40
41 javax.servlet.jsp.tagext [I] Per accedere al parent del tag, si può utilizzare il metodo: public Tag getparent() 41
42 Java Standard Tag Library
43 Java Standard Tag Library JSTL (Java Standard Tag Library) non fa parte di JSP 1.2; è una specifica a parte Disponibile nei server che supportano Java Servlets 2.3 e JSP 1.2 Il linguaggio per espressioni di JSTL farà parte di JSP 2.0 Implementazione di riferimento: 43
44 JSTL/2 Un insieme di tag libraries che implementano funzionalità che estendono la sintassi JSP Core functions: variabili, I/O, condizioni, iterazioni Formattazione/I18n: internazionalizzazione, formato numeri, date Operazioni XML: parsing, trasformazioni Operazioni su database Inoltre: introduce un nuovo linguaggio per specificare i valori degli attributi dei tag (JSTL Expression Language, EL) 44
45 JSTL/3 I tag JSTL forniscono una implementazione standard di funzionalità usate spesso nelle applicazioni web; riusabilità, evitare di rifare lavoro inutilmente Fornisce un linguaggio di scripting (EL) alternativo a quello standard di JSP, più semplice di Java (versione EL) È possibile usare la sintassi JSP delle scriplet expressions calcolate a run time (versione RT) 45
46 JSTL Expression Language I delimitatori sono ${ e } EL può essere usato solo per specificare valori di attributi nei tag JSTL; esempio: <c:out value= ${user.firstname} /> Espressioni multiple possono essere combinate e mescolate con testo statico; esempio: <c:out value= Hello ${user.firstname} ${user.lastname}! /> 46
47 JSTL Expression Language/2 Le espressioni in EL sono combinazioni di identificatori e operatori JSTL introduce degli oggetti impliciti, diversi da quelli JSP (tranne pagecontext) Quando in EL si richiama un oggetto, l identificatore viene risolto cercando negli scopi JSP in questo ordine (utilizza PageContext.findAttribute(name)): page, request, session, application 47
48 JSTL Expression Language/3 Oggetti impliciti di JSTL: pagecontext: oggetto JSP pagecontext della pagina corrente pagescope: insieme della variabili con scopo pagina requestscope: variabili, scopo richiesta sessionscope: variabili, scopo sessione applicationscope: variabili, scopo applicazione 48
49 JSTL Expression Language/4 param: par. della richiesta come stringhe paramvalues: parametri della richiesta come collezione di stringhe header: headers della richiesta HTTP come stringhe headervalues: headers della richiesta HTTP come collezione di stringhe initparam: parametri applicazione cookie: valori dei cookies 49
50 JSTL Expression Language/5 Le proprietà degli oggetti sono accedute tramite l operatore. ; esempio: ${user.firstname}: rappresenta il valore della proprietà firstname dell oggetto referenziato dall identificatore user operatore [ ] : può essere usato come. : ${user[firstname]} Inoltre l operatore [ ] permette di accedere ad array e oggetti di tipo Map, List; esempi: ${user[1]} ${user[ pippo ]} 50
51 JSTL Expression Language/6 Esempi: ${sessionscope[ username ]} è equivalente a: <%= session.getattribute( userprofile )%> ${param[ keyword ]} è equivalente a: <%= request.getparameter( keyword )%> 51
52 JSTL Expression Language/7 Altri operatori di EL: Operatori aritmetici: +, -, *, / (o div), % (o mod) Operatori di confronto: == (o eq),!= (o ne), < (o lt), > (o gt), <= (o le), >= (o ge) Operatori logici: && (o and), (o or),! (o not) Operatore empty : empty expr indica se expr è null o se expr è un String,Map,List, array vuoto 52
53 Core Library Per poter utilizzare la Core Library nelle pagine JSP, versione EL della library, ${ expr } <%@ taglib uri= prefix= c > Altrimenti, versione JSP expressions (RT), <%= expr %> : <%@ taglib uri= prefix= c_rt > 53
54 Core Library/2 Azioni generiche: <c:out> <c:set> <c:remove> <c:catch> Azioni condizionali: <c:if> <c:choose>, <c:when>, <c:otherwise> 54
55 Core Library/3 Azioni per iterazioni: <c:foreach> <c:fortokens> Azioni su URL: <c:url>, <c:param> <c:redirect>, <c:param> <c:import>, <c:param> 55
Laboratorio di Programmazione di Rete
Laboratorio di Programmazione di Rete Lezione del 18 Maggio 2009 Docente: Novella Bartolini Tag Personalizzati Tag personalizzati Sono la caratteristica più potente delle pagine jsp Incapsulano funzionalità
DettagliLaboratorio di sistemi Tag personalizzati Jsp [NetBeans] Sezione A
Sezione A In NetBeans creiamo una applicazione web nel solito modo, confermando tutte le impostazioni proposte senza alcuna variazione. Per costruire una libreria di tag personalizzata, costruiamo innanzitutto
DettagliTecnologie di Sviluppo per il Web
Tecnologie di Sviluppo per il Web Applicazioni Web J2EE Altri Componenti versione 3.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca mecca@unibas.it
Dettagli6 JavaServer Pages. Marco Tessarotto Programmazione dei Web Server Anno Accademico
6 JavaServer Pages Marco Tessarotto Programmazione dei Web Server Anno Accademico 2004-2005 JavaServer Pages (JSP) È una tecnologia che consente di creare contenuto web sia statico che dinamico Include
DettagliJUG Ancona Italy. JSP 2.0: Tag Library. Matteo Piccinini Web Developer
JUG Ancona Italy JSP 2.0: Tag Library Matteo Piccinini Web Developer Servlet Codice Java che viene eseguito nel server per produrre un contenuto Logica applicativa del programmatore Gestione grafica passa
DettagliProgrammazione WEB. Lezione del 7 Maggio Docente: Novella Bartolini
Programmazione WEB Lezione del 7 Maggio 2018 Docente: Novella Bartolini Tag Personalizzati Tag personalizzati Sono la caratteristica più potente delle pagine jsp Incapsulano funzionalità complesse Permettono
DettagliLaboratorio di Programmazione di Rete
Laboratorio di Programmazione di Rete Lezione del 24 Maggio 2010 Docente: Novella Bartolini Tag Personalizzati Tag personalizzati Sono la caratteristica più potente delle pagine jsp Incapsulano funzionalità
DettagliIntroduzione alle JSP
Introduzione alle JSP Corso di Sistemi Web e Basi Dati Prof. Antonio d Acierno Java Server Page JSP Riferimenti http://java.sun.com/products/jsp http://www.coreservlets.com http://www.html.it/jsp Le JSPs
DettagliVerso l architettura MVC-2 Java Server Pages (JSP)
Verso l architettura MVC-2 Java Server Pages (JSP) 1 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 2 0 1 2 / 2 0 1 3 JSP Una pagina JSP può essere vista come uno schema di pagina Web dove: le
DettagliVerso l architettura MVC-2 Java Server Pages (JSP)
Verso l architettura MVC-2 Java Server Pages (JSP) 1 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 2 0 1 0 / 2 0 1 1 JSP 2 Una pagina JSP può essere vista come uno schema di pagina Web dove:
DettagliSiti web centrati sui dati Architettura MVC-2: JSP
Siti web centrati sui dati Architettura MVC-2: JSP Alberto Belussi anno accademico 2006/2007 JSP Una pagina JSP è uno schema di pagina Web dove le parti statiche sono scritte in HTML e le parti dinamiche
DettagliVerso l architettura MVC-2 Java Server Pages (JSP)
Verso l architettura MVC-2 Java Server Pages (JSP) 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 JSP Una pagina JSP può essere vista come uno schema di pagina Web dove: le parti statiche sono scritte in
DettagliCORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION
CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION 0 DURATA 200 ore CONTENUTI Oracle PL/SQL Introduzione al PL/SQL Cenni su SQL con utilizzo di SQL*PLUS Configurazione ambiente Developer DB Classi,
DettagliJava Enterprise Edi.on. Gabriele Tolomei DAIS Università Ca Foscari Venezia
Java Enterprise Edi.on Gabriele Tolomei DAIS Università Ca Foscari Venezia Programma del Corso 09/01 Introduzione 10/01 Java Servlets 16-17/01 JavaServer Pages (JSP) 23-24/01 Lab: Applicazione AffableBean
DettagliLaboratorio di Programmazione di Rete. Docente: : Novella Bartolini
Laboratorio di Programmazione di Rete Docente: : Novella Bartolini Lezione del 21 Maggio 2007 Upload di file da una pagina JSP Si vuole scrivere una pagina JSP che permetta all utente di selezionare un
DettagliAntonio d Acierno 13/01/2006
Introduzione alle Servlet Corso di Sistemi Web e Basi Dati Prof. Antonio d Acierno Servlet Alternativa Java ai CGI-BIN Classi java che estendono le funzionalità di un server Web generando dinamicamente
DettagliJava Server Pages. Corso di Applicazioni Telematiche. A.A. 2006-07 Lezione n.18 Prof. Roberto Canonico
Java Server Pages Corso di Applicazioni Telematiche A.A. 2006-07 Lezione n.18 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Java Server Pages (JSP) Java Server
DettagliIntroduzione a JSP (Java Server Pages) MC 2005
Introduzione a JSP (Java Server Pages) MC 2005 Cosa è JSP JSP è una tecnologia per lo sviluppo di pagine web con contenuti dinamici Miglioramento rispetto alle CGI (modello multithread) Indipendenza dalla
DettagliPRIMO MODULO. DURATA: 80 ore CONTENUTI
0 PRIMO MODULO DURATA: 80 ore CONTENUTI 1. Introduzione alla programmazione a. Cosa è la programmazione strutturata b. Strutture dati c. Come si affronta una problematica da risolvere d. Quali sono i passi
DettagliServlet 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 /
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 2 0 1 2 / 2 0 1 3 2 Documentazione: http://www.oracle.com/technetwork/java/javaee/servlet/index.html L approccio SERVLET richiede l installazione
DettagliUn contatore di accessi
Un contatore di accessi Scriviamo una servlet che conta il numero di accessi e lo visualizza. Sfruttiamo il fatto che Tomcat, quando riceve la richiesta di una servlet, crea un istanza della classe corrispondente.
DettagliIntroduzione a Java Server Pages (JSP) (estratto) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi
Introduzione a Java Server Pages (JSP) (estratto) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi 1 JSP (Java Server Pages) È la tecnologia Java per lo sviluppo di applicazioni
DettagliDichiarazione di una classe. Dichiarazione ereditarietà
Introduzione Il Java è un linguaggio di programmazione orientato agli oggetti (OOL), perché permette di realizzare in un programma tutti i concetti alla base dell OOP quali: l astrazione dei dati, mediante
DettagliMini Tutorial Avanzato in 3 livelli per applicazioni web complesse in tecnologia JAVA.
Mini Tutorial Avanzato in 3 livelli per applicazioni web complesse in tecnologia JAVA. Prima Edizione Scritto da Sergio La Colla http://www.slc-solutions.com Mini Tutorial Avanzato sulle applicazioni Web
Dettagli19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
Dettaglicosa vedremo: JSTL JSTL JSTL JSTL JSTL Expression Language javax.servlet.jsp.tagext.simpletagsupport
cosa vedremo: MY TAG Expression Language come si fa quindi a creare dei tag personalizzati? se è codice java associato a tag... occorre scrivere sicuramente una classe le classi per la creazione dei tag
DettagliJava Server Side: JSTL. Ing. Cesare Monti - 27 aprile 2005
Java Server Side: Ing. Cesare Monti - 27 aprile 2005 cosa vedremo: MY TAG Expression Language come si fa quindi a creare dei tag personalizzati?... se è codice java associato a tag... occorre scrivere
DettagliJava Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet
Java Server Pages (JSP) Introduzione alle JSP Linguaggio di scripting lato server HTML-embedded Una pagina JSP contiene sia HTML sia codice Il client effettua la richiesta per la pagina JSP La parte HTML
DettagliProgrammazione lato client. JavaScript. Applicazioni di Rete M. Ribaudo - DISI. JavaScript
Programmazione lato client Netscape: Microsoft: JScript ECMAScript (ECMA-262) (European Computer Manufactures Association) 1 Linguaggio di script interpretato con alcune caratteristiche Object Oriented
DettagliInizializzare oggetti
Inizializzare oggetti Uso della Classe Software per TLC - AA 2008/2009 1 Costruttori e polimorfismo Uso della Classe Un codice migliore Software per TLC - AA 2008/2009 2 Costruttori ed Ereditarietà Output:
DettagliJavaScript JavaScript Programmazione lato client JScript JavaScript ECMAScript
Programmazione lato client Netscape: Microsoft: JScript ECMAScript (ECMA-262) (European Computer Manufactures Association) Linguaggio di script interpretato con alcune caratteristiche Object Oriented HTTP
DettagliProgrammazione a oggetti
Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software
DettagliLaboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013
Laboratorio Progettazione Web Le funzioni in PHP Angelica Lo Duca IIT-CNR angelica.loduca@iit.cnr.it 2012/2013 Funzioni Una funzione è una sequenza di istruzioni che implementano una specifica funzionalità
DettagliJava Server Pages A.A
M. Badella G. Malnati, 2003-04 Java Server Pages A.A. 2003-04 1 JSP Java Server Pages Documenti testuali che descrivono: come elaborare una richiesta per produrre una risposta in base ai parametri acquisiti
DettagliProgrammazione Java Avanzata. MVC Model, View,, Controller. Ing. Gianluca Caminiti
Programmazione Java Avanzata MVC Model, View,, Controller Ing. Gianluca Caminiti Uso di JSP: complessità crescente Invocare codice Java direttamente. Posizionare tutto il codice Java in una pagina JSP
DettagliOCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER
DettagliCorso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami
DettagliArchitetture Web: un ripasso
Architetture Web: un ripasso Pubblicazione dinamica di contenuti. Come si fa? CGI Java Servlet Server-side scripting e librerie di tag JSP Tag eseguiti lato server Revisione critica di HTTP HTTP non prevede
DettagliUNIVERSITÀ DEGLI STUDI DI PARMA REALIZZAZIONE DI UNO STRUMENTO PER LA GESTIONE DI BASI DI DATI IN APPLICAZIONI WEB
UNIVERSITÀ DEGLI STUDI DI PARMA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA REALIZZAZIONE DI UNO STRUMENTO PER LA GESTIONE DI BASI DI DATI IN APPLICAZIONI WEB Relatore Chiar.mo Prof.
DettagliProgrammazione Java Avanzata Programmazione Object- Oriented in Java
Programmazione Java Avanzata Programmazione Object- Oriented in Java Ing. Gianluca Caminiti Testi di Riferimento (Java) Cay Horstmann Concetti di informatica e fondamenti di Java Apogeo, 2007 (Versione
DettagliLaboratorio di sistemi Prima Web Application JSP [Java]
Vogliamo scrivere la nostra prima web application che legga da tastiera il nostro nome e fornisca un messaggio di saluto. Per costruire la nostra applicazione creiamo con NetBeans un nuovo progetto. File
DettagliFONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Prof. Zambonelli, Ing. Cabri, Ing. Denti, Ing. Andrea Aime Zambonelli,
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
DettagliApplicazioni web. Parte 2 JSP. Michele Tomaiuolo tomamic@ce.unipr.it
Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Applicazioni web Parte 2 JSP Michele Tomaiuolo tomamic@ce.unipr.it Sommario JSP: sintassi di
DettagliCast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double
Il cast Cast implicito Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto Per esempio: byte short int long float double int x = 10; float f; f = x; Il valore di
DettagliProgrammazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals()
Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Ereditarietà (Inheritance) RIASSUMIAMO DALLA SCORSA
DettagliRETI DI CALCOLATORI Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Eccezioni Prof. Franco Zambonelli Lucidi realizzati in collaborazione
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
DettagliInterfacce. Esempio: interfaccia I con una sola funzione g() public interface I {
Interfacce Una interfaccia è un astrazione per un insieme di funzioni pubbliche delle quali si definisce solo la segnatura, e non le istruzioni. Un interfaccia viene poi implementata da una o più classi
DettagliStrutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05
Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica
DettagliCiclo di vita di una Servlet
Ciclo di vita di una Servlet Non caricata. Prima richiesta: Caricata: il file.class viene caricato in memoria centrale. Inizializzata: viene eseguito il metodo init(). In servizio: risponde alle richieste
DettagliApplicazioni web. Sommario. Parte 7 Java Server Pages. Applicazioni web - JSP. Alberto Ferrari 1 JSP. JavaBeans JSTL. Architettura e sintassi di base
Applicazioni web Parte 7 Java Server Pages Alberto Ferrari 1 Sommario JSP JavaBeans JSTL Architettura e sintassi di base Concetti fondamentali Beans in pagine JSP Linguaggio di espressione Azioni principali
DettagliTecnologie di Sviluppo per il Web
Tecnologie di Sviluppo per il Web Applicazioni Web J2EE: Java Server Pages (JSP) Parte 2 versione 3.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 20 febbraio 2012
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 20 febbraio 2012 TEMPO DISPONIBILE: 1 ora Negli
Dettagli14 - Metodi e Costruttori
14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliJAVA GENERICS. Angelo Di Iorio Università di Bologna
JAVA GENERICS Angelo Di Iorio Università di Bologna Tipi parametrici In diversi casi è utile definire classi che operano su tipi di dato diverso e implementano un comportamento comune e indipendente dal
DettagliLaboratorio di reti I
Laboratorio di reti I Stefano Brocchi brocchi@dsi.unifi.it 13 ottobre, 2009 Stefano Brocchi Laboratorio di reti I 13 ottobre, 2009 1 / 27 Introduzione Obiettivi del corso Aspetti di programmazione Java
DettagliOOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi
OOP in C++ Classi e Oggetti Una classe èuntipochehavariabili ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi Una variabile ab di un tipo
DettagliTito Flagella - Introduzione alla programmazione di Servlet
Introduzione alla programmazione di Servlet Caratteristiche di base Estensioni del server scritte in Java utilizzando la Servlet API La Servlet API è diventata un estensione standard di Java, dalla versione
DettagliConcetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica Introduzione Ereditarietà in Sintesi È uno dei concetti chiave della programmazione orientata agli
DettagliLaboratorio di Basi di Dati/ Basi di dati per Bioinformatica
Laboratorio di Basi di Dati/ Basi di dati per Bioinformatica Docenti: Alberto Belussi e Carlo Combi Lezione 9 Architettura Model-View-Controller (MVC)! Adottando l'architettura MVC e la tecnologia Servlet-JSP,
DettagliProgrammazione. Cognome... Nome... Matricola... Compitino del 17 gennaio 2007
Cognome............................. Nome................................ Programmazione Compitino del 17 gennaio 2007 Matricola............................ NOTA: Negli esercizi 1, 2, 3, 4 fate riferimento
DettagliOggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA
Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA Salerno Formazione, società operante nel settore della didattica, della formazione professionale e certificata
DettagliEccezioni. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi.
Eccezioni Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi fanizzi@di.uniba.it 2 Eccezione Evento anormale che avviene durante l'esecuzione del programma
DettagliProgrammazione a Oggetti Lezione 11. Eccezioni e Packages
Programmazione a Oggetti Lezione 11 Eccezioni e Packages Sommario Eccezioni Sollevamento Cattura Trattamento Packages e visibilità Eccezioni I programmi spesso si trovano ad operare in condizioni anomale:
DettagliCorso di Applicazioni Telematiche
Corso di Applicazioni Telematiche A.A. 2008-09 Lezione n.12 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Una Servlet è un componente software scritto in Java,
DettagliAlma Mater Studiorum Università di Bologna. Scuola di Ingegneria. Tecnologie Web T. Esercitazione opzionale Spring MVC
Alma Mater Studiorum Università di Bologna Scuola di Ingegneria Tecnologie Web T Esercitazione opzionale Spring MVC Home Page del corso: http://www-db.disi.unibo.it/courses/tw/ Versione elettronica: L.10.opt.SpringMVC.pdf
DettagliLe classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:
Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata
DettagliProgrammazione. Cognome... Nome... Matricola... Compitino del 26 gennaio 2009
Cognome................................ Nome................................... Matricola............................... Programmazione Compitino del 26 gennaio 2009 NOTA: Negli esercizi 1, 2, 3, 4 fate
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione su XML: Strato di Persistenza versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi
DettagliStateless Session Bean
Stateless Session Bean 1 Esempio Stateless Session bean per il calcolo della somma di due numeri reali 2 Struttura del sistema calcolo della somma di due numeri reali Sum implementato con uno stateless
DettagliJSON for Linked Data JSON-LD
JSON for Linked Data JSON-LD Giuseppe Santaniello Giuseppe Pietravalle Web Semantico A.A. 2015/2016 Linked Data Insiemi di dati interconnessi sul Web Esempio: DBpedia DBpedia contiene i dati di Wikipedia
DettagliSvantaggi delle servlet
Svantaggi delle servlet Le servlet sono la tecnologia principale di J2EE per comunicare con i browser dei client. Tuttavia ci sono degli inconvenienti per gli sviluppatori di applicazioni web: le servlet
DettagliLaboratorio di Basi di Dati e Web
Laboratorio di Basi di Dati e Web Docente: Alberto Belussi Lezione 9 Architettura Model-View-Controller (MVC) Adottando l'architettura MVC e la tecnologia Servlet-JSP, un'applicazione web può essere realizzata
DettagliParadigmi della PO. Incapsulamento. Ereditarietà. Polimorfismo. Software per TLC - AA 2008/2009 1
Incapsulamento Paradigmi della PO Ereditarietà Polimorfismo Software per TLC - AA 2008/2009 1 Incapsulamento Una classe contiene dati e metodi Filosofia Ai dati si accede solo attraverso i metodi I metodi
DettagliJava Server Side JSP. Ing. Cesare Monti
Java Server Side JSP Ing. Cesare Monti cosa vedremo JSP storia contesto JSTL JSP: il contesto siamo sul web, hic sunt: server web DB beans, bundles,... oggetti in generale... agenti... tra non molto JSP:
DettagliAlberi Binario in Java
Alberi Binario in Java Realizzare un albero binario di ricerca. L albero binario è di ricerca se esiste una relazione di ordinamento tra i valori dei nodi (valori comparabili). In particolare, dato un
DettagliLaboratorio di reti II: Java Server Pages
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
DettagliGESTIONE DEGLI ERRORI
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori
DettagliProgrammazione orientata agli oggetti. Ivan Lanese
Programmazione orientata agli oggetti Ivan Lanese Argomenti Programmazione orientata agli oggetti Classi Oggetti Costruttori Scrivere grosse applicazioni La gran parte delle applicazioni sono GROSSE Windows
DettagliGESTIONE DEGLI ERRORI
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori
DettagliLaboratorio di Sistemi Fattoriale di un numero Jsp [Java]
Desideriamo realizzare una applicazione web che ci consenta di calcolare il fattoriale di un numero. L'esercizio in sé non particolarmente difficile, tuttavia esso ci consentirà di affrontare il problema
DettagliJSP [2] Uso dei Costrutti JSP. Tag di azione. Uso di Bean Interazione fra pagine JSP. Uso di oggetti bean. Tre tag di azione per manipolare bean
Uso dei Costrutti JSP JSP [2] Uso di Bean Interazione fra pagine JSP Slides parzialmente tratte da materiale di Giansalvatore Mecca (Tecnologie di Sviluppo per il Web) e Marty Hall (http://www.coreservlets.com)
DettagliArchitettura MVC-2 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010. Verso l architettura MVC-2
Architettura MVC-2 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Verso l architettura MVC-2 2 Il secondo passo verso l architettura MVC-2 è quello di separare il controllo dell esecuzione, che rimane alla
DettagliTIPI PRIMITIVI E CLASSI WRAPPER
I tipi primitivi come oggetti Package java.lang In varie situazioni, può essere comodo poter trattare i tipi primitivi come oggetti per passarli per riferimento a una funzione quando una funzione pretende
DettagliLa classe java.lang.object
La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita
DettagliLaboratorio di Basi di Dati e Web
Laboratorio di Basi di Dati e Web Docente: Alberto Belussi Lezione 8 Java Server Pages Java Server Pages è essenzialmente un modo più comodo per il programmatore dell applicazione web di scrivere una Servlet.
DettagliSoluzione 1: controller per la pagina di dettaglio delle categorie
Soluzione 1: controller per la pagina di dettaglio delle categorie @WebServlet("/category") public class CategoryDetailsServlet extends HttpServlet { public void doget( HttpServletRequest request, HttpServletResponse
DettagliLa programmazione ad oggetti (OOP)
Oggetti e Classi (CAP 10) Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 30 Novembre 2011 La programmazione ad oggetti (OOP) È un approccio concettuale alla programmazione (indipendente
DettagliLe eccezioni in Java
Eccezioni 1 Le eccezioni in Java i tipi di eccezione sono particolari classi che contengono solo il costruttore ci possono essere più costruttori overloaded sono definite in moduli separati da quelli che
DettagliCORSO DI PROGRAMMAZIONE JAVA
CORSO DI PROGRAMMAZIONE JAVA Corso di Programmazione Java Standard Edition ( MODULO A) OBIETTIVI ll corso ha come obiettivo quello di introdurre la programmazione a oggetti (OOP) e di fornire solide basi
DettagliTomcat & Servlet. Contenuti. Programmazione in Ambienti Distribuiti. Tomcat Applicazioni Web. Servlet JSP Uso delle sessioni
Tomcat & Servlet Programmazione in Ambienti Distribuiti V 1.2 Marco Torchiano 2005 Contenuti Tomcat Applicazioni Web Struttura Sviluppo Deployment Servlet JSP Uso delle sessioni 1 Tomcat Tomcat è un contenitore
DettagliLaboratorio di Programmazione Lezione 2. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]
DettagliJDBC. Paolo Atzeni. 11 marzo Progettazione di applicazioni, una premessa
JDBC Paolo Atzeni 11 marzo 2002 Progettazione di applicazioni, una premessa Il paradigma a tre livelli (three-tier) JDBC: la API per far interagire applicazioni Java con basi di dati marzo 2002 P. Atzeni,
DettagliSQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:
SQL e linguaggi di programmazione L interazione con l ambiente SQL può avvenire in 3 modi: in modo interattivo col server attraverso interfacce o linguaggi ad hoc legati a particolari DBMS attraverso i
Dettaglimodulo: siti web centrati sui dati
Basi di dati e Web modulo: siti web centrati sui dati Alberto Belussi anno accademico 2008/2009 WEB La tecnologia del World Wide Web (WWW) costituisce attualmente lo strumento di riferimento per la diffusione
Dettagli