19
1 Titolo Presentazione / Data / Confidenziale / Elaborazio ne di ... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

Embed Size (px)

Citation preview

Page 1: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

1Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

Corso Java/J2EE JSPElaborazione di Franco Grivet Chin

Page 2: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

2Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

1 – JSP introduzione

• Una pagina JSP e un documento testuale composta da dati template statici e da elementi JSP che creano dinamicamente i contenuti

• Nel design pattern MVC (Model View Controller) le JSP ricoprono il ruolo di view (viste)

• La pagina JSP viene tradotta nella equivalente Servlet e poi compilata (non viene interpretata)

• Gli elementi JSP e il codice Java sono racchiusi fra degli speciali delimitatori <% e %>

• JSP 1.0 uso di scriplet (blocchi di codici java) e java beans, JSP 2.0 uso di tag libraries e Expression Language

Page 3: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

3Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

2 Ciclo di vita delle JSP

La Jsp viene completamente tradotta in una classe che estende HttpServlet

La servlet così generata viene compilata

La servlet generata viene instanziata e segue lo stesso ciclo di vita della servlet

Le servlet JSP vengono inizializzate con il metodo jspInit e rimosse con jspDestroy (definiti nell’interfaccia javax.servlet.jsp)

Le JSp eseguono i loro compiti tramite il metodo _jspService

Page 4: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

4Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

3 Elementi delle pagine JSP

Elementi JSP istruzioni per il container JSP che indicano quale codice generare

Tre tipi fondamentali di elementi JSP

• Elementi script• Espressioni <%= …. %>

• scriplet <% ….%>

• dichiarazioni) <%! ……%>

• Direttive <%@diretttiva attributo=“valore”...%>

• Azioni <jsp:azione attributo=“valore” />

Page 5: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

5Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

3 Elementi di script

Definiscono codice di script contenuto direttamente nella pagina JSP

Tre tipi di elementi: dichiarazioni, espressioni e scriplet

Dichiarazione<%! ….. %> il codice (java) viene inserito nel body della servlet generata fuori dal metodo service. Posso anche inserire un metodo

Espressione <%= ….. %> l’espressione è valutata e messa in output (variabili che voglio stampare a video)

Scriplet <% ….. %> il codice (java) viene inserito nel metodo service della servlet

Commenti

<%-- commento--%>

Oggetti predefiniti: sia nelle espressioni che negli scriplet sono già disponibili un insieme di oggetti predefiniti disponibili generati dinamicamente nel processo di traduzione (request, response, out, session, application)

Page 6: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

6Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

3 Jsp : direttive

DIRETTIVE: forniscono informazioni al container JSP che vengono elaborate durante la fase di traduzione da JSP a Servlet

Forma generale

<%@ nome-direttiva [attributo=“valore” attributo=“valore”..]%>

Direttiva page

• Specifica gli attributi della pagina JSP

• <%@page [attributo=“valore” attributo=“valore”..]%>

• Attributi comunemente usati

• Info,import,contentType, pageEncoding,language,isScriptingEnabled(true/false), extends, session (true /false), buffer (buffer di output), autoflush (true o false), isThreadSafe (true o false), isErrorPage (true o false), errorPage(URL)

Page 7: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

7Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

3 JSP: Esempi di direttive

Import:<%@page import=“java.io.*,java.text.*,java.util.*”%>

Sessione:Di default la sessione è attiva in ogni pagina JSP<%@page session=“false”%>

Inclusione:Per inserire contenuti di altre pagine direttamente nell’output della pagina corrente. Viene processata durante la traduzione (testo incluso nella pagina)<%@ include file=“urlrelativo”%>Si può utilizzare anche l’azione jsp:include con l’attributo page, nel qual caso viene processato durante l’esecuzione (request mandata al file incluso se dinamica e risultato incluso nella response) <jsp: include page=“urlrelativo”/>

Page 8: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

8Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

3 JSP: Esempi di direttive

Inclusione di librerie di tag:dichiara le librerie di marcatori usate nella pagina, composte da un file XML(TLD),descrittore della libreria di marcatori, e dai vari file di marcatori e/o classi Java che implementano le azioni dei marcatori <%@ taglib (uri=“tagLibraryURI” ! Tagdir=“tagDir”) prefix=“tagPrefix”%>Esempio<%@ taglib uri=“http://web3Dweb.com/tags” prefix=“web3Dweb”%><web3Dweb:fetchMediaFile>Lord of the rings </web3Dweb:fetchMediaFile>Esistono librerie predefinite come JSLT

Page 9: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

9Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

3 JSP:azioni

Le azioni sono elementi JSP che possono essere utilizzati all’interno di una pagina per effettuare delle operazioni su oggetti impliciti e non

Sintassi xml-like<marcatore attributo1=“val”….>body </marcatore>oppure <marcatore attributo1=“val”…./>

ESEMPIO

<jsp:include page=“url” flush=“true/false”>

<jsp:forward page=“url”>

<jsp:param nome=“paramName” value=“paramValue”> (utilizzata solo nelle azioni include, forward)

Page 10: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

10Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

3 Traduzione da JSP a Servlet

Durante la traduzione da JSP a Servlet i vari elementi sono tradotti in modo differente- le parti statiche (HTML) sono inserite nel metodo _jspService come delle out.println(..html..)- gli scriplet e le espressioni sono inseriti nella classe servlet generata nel metodo _jspService - le dichiarazioni sono inseriti nella classe servlet generata fuori dall metodo _jspService - le direttive sono usate per controllare come il container traduce ed esegue la pagina JSP e possono essere inserite in vari punti

- jsp[include/forward] sono tradotte in chiamate alle API servlet (RequestDispatcher)- tag personalizzati sono sono tradotti in chiamate per il gestore di tag

Page 11: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

11Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

3 Traduzione da JSP a Servlet

Se si verifica un errore durante la traduzione o la compilazione viene generata una JasperException e un messaggio con la pagina JSP che ha generato l’errore e la linea dell’errore

Dopo che la pagina è stata tradotta e compilata la servlet generata segue il ciclo di vita delle servlet-se non esiste un’istanza della servlet il containera)carica la classe della servletb)Instanzia un’istanza della classe servletc) Inizializza la servlet chiamando il metodo jspInit- Il container chiama il metodo _jspService passando gli oggetti request e response- se il container deve rimuovere la servlet chiama il metodo jspDestroy

Page 12: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

12Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

Expression Language

Una nuova caratteristica di JSP 2.0 è il supporto per un Expression Language (EL) che permette di accedere facilmente ai dati di un JavaBeans${name} stampa il valore della variabile name dall’ambito più basso al più alto

Esiste un interprete di JSP Expression

Gli EL possono essere usati nel testo statico o combinati con i tag standard o personalizzati<c:if test=“${bean1.a<3}”>…</c:if>

Ricerca degli attributi:una variabile che appare in un’espressione (es. ${prodotto}) viene cercata nello scope di pagina, request, sessione e applicazione e ne restituisce il valore. Se la variabile non viene trovata viene restituito null

Page 13: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

13Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

6 Expression Language

Le expression language possono accedere a oggetti impliciti- pageContext: contesto della pagina JSP che permette di accedere a

-servletContext-session-request-response

Altri oggetti impliciti sono:-param: per assegnare un parametro della request a un valore-paramValues: per assegnare un parametro della request a un array di valori-cookie: recuperare un cookie-initParam: per assegnare un parametro dell’inizializzazione del contesto a un valoreOggetti per accedere aa attributi di scope specifico:-pageScope,requestScope,sessionScope,applicationScope<%= request.getParameter(“nome”)%> ${param.nome}

Page 14: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

14Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

6 Expression language

Page 15: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

15Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

6 Expression language

Page 16: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

16Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

Tag Libraries:JSTL

Java Server Pages Standard Tag Libraries

Permette di utilizzare un insieme standard di TAG (non tag html ma in fase di traduzione vengono trasformati in codice java)

JSTL contiene tag iteratori e condizionali,tag per manipolare XML, tag per internazionalizzazione,tag per accedere a database con SQL e tag per funzioni

Per utilizzare la JSTL occorre utilizzare la direttiva taglib<%@ taglib uri="http://java.sun.com/jsp/jstl/core“ prefix="c" %> nella pagine jsp

L’attributo prefix è legato al tipo di funzioni da utilizzare

Page 17: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

17Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

6 JSTL

Page 18: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

18Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

6 JSTL

Page 19: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Corso Java/J2EE JSP Elaborazione di Franco Grivet Chin

19Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

www.consorzioformaweb.it