Università di Bergamo Facoltà di Ingegneria. Applicazioni Internet B. Paolo Salvaneschi B6_3 V1.10. JSP parte C

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Università di Bergamo Facoltà di Ingegneria. Applicazioni Internet B. Paolo Salvaneschi B6_3 V1.10. JSP parte C"

Transcript

1 Università di Bergamo Facoltà di Ingegneria Applicazioni Internet B Paolo Salvaneschi B6_3 V1.10 JSP parte C Il contenuto del documento è liberamente utilizzabile dagli studenti, per studio personale e per supporto a lezioni universitarie. Ogni altro uso è riservato, e deve essere preventivamente autorizzato dall autore. Sono graditi commenti o suggerimenti per il miglioramento del materiale B6 JSP Paolo Salvaneschi 1

2 INDICE Utilizzo di JSTL Installazione di JSTL Azioni JSP di JSTL e linguaggio EL Gestione dell input con JSTL Passaggio del controllo tra pagine Model View Controller Passaggio dei dati tra pagine-scope B6 JSP Paolo Salvaneschi 2 B6 JSP Paolo Salvaneschi 2

3 Utilizzo di JSTL Elementi di azione Motivazione:permettere l utilizzo di tag speciali che realizzano funzioni utili per rendere dinamiche le pagine Raggruppati in tag libraries Standard Personalizzate JSTL B6 JSP Paolo Salvaneschi 3 B6 JSP Paolo Salvaneschi 3

4 Utilizzo di JSTL Elementi di azione standard <jsp: Elementi di azione personalizzata Specifica e ambiente di sviluppo per realizzare nuove azioni personalizzate (nuove tag library) JSTL (Java Standard Tag Library) Librerie predefinite di azioni <c: Core <x: <fmt: <sql: Elaborazione XML Formattazione e internazionalizzazione Accesso a database B6 JSP Paolo Salvaneschi 4 B6 JSP Paolo Salvaneschi 4

5 Utilizzo di JSTL Index.htm Esempio Risposta.jsp B6 JSP Paolo Salvaneschi 5 B6 JSP Paolo Salvaneschi 5

6 page contenttype="text/html" %> taglib prefix="c" uri=" %> <html> <head><title>prova</title></head> <body bgcolor="white"> <H1>Pagina di prova</h1> <c:choose> <c:when test="${param.nome == 'Mario'}"> <HR> <H2>Benvenuto <c:out value="${param.nome}" /></H2> </HR> </c:when> <c:otherwise> <HR> <H2>Utente non riconosciuto</h2> </HR> </c:otherwise> </c:choose> B6 JSP Paolo Salvaneschi 6 B6 JSP Paolo Salvaneschi 6 </body></html> Utilizzo di JSTL Utilizzo di un tag Risposta.jsp Dichiarazione di una tag library linguaggio EL

7 Utilizzo di JSTL Installazione taglib jstl Scaricare il distribution jakarta-taglibs-standard zip da Copiare i file dalla cartella lib alla cartella lib di Web-inf dell applicazione Copiare i file dalla cartella tld alla cartella Web-inf dell applicazione B6 JSP Paolo Salvaneschi 7 B6 JSP Paolo Salvaneschi 7

8 Utilizzo di JSTL Files JAR Contengono le classi java che implementano le azioni Files TLD Contengono le definizioni dei tag della libreria, i nomi delle classi, Es. c.tld espressioni con scripting c-rt.tld espressioni con linguaggio EL B6 JSP Paolo Salvaneschi 8 B6 JSP Paolo Salvaneschi 8

9 Utilizzo di JSTL B6 JSP Paolo Salvaneschi 9 B6 JSP Paolo Salvaneschi 9

10 Utilizzo di JSTL Dichiarazione di una tag library prefix= prefisso uri= tagliburi %> Dichiara una tag library utilizzata nella pagina che contiene azioni personalizzate (o JSTL) prefix uri prefisso da utilizzare nei nomi degli elementi di azione stringa utilizzata per localizzare l implementazione della tag library (es. nome simbolico definito nel file TLD della library) B6 JSP Paolo Salvaneschi 10 B6 JSP Paolo Salvaneschi 10

11 Utilizzo di JSTL Utilizzo di una tag library - sintassi <prefix:action_name attr1= value1 attr2= value2 > action_body </prefix:action_name> Esempio <jsp:forward page= userinfovalid.jsp > <jsp:param name= msg value= invalid address /> </jsp:forward> Forma abbreviata <prefix:action_name attr1= value1 attr2= value2 /> B6 JSP Paolo Salvaneschi 11 B6 JSP Paolo Salvaneschi 11

12 Utilizzo di JSTL La libreria JSTL core <c:if> <c:choose> <c:when> <c:otherwise> <c:foreach> <c:fortokens> <c:out> <c:import> <c:redirect> <c:url> <c:param> <c:remove> <c:set> <c:catch> B6 JSP Paolo Salvaneschi 12 B6 JSP Paolo Salvaneschi 12

13 Utilizzo di JSTL <c:if test= espressione booleana > Elementi JSP </c:if> <c:choose> azioni <c:when> ed eventualmente un azione <c:otherwise> </c:choose> Elabora la prima azione <c:when> che ha espressione di test con valore true; se nessuna elabora <c:otherwise> B6 JSP Paolo Salvaneschi 13 B6 JSP Paolo Salvaneschi 13

14 Utilizzo di JSTL <c:when test= espressione booleana > Elementi JSP </c:when> <c:otherwise> Elementi JSP </c:otherwise> B6 JSP Paolo Salvaneschi 14 B6 JSP Paolo Salvaneschi 14

15 Utilizzo di JSTL param Variabile EL implicita <c:choose> <c:when test="${param.nome == 'Mario'}"> <HR> <H2>Benvenuto <c:out value="${param.nome}" /></H2> </HR> </c:when> <c:otherwise> <HR> <H2>Utente non riconosciuto</h2> </HR> </c:otherwise> </c:choose> B6 JSP Paolo Salvaneschi 15 B6 JSP Paolo Salvaneschi 15

16 Utilizzo di JSTL Numero prefissato di iterazioni <c:foreach [var= var ] [varstatus= varstatus ] begin= startindex end= stopindex [step= increment ]> Elementi JSP </c:foreach> Valuta il corpo un numero di volte prefissato indice corrente Variabile che contiene un oggetto LoopTagStatus che definisce lo stato dell iterazione B6 JSP Paolo Salvaneschi 16 B6 JSP Paolo Salvaneschi 16

17 Utilizzo di JSTL Iterazione sugli elementi di una collezione <c:foreach items= collection [var= var ] [varstatus= varstatus ] [begin= startindex ] [end= stopindex ] [step= increment ]> Elementi JSP </c:foreach> Valuta il corpo una volta per ciascun elemento di una collezione collezione elemento corrente della collezione Indice iniziale con base 0 Default: 0 Indice finale con base 0 (incluso nell iterazione). Default: ultimo elemento B6 JSP Paolo Salvaneschi 17 B6 JSP Paolo Salvaneschi 17

18 Utilizzo di JSTL <%-- cinque iterazioni che scrivono 1,2,3,4,5 --%> <c:foreach var= current begin= 1 end= 5 > <c:out value= ${current} /> </c:foreach> <%-- iterazione su tutti i parametri di una richiesta --%> <c:foreach items= ${param} var= current > Name:<c:out value= ${current.key} /> Value:<c:out value= ${current.value} /> </c:foreach> Nome e valore del singolo elemento (java.util.map) B6 JSP Paolo Salvaneschi 18 B6 JSP Paolo Salvaneschi 18

19 Utilizzo di JSTL <c:fortokens items= stringoftokens delims= delimiters [var= var ] [varstatus= varstatus ] [begin= startindex ] [end= stopindex ] [step= increment ]> Elementi JSP </c:fortokens > I token su cui effettuare l iterazione Elenco dei delimitatori elemento corrente Valuta il corpo una volta per ciascun token presente in una String, delimitato da un carattere specificato B6 JSP Paolo Salvaneschi 19 B6 JSP Paolo Salvaneschi 19

20 Utilizzo di JSTL <%-- iterazione su token separati da barre verticali --%> <c:fortokens items= ${tokens} delims= var= current > <c:out value= ${current} /> </c:fortokens> B6 JSP Paolo Salvaneschi 20 B6 JSP Paolo Salvaneschi 20

21 Utilizzo di JSTL page contenttype="text/html" %> taglib prefix="c" uri=" %> <html><head><title></title></head> <c:set var="elemento" value="primo secondo terzo quarto"/> <h3>elemento</h3> <c:out value="${elemento}"/> <h3>tokens</h3> <c:fortokens items="${elemento}" delims=" " var="current"> <c:out value="${current}"/> <br> </c:fortokens> </body> </html> B6 JSP Paolo Salvaneschi 21 B6 JSP Paolo Salvaneschi 21

22 Utilizzo di JSTL <c:out value= espressione [default= espressionedidefault ]/> Valuta un espressione e inserisce il risultato nella risposta convertito in String ( o un valore di default se l espressione vale null) B6 JSP Paolo Salvaneschi 22 B6 JSP Paolo Salvaneschi 22

23 Utilizzo di JSTL <c:import> Importa una risorsa interna (all applicazione web) (come <jsp:include>) o esterna. (può essere salvato il contenuto come String o reso disponibile tramite java.io.reader --- vedi JSTL library X:) <c:redirect> Invia al client una URL che indica di effettuare una nuova richiesta <c:url> Applica regole di conversione ad una URL (es. da percorso relativo al contesto (tomcat) a percorso relativo al server) <c:param> Utilizzata nidificata con le precedenti per inserire un parametro della richiesta in un URL B6 JSP Paolo Salvaneschi 23 B6 JSP Paolo Salvaneschi 23

24 Utilizzo di JSTL <c:set> imposta una variabile di scope <c:set var= " name " value= " myname " scope= " session " /> <c:remove> Cfr. Passaggio dati tra pagine rimuove una variabile di scope <c:remove var= " authenticationtoken " scope= " session " /> <c:catch> intercetta un eccezione lanciata da elementi JSP B6 JSP Paolo Salvaneschi 24 B6 JSP Paolo Salvaneschi 24

25 Utilizzo di JSTL IL linguaggio EL Linguaggio per scrivere le espressioni che impostano dinamicamente gli attributi delle azioni <c:out value="${param.nome} "/> EL fa parte delle specifiche JSTL Non delle azioni standard Linguaggio EL Espressione java <jsp:setproperty name="msg" property="category" value= "<%= request.getparameter('item') %>" /> B6 JSP Paolo Salvaneschi 25 B6 JSP Paolo Salvaneschi 25

26 Utilizzo di JSTL Sintassi <c:out value="${param.nome}"/> Inizio con delimitatore ${ Fine con } Si possono combinare espressioni EL e testo statico <c:out value="risultato:${1+2+3}"/> B6 JSP Paolo Salvaneschi 26 B6 JSP Paolo Salvaneschi 26

27 Utilizzo di JSTL Sintassi Operatori: + - * / <,>,&&,,!,empty (var con valore nullo o vuoto ).. Variabili specifiche dell applicazione Variabili implicite previste da EL B6 JSP Paolo Salvaneschi 27 B6 JSP Paolo Salvaneschi 27

28 Utilizzo di JSTL Variabili implicite previste da EL param collezione di tutti i valori dei parametri della richiesta, un valore String per parametro (java.util.map) paramvalues idem, array di String per ogni parametro (java.util.map) (es. di uso con checkbox) B6 JSP Paolo Salvaneschi 28 B6 JSP Paolo Salvaneschi 28

29 Utilizzo di JSTL Variabili implicite previste da EL pagescope, requestscope, sessionscope, applicationscope collezione di tutte le variabili con scope a livello di pagina, richiesta, sessione, applicazione pagecontext Fornisce l accesso a vari dati relativi alla richiesta (es.pagecontext.request.method).. B6 JSP Paolo Salvaneschi 29 B6 JSP Paolo Salvaneschi 29

30 Gestione dell input con JSTL index.jsp response.jsp Esempio 1 B6 JSP Paolo Salvaneschi 30 B6 JSP Paolo Salvaneschi 30

31 Gestione dell input con JSTL <html><head><title>user Info Entry Form</title></head> <body bgcolor="white"> <form action="response.jsp" method="post"> <table> <tr><td>nome:</td><td><input type="text" name="nome"></td></tr> <tr><td>cognome:</td><td><input type="text" name="cognome"></td></tr> <tr> <td>vini preferiti:</td> <td> <input type="checkbox" name="vino" value="ferrari">ferrari<br> <input type="checkbox" name="vino" value="berlucchi">berlucchi<br> <input type="checkbox" name="vino" value="prosecco">prosecco<br></td> </tr> <tr><td><input type="submit" value="invia"></td></tr> </table> </form> </body></html> B6 JSP Paolo Salvaneschi 31 B6 JSP Paolo Salvaneschi 31

32 page contenttype="text/html" %> taglib prefix="c" uri=" %> <html><head><title>user Info Response</title></head> <body bgcolor="white"> <h2>dati ricevuti</h2> <table border="1"> <tr><td>nome:</td> <td><c:out value="${param.nome}" /></td> </tr> <tr><td>cognome:</td> <td><c:out value="${param.cognome}" /></td> </tr><td>vini preferiti:</td> <td> <c:foreach items="${paramvalues.vino}" var="current"> <c:out value="${current}" /> <br> </c:foreach> </td> Per tutti gli elementi dell array di </table> </body></html> Gestione dell input con JSTL String (da 0 a ultimo) B6 JSP Paolo Salvaneschi 32 B6 JSP Paolo Salvaneschi 32

33 Gestione dell input con JSTL Esempio 2 B6 JSP Paolo Salvaneschi 33 B6 JSP Paolo Salvaneschi 33

34 Gestione dell input con JSTL page contenttype="text/html" %> taglib prefix="c" uri=" %> <html><head><title>request Info</title></head> <body bgcolor="white"> <h2>sono state ricevute le seguenti informazioni:</h2> <ul> <li>request Method: <c:out value="${pagecontext.request.method}" /> <li>request Protocol: <c:out value="${pagecontext.request.protocol}" /> <li>request URL: <c:out value="${pagecontext.request.requesturl}" /> <li>server Port: <c:out value="${pagecontext.request.serverport}" /> <li>remote Address: <c:out value="${pagecontext.request.remoteaddr}" /> </ul> </body></html> B6 JSP Paolo Salvaneschi 34 B6 JSP Paolo Salvaneschi 34

35 Gestione dell input con JSTL Validazione dell input B6 JSP Paolo Salvaneschi 35 B6 JSP Paolo Salvaneschi 35

36 page contenttype="text/html" %> taglib prefix="c" uri=" %> <html><head><title>user Info Entry Form</title></head> <body bgcolor="white"> <form action="index.jsp" method="post"> <input type="hidden" name="forminviata" value="true"> <table> <c:if test="${param.forminviata && empty param.nome}"> <tr><td></td> <td colspan="2"><font color="red"> Scrivere il nome </font></td></tr> Verifica se il valore della </c:if> variabile è not null AND <tr> stringa vuota (" ") <td>nome:</td> <td> <input type="text" name="nome value="<c:out value="${param.nome}" />"> </td> </tr> Gestione dell input con JSTL Validazione dell input Al primo caricamento della pagina non è true (null) B6 JSP Paolo Salvaneschi 36 B6 JSP Paolo Salvaneschi 36

37 Gestione dell input con JSTL <c:if test="${param.forminviata && empty param.cognome}"> <tr><td></td> <td colspan="2"><font color="red"> Scrivere il cognome </font></td></tr> </c:if> <tr> <td>cognome:</td> <td><input type="text" name="cognome" value="<c:out value="${param.cognome}" />"> </td></tr> <tr> <td colspan="3"> <input type="submit" value="send Data"> </td> </tr> </table> </form></body></html> Validazione dell input Nota: quando tutti i parametri sono validati si può passare il controllo ad un altra pagina affinchè elabori i parametri B6 JSP Paolo Salvaneschi 37 B6 JSP Paolo Salvaneschi 37

38 Passaggio del controllo tra pagine <jsp:forward page= nextpage.jsp /> Trasferisce il controllo dell elaborazione della richiesta http ad un altra pagina. Il controllo non torna alla pagina di origine. <jsp:forward page= nextpage.jsp > <jsp:param> <jsp:param>. </jsp:forward > Trasferisce il controllo dell elaborazione della richiesta http ad un altra pagina passando parametri supplementari che si aggiungono ai parametri della richiesta http B6 JSP Paolo Salvaneschi 38 B6 JSP Paolo Salvaneschi 38

39 Passaggio del controllo tra pagine B6 JSP Paolo Salvaneschi 39 B6 JSP Paolo Salvaneschi 39

40 Passaggio del controllo tra pagine <HTML> <HEAD></HEAD> <BODY> <jsp:forward page="forwarded.jsp"/> </BODY> </HTML> page contenttype="text/html" %> taglib prefix="c" uri=" %> <HTML><HEAD></HEAD> <BODY> <H1> Pagina chiamata <HR> <BR> <H2>Nome:<c:out value="${param.nome}" /></H2> <H2>Cognome:<c:out value="${param.cognome}" /></H2> </H1> <HR> </BODY></HTML> B6 JSP Paolo Salvaneschi 40 B6 JSP Paolo Salvaneschi 40

41 Passaggio del controllo tra pagine indirizzo=via Roma 4 B6 JSP Paolo Salvaneschi 41 B6 JSP Paolo Salvaneschi 41

42 Passaggio del controllo tra pagine <HTML> <HEAD></HEAD> <BODY> <HR> <jsp:forward page="forwarded.jsp"> <jsp:param name="indirizzo" value="via Roma 4"/> </jsp:forward> </BODY> </HTML> B6 JSP Paolo Salvaneschi 42 B6 JSP Paolo Salvaneschi 42

43 Passaggio del controllo tra pagine page contenttype="text/html" %> taglib prefix="c" uri=" %> <HTML> <HEAD> </HEAD> <BODY> <H1> Pagina chiamata <HR> <BR> <H2>Nome:<c:out value="${param.nome}" /></H2> <H2>Cognome:<c:out value="${param.cognome}" /></H2> <H2>Indirizzo:<c:out value="${param.indirizzo}" /></H2> </H1> <HR> </BODY> </HTML> B6 JSP Paolo Salvaneschi 43 B6 JSP Paolo Salvaneschi 43

44 Passaggio del controllo tra pagine forwarded.jsp index.jsp index.jsp B6 JSP Paolo Salvaneschi 44 B6 JSP Paolo Salvaneschi 44

45 page contenttype="text/html" %> taglib prefix="c" uri=" %> <html><head><title>user Info Entry Form</title></head> <body bgcolor="white"> <c:if test="${!empty param.nome &&!empty param.cognome}"> <jsp:forward page="forwarded.jsp"/> </c:if> <form action="index.jsp" method="post"> <input type="hidden" name="forminviata" value="true"> <table> <c:if test="${param.forminviata && empty param.nome}"> <tr><td></td> <td colspan="2"><font color="red"> Scrivere il nome </font></td></tr> </c:if> <tr> come prima. Gestione dell input con JSTL Esempio precedente (validazione dell input) modificato Nota: trasferisce il controllo dell elaborazione della richiesta http. Il controllo non torna alla pagina di origine. B6 JSP Paolo Salvaneschi 45 B6 JSP Paolo Salvaneschi 45

46 Model View Controller B6 JSP Paolo Salvaneschi 46 B6 JSP Paolo Salvaneschi 46

47 Model View Controller Form di richiesta index.htm Pagina di risposta valida accetta.jsp Pagina di risposta non valida rifiuta.jsp View submit forward forward Gestione Gestione.JSP Controller Cliente Bean access ClienteBean Model B6 JSP Paolo Salvaneschi 47 B6 JSP Paolo Salvaneschi 47

48 Model View Controller Model contiene dati / comportamenti relativi al dominio View visualizza il modello visualizza ogni informazione necessaria Controller gestisce l input manipola il modello causa l attivazione della view appropriata B6 JSP Paolo Salvaneschi 48 B6 JSP Paolo Salvaneschi 48

49 Model View Controller Form di richiesta index.htm Pagina di risposta valida accetta.jsp Pagina di risposta non valida rifiuta.jsp View Gestione Gestione.JSP Controller Cliente ClienteBean Model Nota: nonostante sembri dalla forma non è una architettura a layer B6 JSP Paolo Salvaneschi 49 B6 JSP Paolo Salvaneschi 49

50 Model View Controller <HTML><HEAD></HEAD> <BODY> <H1>Form di richiesta</h1> <HR> <FORM method= "get" action="gestione.jsp"> Nome: <br><input type="text" name="nome" size="30"><br> Cognome: <br><input type="text" name="cognome" size="30"><br> Codice utente: Form di richiesta <br><input type="text" name="codice" size="10" maxlength ="10"><br><br> Tipo fornitura: <br><input type="radio" name="tipo" Value="tipoC">Prodotto su specifica<br> <input type="radio" name="tipo" Value="tipoD" checked>prodotto a magazzino <br><br> <input type="submit" value="invia"> </FORM> </BODY></HTML> B6 JSP Paolo Salvaneschi 50 B6 JSP Paolo Salvaneschi 50

51 page contenttype="text/html" %> taglib prefix="c" uri=" %> <HTML> <HEAD> </HEAD> <BODY> <HR> <BR> <H2><c:out value="${param.info}" /></H2> </H1> <HR> </BODY> </HTML> Pagina di risposta valida Model View Controller Pagina di risposta non valida <HTML> <HEAD></HEAD> <BODY> <HR> <BR> <H2> Richiesta non accettata</h2> <BR> <HR> </BODY> </HTML> B6 JSP Paolo Salvaneschi 51 B6 JSP Paolo Salvaneschi 51

52 Model View Controller taglib prefix="c" uri=" %> <jsp:usebean id="cliente" class="info.clientebean" /> <jsp:setproperty name="cliente" property="*" /> <c:choose> <c:when test="${cliente.stato == 'Cliente riconosciuto'}"> <jsp:forward page="accetta.jsp"> <jsp:param name="info" value="cliente riconosciuto--sconto accordato"/> </jsp:forward> </c:when> <c:otherwise> <jsp:forward page="rifiuta.jsp"/> </c:otherwise> </c:choose> Gestione Nota: non utilizza HTML B6 JSP Paolo Salvaneschi 52 B6 JSP Paolo Salvaneschi 52

53 Utilizzo di componenti JavaBean Nome Proprietà Tipo Accesso Descrizione Cliente ClienteBean nome String Read Write Nome del cliente cognome String Read Write Cognome del cliente codice String Read Write Codice utente tipo String Read Write Tipo fornitura stato String Read Stato: Cliente non riconosciuto, Cliente riconosciuto La lettura dello stato causa l aggiornamento dello sconto sconto String Read Importo dello sconto accordato B6 JSP Paolo Salvaneschi 53 B6 JSP Paolo Salvaneschi 53

54 Model View Controller package info; import java.util.*; public class ClienteBean implements java.io.serializable { private String nome; private String cognome; private String codice; private String tipo; private String stato; private String sconto; Cliente //Costruttore che inizializza le strutture di dati public ClienteBean() { initcliente(); } B6 JSP Paolo Salvaneschi 54 B6 JSP Paolo Salvaneschi 54

55 Model View Controller //Set dei parametri Cliente public void setnome(string nome) { this.nome = nome;} public void setcognome(string cognome) { this.cognome = cognome;} public void setcodice(string codice) { this.codice = codice;} public void settipo(string tipo) { this. tipo = tipo;} //Return anagrafica cliente public String getnome() { return nome;} public String getcognome() { return cognome;} public String getcodice() { return codice;} public String gettipo() { return tipo;} //Return stato e sconto public String getstato() { stato = "Cliente non riconosciuto"; sconto = " "; if ("Mario".equals(nome)) { stato = "Cliente riconosciuto"; sconto = "20 %"; } return stato;} public String getsconto() { return sconto;} //Inizializza private void initcliente() { nome = " "; cognome = " "; codice = " "; tipo = " "; stato = " "; B6 JSP Paolo Salvaneschi 55 B6 JSP Paolo Salvaneschi 55 sconto = "0 %";}}

56 Model View Controller Nota: Accesso alle proprietà del Bean Accesso con jsp:getproperty <jsp:getproperty name="cliente" property="stato" /> Aggiunge il valore della proprietà di un Bean convertito in una stringa, alla risposta generata dalla pagina Accesso con notazione a punto attraverso EL <c:out value="${cliente.stato}" /> ottiene lo stesso risultato di sopra <c:when test="${cliente.stato == 'Cliente riconosciuto'}"> <c:set var="statolocale" value="${cliente.stato}" /> B6 JSP Paolo Salvaneschi 56 B6 JSP Paolo Salvaneschi 56

57 Passaggio dei dati tra pagine - scope Condivisione dati tra pagine: Scope (ambiti di validità) Lo scope definisce la disponibilità di un oggetto: Page (default) oggetti disponibili solo all interno di una pagina Request oggetti disponibili a tutte le pagine che elaborano la stessa richiesta (cfr. jsp:forward) Session oggetti condivisi da più richieste dello stesso browser Application oggetti condivisi da tutti gli utenti dell applicazione web B6 JSP Paolo Salvaneschi 57 B6 JSP Paolo Salvaneschi 57

58 Passaggio dei dati tra pagine - scope Client richiesta risposta richiesta risposta Pagina 1 inoltro Pagina 2 Pagina 3 inoltro Pagina 4 Scope di pagina Scope di pagina Scope di pagina Scope di pagina Scope di richiesta Scope di richiesta Scope di sessione B6 JSP Paolo Salvaneschi 58 B6 JSP Paolo Salvaneschi 58

59 Passaggio dei dati tra pagine - scope Nota: il nome di un oggetto deve essere univoco in tutti gli scope (secondo la specifica JSP. In pratica disatteso dai container che implementano JSP) Specifica dello scope. Esempio: <jsp:usebean id="cliente" scope="request" class="info.clientebean" /> Al momento dell esecuzione cerca un bean con lo stesso nome nello scope. Se esiste: nulla. Se non esiste: crea istanza nello scope Accesso tramite variabili implicite <c:out value="${pagescope.userinfo1.username}" /> <c:out value="${requestscope.userinfo2.username}" /> B6 JSP Paolo Salvaneschi 59 B6 JSP Paolo Salvaneschi 59

60 Passaggio dei dati tra pagine - scope index.jsp Form di richiesta forward scope object submit Gestione Pagina di risposta valida forward gestione.jsp Bean access accetta.jsp View Controller Cliente clientebean Model B6 JSP Paolo Salvaneschi 60 B6 JSP Paolo Salvaneschi 60

61 Passaggio dei dati tra pagine - scope B6 JSP Paolo Salvaneschi 61 B6 JSP Paolo Salvaneschi 61

62 taglib prefix="c" uri=" %> <jsp:usebean id="cliente" scope="request" class="info.clientebean" /> <HTML><HEAD></HEAD> <BODY> <H1>Form di richiesta</h1> <HR> <FORM method= "get" action="gestione.jsp"> Nome:<br><input type="text" name="nome" size="30"><br> Cognome:<br><input type="text" name="cognome" size="30"><br> Codice utente:<br><input type="text" name="codice" size="10" maxlength ="10"> <br><br> Tipo fornitura: <br><input type="radio" name="tipo" Value="tipoC">Prodotto su specifica <br><input type="radio" name="tipo" Value="tipoD" checked>prodotto a magazzino <br><br> Passaggio dei dati tra pagine - scope NB Form di richiesta B6 JSP Paolo Salvaneschi 62 B6 JSP Paolo Salvaneschi 62

63 Passaggio dei dati tra pagine - scope <c:if test="${param.info == 'Cliente non riconosciuto'}"> <font color="red"> Nome:<c:out value="${cliente.nome}" /><br> Cognome:<c:out value="${cliente.cognome}" /><br> Cliente non riconosciuto. Inserire i dati<br><br> </font> </c:if> <input type="submit" value="invia"> </FORM> </BODY> </HTML> Form di richiesta Proprietà del Bean nello scope di request (E il Bean caricato con i dati della form. I dati sono utilizzati per produrre la scritta in rosso) B6 JSP Paolo Salvaneschi 63 B6 JSP Paolo Salvaneschi 63

64 Passaggio dei dati tra pagine - scope Pagina di risposta valida Cliente Come esempio precedente B6 JSP Paolo Salvaneschi 64 B6 JSP Paolo Salvaneschi 64

65 Passaggio dei dati tra pagine - scope <%@ taglib prefix="c" uri=" %> <jsp:usebean id="cliente" scope="request" class="info.clientebean" /> <jsp:setproperty name="cliente" property="*" /> <c:choose> <c:when test="${cliente.stato == 'Cliente riconosciuto'}"> Gestione <jsp:forward page="accetta.jsp"> <jsp:param name="info" value="cliente riconosciuto--sconto accordato"/> </jsp:forward> </c:when> Torna alla form di richiesta <c:otherwise> <jsp:forward page="index.jsp"> <jsp:param name="info" value="cliente non riconosciuto"/> </jsp:forward> </c:otherwise> </c:choose> B6 JSP Paolo Salvaneschi 65 B6 JSP Paolo Salvaneschi 65

66 Passaggio dei dati tra pagine - scope Nota sull esempio: Prima request della pagina index.jsp: è creato un Bean cliente (che non è utilizzato) L utente compila la form e inoltra una nuova request alla pagina gestione.jsp la quale Crea un nuovo Bean cliente (il vecchio è fuori dallo scope di validità è una nuova request) Imposta le proprietà del Bean Passa il controllo alla pagina index.jsp (nello stesso scope di request) B6 JSP Paolo Salvaneschi 66 B6 JSP Paolo Salvaneschi 66

67 Passaggio dei dati tra pagine - scope La pagina index.jsp: recupera il Bean esistente nello scope di request utilizza le proprietà caricate da gestione.jsp per visualizzare la segnalazione di errore B6 JSP Paolo Salvaneschi 67 B6 JSP Paolo Salvaneschi 67

68 Passaggio dei dati tra pagine - scope Attenzione quando si mischia l utilizzo di JSTL e lo scripting Le azioni JSTL espongono i dati mediante le variabili di scope che vivono in uno degli scope di JSP Uno scriptlet dichiara variabili di scripting nello specifico linguaggio (java) B6 JSP Paolo Salvaneschi 68 B6 JSP Paolo Salvaneschi 68

69 Passaggio dei dati tra pagine - scope Per manipolare variabili di scope in uno script bisogna disporre di una variabile di scripting che accede alla variabile di scope L azione <jsp:usebean... crea anche una variabile di scripting che contiene il riferimento all istanza di Bean. B6 JSP Paolo Salvaneschi 69 B6 JSP Paolo Salvaneschi 69

70 Passaggio dei dati tra pagine - scope <%@ taglib prefix="c" uri=" %> <jsp:usebean id="magazzino" scope="request" class="info.magazzinobean" /> <jsp:setproperty name="magazzino" property="*" /> <%-- Nota: l'unico articolo in magazzino è "patate" con codice "p21" --%> <c:choose> <c:when test="${magazzino.stato == 'a_magazzino'}"> <jsp:forward page="rispondi_ok.jsp"> <jsp:param name="info" value="articolo a magazzino"/> </jsp:forward> </c:when> <c:otherwise> <jsp:forward page="rispondi_nok.jsp"> <jsp:param name="info" value="articolo non a magazzino"/> </jsp:forward> </c:otherwise> </c:choose> B6 JSP Paolo Salvaneschi 70 B6 JSP Paolo Salvaneschi 70

71 Passaggio dei dati tra pagine - scope <%@ page contenttype="text/html" %> rispondi_ok <%@ taglib prefix="c" uri=" %> <jsp:usebean id="magazzino" scope="request" class="info.magazzinobean" /> <HTML><HEAD></HEAD> <BODY> Accesso alla proprietà del bean con notazione a punto attraverso EL jsp:getproperty Script (espressione) <HR> <BR> <H2><c:out value="${param.info}" /></H2> <font color="red"> Quantità attualmente disponibile:<br> <c:out value="${magazzino.quantità}" /><br> <jsp:getproperty name="magazzino" property="quantità" /><br> <%=magazzino.getquantità()%> </font> </H1><HR> B6 JSP Paolo Salvaneschi 71 B6 JSP Paolo Salvaneschi 71

72 Passaggio dei dati tra pagine - scope <%--con la dichiarazione <jsp:usebean... tutti e tre i modi funzionano--%> <%--senza <jsp:usebean... funzionano i primi due: le librerie JSTL ritrovano la VARIABILE DI SCOPE "magazzino" nello scope di request--%> <%--ma non funziona il terzo. Infatti il terzo richiede una VARIABILE DI SCRIPTING che contenga il riferimento all'oggetto "magazzino". rispondi_ok L azione <jsp:usebean... Al momento dell esecuzione cerca un bean con lo stesso nome nello scope. Se esiste non crea un istanza nello scope. Crea anche una variabile di scripting che contiene il riferimento all istanza di Bean. L utilizzo dell azione è un modo per creare la variabile di scripting e rendere accessibili le variabili di scope allo script--%> B6 JSP Paolo Salvaneschi 72 B6 JSP Paolo Salvaneschi 72

73 Passaggio dei dati tra pagine - scope Condivisione dei dati di sessione e applicazione Ogni finestra dell esempio è associata ad una sessione B6 JSP Paolo Salvaneschi 73 B6 JSP Paolo Salvaneschi 73

74 Passaggio dei dati tra pagine - scope <%@ taglib prefix="c" uri=" %> <html><head><title>counter page</title></head> <body bgcolor="white"> <%-- Increment counters --%> <c:set var="sessioncounter" scope="session" value="${sessioncounter + 1}" /> <c:set var="applcounter" scope="application" value="${applcounter + 1}" /> <h1>counter page</h1> <h2> This page has been visited <i> <c:out value="${sessioncounter}" /> </i> times within the current session, and <i> <c:out value="${applcounter}" /> </i> times by all users since the application was started. </h2> </body> </html> Incrementato ad ogni attivazione da parte dello stesso browser Incrementato ad ogni attivazione dell applicazione web B6 JSP Paolo Salvaneschi 74 B6 JSP Paolo Salvaneschi 74

75 Passaggio dei dati tra pagine - scope sessione B6 JSP Paolo Salvaneschi 75 B6 JSP Paolo Salvaneschi 75

76 Passaggio dei dati tra pagine - scope <The following information was received: <ul> <li>request Method: <c:out value="${pagecontext.request.method}" /> <li>request Protocol: <c:out value="${pagecontext.request.protocol}" /> <li>request URL: <c:out value="${pagecontext.request.requesturl}" /> <li>server Port: <c:out value="${pagecontext.request.serverport}" /> <li>remote Host: <c:out value="${pagecontext.request.remotehost}" /> <li>cookies:<br> <c:foreach items="${pagecontext.request.cookies}" var="c"> <b> <c:out value="${c.name}" /></b>: <c:out value="${c.value}" /><br> </c:foreach> </ul> </body> </html> B6 JSP Paolo Salvaneschi 76 B6 JSP Paolo Salvaneschi 76

Pattern di Progettazione

Pattern di Progettazione Università di Bergamo Dip. di Ingegneria gestionale, dell'informazione e della produzione INGEGNERIA DEL SOFTWARE Paolo Salvaneschi C2_1 V3.2 Pattern di Progettazione Il contenuto del documento è liberamente

Dettagli

Università di Bergamo Dip. di Ingegneria gestionale, dell'informazione e della produzione INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi C1_1 V3.

Università di Bergamo Dip. di Ingegneria gestionale, dell'informazione e della produzione INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi C1_1 V3. Università di Bergamo Dip. di Ingegneria gestionale, dell'informazione e della produzione INGEGNERIA DEL SOFTWARE Paolo Salvaneschi C1_1 V3.4 Componenti Il contenuto del documento è liberamente utilizzabile

Dettagli

Università di Bergamo Facoltà di Ingegneria. Applicazioni Internet B. Paolo Salvaneschi B6_1 V1.7. JSP parte A

Università di Bergamo Facoltà di Ingegneria. Applicazioni Internet B. Paolo Salvaneschi B6_1 V1.7. JSP parte A Università di Bergamo Facoltà di Ingegneria Applicazioni Internet B Paolo Salvaneschi B6_1 V1.7 JSP parte A Il contenuto del documento è liberamente utilizzabile dagli studenti, per studio personale e

Dettagli

Laboratorio di sistemi Prima Web Application JSP [Java]

Laboratorio 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

Dettagli

Introduzione a JSP (Java Server Pages) MC 2005

Introduzione 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

Dettagli

Università di Bergamo Facoltà di Ingegneria. Applicazioni Internet B. Paolo Salvaneschi B6_4 V1.7. JSP parte D

Università di Bergamo Facoltà di Ingegneria. Applicazioni Internet B. Paolo Salvaneschi B6_4 V1.7. JSP parte D Università di Bergamo Facoltà di Ingegneria Applicazioni Internet B Paolo Salvaneschi B6_4 V1.7 JSP parte D Il contenuto del documento è liberamente utilizzabile dagli studenti, per studio personale e

Dettagli

Introduzione alle JSP

Introduzione 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

Dettagli

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

Verso 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

Dettagli

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

Verso 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:

Dettagli

JUG Ancona Italy. JSP 2.0: Tag Library. Matteo Piccinini Web Developer

JUG 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

Dettagli

6 JavaServer Pages. Marco Tessarotto Programmazione dei Web Server Anno Accademico

6 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

Dettagli

Laboratorio di sistemi JSTL e database Jsp [NetBeans]

Laboratorio di sistemi JSTL e database Jsp [NetBeans] Elenco dei film ottenuti usando la libreria JSTL 1.1 elenco_film_jstl.pdf Pag. 1/18 Cozzetto Inserisco i dati di un film. Prima dell'inserimento i dati vengono confrontati con quelli della tabella film_tbl

Dettagli

Siti web centrati sui dati Architettura MVC-2: JSP

Siti 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

Dettagli

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java]

Laboratorio 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

Dettagli

Università di Bergamo Facoltà di Ingegneria. Applicazioni Internet B. Paolo Salvaneschi B3_2 V1.22. HTML Parte B

Università di Bergamo Facoltà di Ingegneria. Applicazioni Internet B. Paolo Salvaneschi B3_2 V1.22. HTML Parte B Università di Bergamo Facoltà di Ingegneria Applicazioni Internet B Paolo Salvaneschi B3_2 V1.22 HTML Parte B Il contenuto del documento è liberamente utilizzabile dagli studenti, per studio personale

Dettagli

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

Verso 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

Dettagli

Tecnologie di Sviluppo per il Web

Tecnologie 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)

Dettagli

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

1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet 1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet Controllo dell utente connesso al sito tramite JSP, Java Beans e Servlet. Ciò che ci proponiamo di fare è l accesso

Dettagli

Programmazione lato client. JavaScript. Applicazioni di Rete M. Ribaudo - DISI. JavaScript

Programmazione 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

Dettagli

7 custom tags. Marco Tessarotto Programmazione dei Web Server Anno Accademico

7 custom tags. Marco Tessarotto Programmazione dei Web Server Anno Accademico 7 custom tags Marco Tessarotto Programmazione dei Web Server Anno Accademico 2004-2005 Custom Tags Abbiamo visto i tag (azioni) standard JSP(jsp:useBean, jsp:setproperty, jsp:include ) La tecnologia JSP

Dettagli

JavaScript JavaScript Programmazione lato client JScript JavaScript ECMAScript

JavaScript 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

Dettagli

Java Server Pages A.A

Java 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

Dettagli

Applicazioni web. Sommario. Parte 7 Java Server Pages. Applicazioni web - JSP. Alberto Ferrari 1 JSP. JavaBeans JSTL. Architettura e sintassi di base

Applicazioni 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

Dettagli

Soluzione 1: controller per la pagina di dettaglio delle categorie

Soluzione 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

Dettagli

Programmazione Web D B M G. Il linguaggio HTML

Programmazione Web D B M G. Il linguaggio HTML Programmazione Web Il linguaggio HTML Il linguaggio HTML Concetti di base Le interfacce utente in HTML I form Le tabelle Il passaggio dei parametri contenuti nei form HTML: HyperText Markup Language Standard

Dettagli

D B M G Il linguaggio HTML

D B M G Il linguaggio HTML Programmazione Web Il linguaggio HTML Il linguaggio HTML Concetti di base Le interfacce utente in HTML I form Le tabelle Il passaggio dei parametri contenuti nei form @2011 Politecnico di Torino 1 Concetti

Dettagli

@2011 Politecnico di Torino 1

@2011 Politecnico di Torino 1 Concetti di base Programmazione Web Il linguaggio HTML HTML consente di annotare un testo per contrassegnare le parti che lo compongono Le annotazioni sono realizzate tramite i "tag" Visualizzare documenti

Dettagli

JSP [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

JSP [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)

Dettagli

Programmazione Web D B M G. Il linguaggio HTML

Programmazione Web D B M G. Il linguaggio HTML Programmazione Web Il linguaggio HTML Il linguaggio HTML Concetti di base Le interfacce utente in HTML I form Le tabelle Il passaggio dei parametri contenuti nei form HTML: HyperText Markup Language Standard

Dettagli

Programmazione Java Avanzata. MVC Model, View,, Controller. Ing. Gianluca Caminiti

Programmazione 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

Dettagli

D B M G. Basi di dati. Programmazione Web: HTML. Programmazione Web. Il linguaggio Politecnico di Torino 1

D B M G. Basi di dati. Programmazione Web: HTML. Programmazione Web. Il linguaggio Politecnico di Torino 1 Programmazione Web Il linguaggio HTML Il linguaggio HTML Concetti di base Le interfacce utente in HTML I form Le tabelle Il passaggio dei parametri contenuti nei form @2011 Politecnico di Torino 1 Concetti

Dettagli

Modulo o Form in Html

Modulo o Form in Html Pagina dinamica E un documento contenente oggetti, dati e informazioni che possono variare anche in base all iterazione dell utente con il documento stesso. Un esempio classico è quello di una persona

Dettagli

D B M G. Basi di dati. Programmazione Web: HTML. Programmazione Web. Il linguaggio Politecnico di Torino 1

D B M G. Basi di dati. Programmazione Web: HTML. Programmazione Web. Il linguaggio Politecnico di Torino 1 Programmazione Web Il linguaggio HTML Il linguaggio HTML Concetti di base Le interfacce utente in HTML I form Le tabelle Il passaggio dei parametri contenuti nei form @2011 Politecnico di Torino 1 Concetti

Dettagli

@2011 Politecnico di Torino 1

@2011 Politecnico di Torino 1 Il linguaggio HTML Programmazione Web Concetti di base Le interfacce utente in HTML I form Il passaggio dei parametri contenuti nei form Il linguaggio HTML Concetti di base Concetti di base HTML: HyperText

Dettagli

@2011 Politecnico di Torino 1

@2011 Politecnico di Torino 1 Il linguaggio HTML Programmazione Web Concetti di base Le interfacce utente in HTML I form Il passaggio dei parametri contenuti nei form Il linguaggio HTML Concetti di base Concetti di base HTML: HyperText

Dettagli

Laboratorio di Sistemi Fondamenti di JSTL (parte 1) Java (JSTL)

Laboratorio di Sistemi Fondamenti di JSTL (parte 1) Java (JSTL) Adattamento da Wikipedia XML L'XML, acronimo di extensible Markup Language, ovvero Linguaggio di marcatura estensibile è un metalinguaggio creato e gestito dal World Wide Web Consortium (W3C). È una semplificazione

Dettagli

Esercizi su JavaScript, DOM e Web Storage

Esercizi su JavaScript, DOM e Web Storage Linguaggi e tecnologie per il Web prof. Riccardo Rosati Corso di laurea in Ingegneria informatica e automatica Sapienza Università di Roma, a.a. 2017/2018 Esercizi su JavaScript, DOM e Web Storage Esercizio

Dettagli

Le JavaServer Pages - Lezione 7 I JavaBean

Le JavaServer Pages - Lezione 7 I JavaBean Le JavaServer Pages - Lezione 7 I JavaBean A cura di Giuseppe De Pietro (depietro_giuseppe@yahoo.it) Contenuti Nelle lezioni precedenti abbiamo visto gli elementi principali delle Java Server Pages, come

Dettagli

HTML: FORM. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

HTML: FORM. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni HTML: FORM Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Form Text Radio Select CheckBox TextArea Button ... L'elemento serve per delimitare un modulo

Dettagli

scrivere window.alert(). 2 Nell esempio sarebbe scritto solo var hello, senza pertanto attribuire alla variabile hello alcun valore

scrivere window.alert(). 2 Nell esempio sarebbe scritto solo var hello, senza pertanto attribuire alla variabile hello alcun valore In genere il metodo alert() è usato per verificare il valore delle variabili durante la fase di correzione degli errori (debugging), fase che può essere svolta anche con l ausilio di appositi programmi

Dettagli

Laboratorio Progettazione Web PHP e FORMs HTML - Lezione 8. Andrea Marchetti IIT-CNR 2011/2012

Laboratorio Progettazione Web PHP e FORMs HTML - Lezione 8. Andrea Marchetti IIT-CNR 2011/2012 Laboratorio Progettazione Web PHP e FORMs HTML - Lezione 8 Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012 Architettura di una applicazione Web Browser Web HTTP Server Web Dati View Control

Dettagli

Informatica di base Laboratorio di HTML Dott. Serena Villata A.A. 2004/05

Informatica di base Laboratorio di HTML Dott. Serena Villata A.A. 2004/05 Informatica di base Multid@ms Laboratorio di HTML Dott. Serena Villata A.A. 2004/05 Le tabelle Creazione di una tabella: le tabelle vengono utilizzate sia per inserire dati che per migliorare

Dettagli

Java Server Side JSP. Ing. Cesare Monti

Java 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:

Dettagli

AJAX. Riccardo Rosati

AJAX. Riccardo Rosati AJAX Riccardo Rosati Linguaggi e tecnologie per il Web Corso di laurea in Ingegneria informatica e automatica Sapienza Università di Roma a.a. 2017/2018 http://www.dis.uniroma1.it/~rosati/lw/ AJAX AJAX

Dettagli

Un esempio complesso

Un esempio complesso Un esempio complesso Costruiamo un applicazione web di una certa complessità. Vogliamo realizzare un front-end (interfaccia verso gli utenti) di un sito che vende dei prodotti online. Quindi le pagine

Dettagli

HTML Sintassi di HTML Tag principali per i contenuti I Forms

HTML Sintassi di HTML Tag principali per i contenuti I Forms Lezione 1 HTML Sintassi di HTML Tag principali per i contenuti Tag principali per i contenuti I Forms L HTML (HyperText Markup Language) g è il linguaggio gg di markup utilizzato per veicolare le informazioni

Dettagli

AJAX. Riccardo Rosati

AJAX. Riccardo Rosati AJAX Riccardo Rosati Linguaggi e tecnologie per il Web Corso di laurea in Ingegneria informatica e automatica Sapienza Università di Roma a.a. 2016/2017 http://www.dis.uniroma1.it/~rosati/lw/ AJAX AJAX

Dettagli

Laboratorio di reti II: Java Server Pages

Laboratorio 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

Dettagli

LE PRIME ACTIVE SERVICE PAGE: oggetto REQUEST

LE PRIME ACTIVE SERVICE PAGE: oggetto REQUEST LE PRIME ACTIVE SERVICE PAGE: oggetto REQUEST L'oggetto Request può essere considerato come l'esatto contrario dell'oggetto Response, infatti mentre quest'ultimo invia dati al browser, Request serve a

Dettagli

Linguaggio HTML. Reti. Il Linguaggio HTML. Il Linguaggio HTML. Il Linguaggio HTML

Linguaggio HTML. Reti. Il Linguaggio HTML. Il Linguaggio HTML. Il Linguaggio HTML Reti Il Linguaggio HTML Linguaggio HTML HTML = Hypertext Markup Language Linguaggio di markup di tipo descrittivo (usato per descrivere e formattare documenti ipertestuali) con una sintassi prestabilita

Dettagli

HTML e interattività FORM

HTML e interattività FORM HTML e interattività FORM Interattività delle pagine web I moderni siti web non sono più soltanto un insieme di pagine da leggere con testo e immagini, ma rappresentano uno strumento per interagire con

Dettagli

HTML il linguaggio per creare le pagine per il web

HTML il linguaggio per creare le pagine per il web HTML il linguaggio per creare le pagine per il web Parte II: elementi "complessi" HTML: frame i frame servono per suddividere il browser in parti indipendenti all interno delle quali si possono caricare

Dettagli

1) Il client(browser utilizzato) invia al server i dati inseriti dall utente. Server

1) Il client(browser utilizzato) invia al server i dati inseriti dall utente. Server 2) Il Server richiama l'interprete PHP il quale esegue i comandi contenuti nel file.php specificato nell'attributo action del tag form creando un file HTML sulla base dei dati inviati dall utente 1) Il

Dettagli

UNIVERSITÀ DEGLI STUDI DI PARMA REALIZZAZIONE DI UNO STRUMENTO PER LA GESTIONE DI BASI DI DATI IN APPLICAZIONI WEB

UNIVERSITÀ 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.

Dettagli

Linguaggi di scripting

Linguaggi di scripting Linguaggi di scripting In generale uno script è un piccolo programma (al limite una sola istruzione) il cui codice viene inserito all'interno di una pagina HTML o collegato ad esso, e interpretato dal

Dettagli

Lato client: vuol dire che le operazioni programmate vengono svolte e visualizzate direttamente sul computer dell'utente collegato

Lato client: vuol dire che le operazioni programmate vengono svolte e visualizzate direttamente sul computer dell'utente collegato Introduzione al linguaggio PHP Hypertext preprocessor Lato client: vuol dire che le operazioni programmate vengono svolte e visualizzate direttamente sul computer dell'utente collegato Lato server: vuol

Dettagli

Introduzione 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 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

Dettagli

Servlet 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 /

Servlet 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

Dettagli

PHP & MySQL. Giselda De Vita

PHP & MySQL. Giselda De Vita PHP & MySQL Giselda De Vita - 2014 1 Per creare un applicazione WEB su APACHE, in linguaggio PHP, con Base Dati MySQL, possiamo lavorare in locale o in rete. Per lavorare in locale abbiamo bisogno di installare

Dettagli

Java EE 3. Ingegneria del Software (parte II) Andrea Bei

Java EE 3. Ingegneria del Software (parte II) Andrea Bei Java EE 3 Ingegneria del Software (parte II) Andrea Bei Architettura di media complessità: JSP e Servlet In una architettura J2EE di media complessità convivono Servlet e pagine JSP con responsabilità

Dettagli

Laboratorio di Sistemi Prototipo applicazione Biblioteca Jsp [Java]

Laboratorio di Sistemi Prototipo applicazione Biblioteca Jsp [Java] Vogliamo progettare un prototipo di applicazione web che consenta ad un utente di ottenere, selezionando l'autore da una casella combinata, l'elenco dei libri scritti da quell'autore, come nelle figure

Dettagli

Le JavaServer Pages - Lezione 5 Le Standard Action

Le JavaServer Pages - Lezione 5 Le Standard Action Le JavaServer Pages - Lezione 5 Le Standard Action A cura di Giuseppe De Pietro (depietro_giuseppe@yahoo.it) Contenuti In questa lezione vedremo cosa sono le azioni standard JSP (standard action) facendo

Dettagli

HTML. Es: La prossima parola è in <b>neretto</b> Es: La prossima parola è in neretto

HTML. Es: La prossima parola è in <b>neretto</b> Es: La prossima parola è in neretto HTML Il linguaggio HTML (HyperText Markup Language) utilizza annotazioni (tag) per descrivere come verrà visualizzato il documento sul browser di un client. L HTML non è un linguaggio di programmazione

Dettagli

HTML il linguaggio per creare le pagine per il web

HTML il linguaggio per creare le pagine per il web HTML: frame HTML il linguaggio per creare le pagine per il web Parte II: elementi "complessi" i frame servono per suddividere il browser in parti indipendenti all interno delle quali si possono caricare

Dettagli

Tito Flagella - Introduzione alla programmazione di Servlet

Tito 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

Dettagli

HTML Interazione con l utente

HTML Interazione con l utente HTML Interazione con l utente Il web è interattivo e per questo motivo una pagina html deve prevedere la possibilità, per l'utente, di inviare informazioni o effettuare delle scelte. Il linguaggio HTML,

Dettagli

Corso di PHP. Prerequisiti. 6.2 PHP e il web 2. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Corso di PHP. Prerequisiti. 6.2 PHP e il web 2. Conoscenza HTML Tecnica della programmazione Principi di programmazione web Corso di PHP 6.2 PHP e il web 2 1 Prerequisiti Conoscenza HTML Tecnica della programmazione Principi di programmazione web 2 1 Introduzione In questa Unità continuiamo con l illustrazione di alcune importanti

Dettagli

Laboratorio di sistemi Information hiding Jsp [Java]

Laboratorio di sistemi Information hiding Jsp [Java] Vogliamo realizzare una pagina web che ci consenta di filtrare i record della tabella books del database MySQL shop. Fig. 1 Tabella books, database MySQL shop Il filtro viene scritto direttamente dall'utente

Dettagli

Il tag form indica l'inizio della costruzione di un modulo. Necessita del tag di chiusura

Il tag form indica l'inizio della costruzione di un modulo. Necessita del tag di chiusura LE FORM Le form, note in italiano anche come moduli sono delle strutture che permettono all'utente di inserire dei dati o di effettuare delle scelte. Le form, prese singolarmente non sono nient'altro che

Dettagli

Visualizzazione ordini in MyShopDB

Visualizzazione ordini in MyShopDB Visualizzazione ordini in MyShopDB Risolviamo gli esercizi della lezione scorsa, scrivendo una pagina ordini.jsp che visualizzi le intestazioni di ogni ordine (numero d ordine, data, nome, cognome, indirizzo,

Dettagli

Laboratorio di Informatica (Chimica)

Laboratorio di Informatica (Chimica) Laboratorio di Informatica (Chimica) HTML: Elementi Avanzati. Walter Cazzola Dipartimento di Informatica e Comunicazione Università à degli Studi di Milano. e-mail: cazzola@dico.unimi.it Walter Cazzola

Dettagli

Architetture Web: un ripasso

Architetture 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

Dettagli

Javascript: il browser

Javascript: il browser Javascript: il browser Un browser è un programma Un browser interpreta il linguaggio HTML e visualizza le pagine sullo schermo Per la visualizzazione delle pagine un browser si appoggia al software di

Dettagli

Laboratorio di sistemi Autenticazione utente mediante scriplet Jsp [NetBeans]

Laboratorio di sistemi Autenticazione utente mediante scriplet Jsp [NetBeans] Figura 1 - La pagina input_user.jsp appena caricata Figura 2 - Lascio vuoti entrambi i campi o immetto un solo valore Figura 3 - Immetto dei valori che non esistono nel database autent_utente_scriplet.pdf

Dettagli

JavaScript. Caratteristiche del JavaScript. Javascript consente di rendere dinamiche le pagine HTML

JavaScript. Caratteristiche del JavaScript. Javascript consente di rendere dinamiche le pagine HTML JavaScript Caratteristiche del JavaScript Javascript consente di rendere dinamiche le pagine HTML Javascript è un linguaggio di programmazione con il quale è possibile produrre applicazioni eseguibili

Dettagli

Linguaggio HTML. Reti. Il Linguaggio HTML. Il Linguaggio HTML. Il Linguaggio HTML

Linguaggio HTML. Reti. Il Linguaggio HTML. Il Linguaggio HTML. Il Linguaggio HTML Reti Il Linguaggio HTML Linguaggio HTML HTML = Hypertext Markup Language Linguaggio di markup di tipo descrittivo (usato per descrivere e formattare documenti ipertestuali) con una sintassi prestabilita

Dettagli

MVC - Principio. MVC Model View Controller. MVC - Terminologia. MVC - Funzionamento. Richiesta. Controller. Model. Risposta. View

MVC - Principio. MVC Model View Controller. MVC - Terminologia. MVC - Funzionamento. Richiesta. Controller. Model. Risposta. View MVC View Controller! Si tratta di un pattern di progettazione introdotto originariamente con Smalltalk (1980 Xerox)! Si basa su astrazioni presenti in tutte le applicazioni dotate di interfaccia grafica!

Dettagli

Anno Accademico Corso di Tecnologie Web Web Application: JSP

Anno Accademico Corso di Tecnologie Web Web Application: JSP Universita degli Studi di Bologna - Facolta di Ingegneria Anno Accademico 2006-2007 Corso di Tecnologie Web Web Application: JSP http://www-lia.deis.unibo.it/courses/tecnologieweb0607/ Java Server Pages

Dettagli

Anno Accademico Corso di Tecnologie Web Web Application: JSP

Anno Accademico Corso di Tecnologie Web Web Application: JSP Universita degli Studi di Bologna - Facolta di Ingegneria Anno Accademico 2006-2007 Corso di Tecnologie Web Web Application: JSP http://www-lia.deis.unibo.it/courses/tecnologieweb0607/ Java Server Pages

Dettagli

Anno Accademico Corso di Tecnologie Web Web Application: JSP. JSP request processing

Anno Accademico Corso di Tecnologie Web Web Application: JSP. JSP request processing Universita degli Studi di Bologna - Facolta di Ingegneria Anno Accademico 2006-2007 Corso di Tecnologie Web Web Application: JSP http://www-lia.deis.unibo.it/courses/tecnologieweb0607/ Java Server Pages

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

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

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi Applicazioni web Parte 6 Java Alberto Ferrari 1 Sommario Introduzione alle API ed esempi Tomcat Server per applicazioni web Alberto Ferrari 2 Alberto Ferrari 1 Java: da applet a servlet In origine Java

Dettagli

Introduzione a JSF: Le basi in un esempio. Giulio Rossetti 20/09/2007

Introduzione a JSF: Le basi in un esempio. Giulio Rossetti 20/09/2007 Introduzione a JSF: Le basi in un esempio. Giulio Rossetti 20/09/2007 Introduzione: Java Server Faces è un framework, le cui specifiche sono rese disponibili dalla Sun, che permette di realizzare GUI in

Dettagli

NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) E N G I N E = I

NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) E N G I N E = I Esempio base: tabella amici Creare un sistema informatico che permetta di memorizzare il cognome, nome e data di nascita degli amici. Quindi creare una tabella per memorizzare i valori richiesti. Si chiede

Dettagli

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Introduzione Anno accademico 2017-2018 Paolo Perlasca Parte di questi lucidi è tratta da una versione precedente di Marco Mesiti, Stefano Valtolina, Daniele Riboni e Sergio

Dettagli

MyShopDB = MyShop + MySQL

MyShopDB = MyShop + MySQL MyShopDB = MyShop + MySQL Adattiamo l applicazione MyShop in modo da poter utilizzare un database come fonte di dati, invece dei soliti file testuali. I nuovi sorgenti si trovano nel file MyShopDB.zip

Dettagli

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Docente: Alberto Belussi Lezione 10 Architettura Model-View-Controller (MVC) L'architettura MVC può essere applicata anche alla tecnologia PHP secondo diversi approcci. In questa

Dettagli

MyShopDB = MyShop + MySQL

MyShopDB = MyShop + MySQL MyShopDB = MyShop + MySQL Adattiamo l applicazione MyShop in modo da poter utilizzare un database come fonte di dati, invece dei soliti file testuali. I nuovi sorgenti si trovano nel file MyShopDB.zip

Dettagli

1. (6 punti) Spiegare il significato, in modo dettagliato, del pezzo di codice seguente di una servlet:

1. (6 punti) Spiegare il significato, in modo dettagliato, del pezzo di codice seguente di una servlet: Università degli Studi di Camerino Corso di Laurea in Informatica A.A. 2015/2016 Prova Scritta di Programmazione Web, 21 Febbraio 2017 VIII Appello Docenti: Francesco Tiezzi e Luca Tesei Nome e Cognome:

Dettagli

HTML il linguaggio per creare le pagine per il web

HTML il linguaggio per creare le pagine per il web HTML il linguaggio per creare le pagine per il web Parte II: elementi "complessi" HTML: frame I frame servono per suddividere il browser in parti indipendenti all interno delle quali si possono caricare

Dettagli