JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo...

76
B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria 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

Transcript of JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo...

Page 1: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 1

B6_3 V1.10

JSP parte C

Applicazioni Internet B

Paolo Salvaneschi

Università di BergamoFacoltà di Ingegneria

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

Page 2: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 2B6 JSP Paolo Salvaneschi 2

• 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

INDICE

Page 3: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 3B6 JSP Paolo Salvaneschi 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

Page 4: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 4B6 JSP Paolo Salvaneschi 4

Utilizzo di JSTL

• Elementi di azione standard<jsp:

• Elementi di azione personalizzataSpecifica e ambiente di sviluppo per realizzare nuove azioni personalizzate (nuove tag library)

• JSTL (Java Standard Tag Library)Librerie predefinite di azioni

<c: Core

<x: Elaborazione XML

<fmt: Formattazione e internazionalizzazione

<sql: Accesso a database

Page 5: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 5B6 JSP Paolo Salvaneschi 5

Utilizzo di JSTL

Esempio

Index.htm

Risposta.jsp

Page 6: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 6B6 JSP Paolo Salvaneschi 6

<%@ page contentType="text/html" %><%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><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&nbsp;<c:out value="${param.nome}" /></H2></HR>

</c:when><c:otherwise>

<HR><H2>Utente non riconosciuto</H2></HR>

</c:otherwise></c:choose></body></html>

Risposta.jsp

linguaggio EL

Dichiarazione di una tag library

Utilizzo di un tag

Utilizzo di JSTL

Page 7: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 7B6 JSP Paolo Salvaneschi 7

Utilizzo di JSTL

• Installazione taglib jstl• Scaricare il distribution

jakarta-taglibs-standard-1.0.5.zipda http://jakarta.apache.org/taglibs

• Copiare i file dalla cartella lib alla cartella lib di Web-inf dell’applicazione

• Copiare i file dalla cartella tld alla cartella Web-infdell’applicazione

Page 8: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 8B6 JSP Paolo Salvaneschi 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

Page 9: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 9B6 JSP Paolo Salvaneschi 9

Utilizzo di JSTL

Page 10: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 10B6 JSP Paolo Salvaneschi 10

Utilizzo di JSTL

• Dichiarazione di una tag library<%@taglib prefix=“prefisso” uri=“taglibURI” %>• Dichiara una tag library utilizzata nella pagina che

contiene azioni personalizzate (o JSTL)

prefix prefisso da utilizzare nei nomi degli elementi di azione

uri stringa utilizzata per localizzarel’implementazione della tag library(es. nome simbolico definito nel file TLD della library)

Page 11: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 11B6 JSP Paolo Salvaneschi 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 email address” /></jsp:forward>

• Forma abbreviata <prefix:action_name attr1=“value1” attr2=“value2”/>

Page 12: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 12B6 JSP Paolo Salvaneschi 12

Utilizzo di JSTL

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

• La libreria JSTL core

Page 13: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 13B6 JSP Paolo Salvaneschi 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>

Page 14: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 14B6 JSP Paolo Salvaneschi 14

Utilizzo di JSTL

<c:when test=“espressione booleana”>Elementi JSP

</c:when>

<c:otherwise>Elementi JSP

</c:otherwise>

Page 15: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 15B6 JSP Paolo Salvaneschi 15

<c:choose><c:when test="${param.nome == 'Mario'}">

<HR><H2>Benvenuto&nbsp;<c:out value="${param.nome}" /></H2></HR>

</c:when><c:otherwise>

<HR><H2>Utente non riconosciuto</H2></HR>

</c:otherwise></c:choose>

paramVariabile EL implicita

Utilizzo di JSTL

Page 16: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 16B6 JSP Paolo Salvaneschi 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

Page 17: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 17B6 JSP Paolo Salvaneschi 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

elemento corrente della

collezione

collezione

Indice iniziale con base 0Default: 0

Indice finale con base 0 (incluso nell’iterazione). Default: ultimo elemento

Page 18: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 18B6 JSP Paolo Salvaneschi 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)

Page 19: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 19B6 JSP Paolo Salvaneschi 19

Utilizzo di JSTL

<c:forTokens items=“stringOfTokens”delims=“delimiters”[var=“var”][varStatus=“varStatus”][begin=“startIndex”][end=“stopIndex”][step=“increment”]>

Elementi JSP</c:forTokens >

Valuta il corpo una voltaper ciascun tokenpresente in una String, delimitato da un carattere specificato

Elenco dei delimitatori

I token su cui effettuare l’iterazione

elemento corrente

Page 20: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 20B6 JSP Paolo Salvaneschi 20

Utilizzo di JSTL

<%-- iterazione su token separati da barre verticali --%><c:forTokens items=“${tokens}” delims=“|”

var=“current”><c:out value=“${current}”/>

</c:forTokens>

Page 21: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 21B6 JSP Paolo Salvaneschi 21

<%@ page contentType="text/html" %><%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><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>

Utilizzo di JSTL

Page 22: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 22B6 JSP Paolo Salvaneschi 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)

Page 23: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 23B6 JSP Paolo Salvaneschi 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

Page 24: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 24B6 JSP Paolo Salvaneschi 24

Utilizzo di JSTL

<c:set> imposta una variabile di scope<c:set var= " name " value= " myname " scope= " session " />

<c:remove> rimuove una variabile di scope<c:remove var= " authenticationToken " scope= " session " />

<c:catch> intercetta un’eccezione lanciata da elementi JSP

Cfr.Passaggio dati tra pagine

Page 25: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 25B6 JSP Paolo Salvaneschi 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 JSTLNon delle azioni standard

<jsp:setProperty name="msg" property="category" value= "<%= request.getParameter('item') %>" />

Espressione java

Linguaggio EL

Page 26: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 26B6 JSP Paolo Salvaneschi 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}"/>

Page 27: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 27B6 JSP Paolo Salvaneschi 27

Utilizzo di JSTL

• Sintassi– Operatori: + - * / < ,>,&&,||,!,empty (var con

valore nullo o vuoto )……..– Variabili specifiche dell’applicazione– Variabili implicite previste da EL

Page 28: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 28B6 JSP Paolo Salvaneschi 28

Utilizzo di JSTL

• Variabili implicite previste da EL param

collezione di tutti i valori dei parametri della richiesta, un valoreString per parametro (java.util.Map)

paramValuesidem, array di String per ogni parametro (java.util.Map) (es. di uso con checkbox)

Page 29: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 29B6 JSP Paolo Salvaneschi 29

Utilizzo di JSTL

• Variabili implicite previste da EL pageScope, requestScope, sessionScope,applicationScopecollezione di tutte le variabili con scope a livello di pagina, richiesta,sessione, applicazione

pageContextFornisce l’accesso a vari dati relativi alla richiesta(es.pageContext.request.method)………………..

Page 30: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 30B6 JSP Paolo Salvaneschi 30

Gestione dell’input con JSTL

index.jsp

response.jsp

Esempio 1

Page 31: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 31B6 JSP Paolo Salvaneschi 31

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

Gestione dell’input con JSTL

Page 32: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 32B6 JSP Paolo Salvaneschi 32

<%@ page contentType="text/html" %><%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><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>

</table></body></html>

Gestione dell’input con JSTL

Per tutti gli elementi dell’array di String (da 0 a ultimo)

Page 33: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 33B6 JSP Paolo Salvaneschi 33

Gestione dell’input con JSTL

Esempio 2

Page 34: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 34B6 JSP Paolo Salvaneschi 34

<%@ page contentType="text/html" %><%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><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>

Gestione dell’input con JSTL

Page 35: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 35B6 JSP Paolo Salvaneschi 35

Gestione dell’input con JSTL

Validazione dell’input

Page 36: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 36B6 JSP Paolo Salvaneschi 36

<%@ page contentType="text/html" %><%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><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>

</c:if><tr><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)

Verifica se il valore della variabile è not null AND stringa vuota (" ")

Page 37: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 37B6 JSP Paolo Salvaneschi 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 iparametri sono validatisi può passare il controlload un’altra pagina affinchèelabori i parametri……

Page 38: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 38B6 JSP Paolo Salvaneschi 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

Page 39: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 39B6 JSP Paolo Salvaneschi 39

Passaggio del controllo tra pagine

http://localhost:8080/Es_controllo_1/index.jsp?nome=Mario&cognome=Rossi

Page 40: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 40B6 JSP Paolo Salvaneschi 40

Passaggio del controllo tra pagine

<%@ page contentType="text/html" %><%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><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>

<HTML><HEAD></HEAD><BODY>

<jsp:forward page="forwarded.jsp"/></BODY></HTML>

Page 41: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 41B6 JSP Paolo Salvaneschi 41

Passaggio del controllo tra pagine

http://localhost:8080/Es_controllo_1/index.jsp?nome=Mario&cognome=Rossi

indirizzo=Via Roma 4

Page 42: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 42B6 JSP Paolo Salvaneschi 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>

Page 43: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 43B6 JSP Paolo Salvaneschi 43

Passaggio del controllo tra pagine

<%@ page contentType="text/html" %><%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><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>

Page 44: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 44B6 JSP Paolo Salvaneschi 44

Passaggio del controllo tra pagine

index.jsp

forwarded.jsp

index.jsp

Page 45: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 45B6 JSP Paolo Salvaneschi 45

<%@ page contentType="text/html" %><%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><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(validazionedell’input)modificato

Nota: trasferisce il controllo dell’elaborazione della richiesta http. Il controllo non torna alla pagina di origine.

Page 46: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 46B6 JSP Paolo Salvaneschi 46

Model View Controller

Page 47: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 47B6 JSP Paolo Salvaneschi 47

Model View Controller

Gestione

Cliente

Formdi richiesta

index.htm

Pagina dirisposta valida

Pagina dirisposta

non validaaccetta.jsp rifiuta.jsp

Gestione.JSP

ClienteBeanModel

View

Controller

submit forwardforward

Bean access

Page 48: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 48B6 JSP Paolo Salvaneschi 48

• 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

Model View Controller

Page 49: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 49B6 JSP Paolo Salvaneschi 49

Model View Controller

Gestione

Cliente

Formdi richiesta

index.htm

Pagina dirisposta valida

Pagina dirisposta

non valida

accetta.jsp rifiuta.jsp

Gestione.JSP

ClienteBeanModel

View

Controller

Nota: nonostante sembri dalla forma non è una architettura a layer

Page 50: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 50B6 JSP Paolo Salvaneschi 50

Model View Controller

Formdi richiesta

<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><input type="submit" value="Invia"></FORM></BODY></HTML>

Page 51: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 51B6 JSP Paolo Salvaneschi 51

<%@ page contentType="text/html" %><%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><HTML><HEAD></HEAD><BODY><HR> <BR><H2><c:out value="${param.info}" /></H2></H1><HR></BODY></HTML>

Model View Controller

Pagina dirisposta valida

Pagina dirisposta

non valida

<HTML><HEAD></HEAD><BODY><HR><BR><H2> Richiesta non accettata</H2><BR><HR></BODY></HTML>

Page 52: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 52B6 JSP Paolo Salvaneschi 52

Model View Controller

Gestione

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><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>

Nota: non utilizza HTML

Page 53: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 53B6 JSP Paolo Salvaneschi 53

Importo dello sconto accordatoReadStringsconto

Stato: “Cliente non riconosciuto” , “Cliente riconosciuto”La lettura dello stato causa l’aggiornamento dello sconto

ReadStringstato

Tipo fornituraReadWrite

Stringtipo

Codice utenteReadWrite

Stringcodice

Cognome del clienteReadWrite

Stringcognome

Nome del clienteReadWrite

StringnomeClienteBeanDescrizioneAccessoTipoProprietàNome

Utilizzo di componenti JavaBean

Cliente

Page 54: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 54B6 JSP Paolo Salvaneschi 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;

//Costruttore che inizializza le strutture di datipublic ClienteBean() {

initCliente();}

Cliente

Page 55: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 55B6 JSP Paolo Salvaneschi 55

//Return stato e scontopublic String getStato() {

stato = "Cliente non riconosciuto";sconto = "-------";if ("Mario".equals(nome)) {stato = "Cliente riconosciuto";sconto = "20 %";}return stato;}

public String getSconto() {return sconto;}

//Inizializzaprivate void initCliente() {

nome = " ";cognome = " ";codice = " ";tipo = " ";stato = " ";sconto = "0 %";}}

Model View Controller

//Set dei parametri Clientepublic 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 clientepublic String getNome() {

return nome;}public String getCognome() {

return cognome;}public String getCodice() {

return codice;}public String getTipo() {

return tipo;}

Page 56: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 56B6 JSP Paolo Salvaneschi 56

• 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}" />

Model View Controller

Page 57: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 57B6 JSP Paolo Salvaneschi 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

Page 58: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 58B6 JSP Paolo Salvaneschi 58

Passaggio dei dati tra pagine - scope

Pagina 1

Scope di pagina

Scope di sessione

Scope di richiesta

Pagina 3Pagina 2 Pagina 4

Scope di pagina

inoltroinoltro

Scope di pagina Scope di pagina

Scope di richiesta

richiesta richiestarisposta risposta

Client

Page 59: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 59B6 JSP Paolo Salvaneschi 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}" />

Page 60: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 60B6 JSP Paolo Salvaneschi 60

Passaggio dei dati tra pagine - scope

Gestione

Cliente

Formdi richiesta

index.jsp Pagina dirisposta valida

accetta.jsp

gestione.JSP

clienteBeanModel

View

Controller

scope object Bean access

submit

forward forward

Page 61: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 61B6 JSP Paolo Salvaneschi 61

Passaggio dei dati tra pagine - scope

Page 62: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 62B6 JSP Paolo Salvaneschi 62

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><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

Formdi richiesta

NB

Page 63: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 63B6 JSP Paolo Salvaneschi 63

………

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

Passaggio dei dati tra pagine - scope

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

Page 64: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 64B6 JSP Paolo Salvaneschi 64

Passaggio dei dati tra pagine - scope

Pagina dirisposta valida Cliente

Come esempio precedente

Page 65: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 65B6 JSP Paolo Salvaneschi 65

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><jsp:useBean id="cliente" scope="request" 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="index.jsp"><jsp:param name="info" value="Cliente non riconosciuto"/></jsp:forward>

</c:otherwise></c:choose>

Passaggio dei dati tra pagine - scope

Gestione

Torna alla form di richiesta

Page 66: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 66B6 JSP Paolo Salvaneschi 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)

Page 67: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 67B6 JSP Paolo Salvaneschi 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

Page 68: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 68B6 JSP Paolo Salvaneschi 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)

Page 69: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 69B6 JSP Paolo Salvaneschi 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.

Page 70: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 70B6 JSP Paolo Salvaneschi 70

Passaggio dei dati tra pagine - scope

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><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>

Page 71: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 71B6 JSP Paolo Salvaneschi 71

<%@ page contentType="text/html" %><%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><jsp:useBean id="magazzino" scope="request" class="info.MagazzinoBean" /><HTML><HEAD></HEAD><BODY>

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

Passaggio dei dati tra pagine - scope

rispondi_ok

Accesso alla proprietà del bean con–notazione a punto attraverso EL–jsp:getProperty–Script (espressione)

Page 72: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 72B6 JSP Paolo Salvaneschi 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 SCRIPTINGche contenga il riferimento all'oggetto "magazzino".

L’azione <jsp:useBean... Al momento dell’esecuzione cerca un beancon 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 scriptinge rendere accessibili le variabili di scope allo script--%>

rispondi_ok

Page 73: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 73B6 JSP Paolo Salvaneschi 73

Passaggio dei dati tra pagine - scope

• Condivisione dei dati di sessione e applicazione

Ogni finestra dell’esempio è

associata ad una sessione

Page 74: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 74B6 JSP Paolo Salvaneschi 74

Passaggio dei dati tra pagine - scope

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><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

dell’applicazione web

Incrementato ad ogni attivazione da parte dello stesso browser

Page 75: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 75B6 JSP Paolo Salvaneschi 75

Passaggio dei dati tra pagine - scope

sessione

Page 76: JSP parte C -  · B6 JSP Paolo Salvaneschi 1 B6_3 V1.10 JSP parte C Applicazioni Internet B Paolo Salvaneschi Università di Bergamo Facoltà di Ingegneria Il contenuto del documento

B6 JSP Paolo Salvaneschi 76B6 JSP Paolo Salvaneschi 76

………………<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">

&nbsp;&nbsp;<b><c:out value="${c.name}" /></b>:<c:out value="${c.value}" /><br>

</c:forEach></ul>

</body></html>

Passaggio dei dati tra pagine - scope