JSP - Seconda parte
JSP - Seconda parte
Oggetto page
• L’oggetto page rappresenta l’istanza corrente della Servlet
• Ha come tipo l’interfaccia HTTPJspPage che discende da JSP page, la
quale a sua volta estende Servlet
• Può quindi essere utilizzato per accedere a tutti i metodi definiti nelle
Servlet
1
02/05/2017
Oggetto config
• Contiene la configurazione della Servlet (parametri di inizializzazione)
• Poco usato in pratica in quanto in generale nelle JSP sono poco usati i
parametri di inizializzazione
• Metodi di config:
• getInitParameterNames() restituisce tutti i nomi dei parametri di
inizializzazione
• getInitParameter(name) restituisce il valore del parametro passato per
nome
Oggetto request
• Rappresenta la richiesta alla pagina JSP
• È il parametro request passato al metodo service() della servlet
• Consente l’accesso a tutte le informazioni relative alla richiesta HTTP:
• indirizzo di provenienza, URL, headers, cookie, parametri, ecc.
2
02/05/2017
Oggetto response
• Oggetto legato all’I/O della pagina JSP
• Rappresenta la risposta che viene restituita al client
• Consente di inserire nella risposta diverse informazioni:
• content type ed encoding
• eventuali header di risposta
• cookie
Oggetto out
• Oggetto legato all’I/O della pagina JSP
• È uno stream di caratteri e rappresenta lo stream di output della pagina
• Esempio:
3
02/05/2017
Oggetto session
• Oggetto che fornisce informazioni sul contesto di esecuzione della JSP
• Rappresenta la sessione corrente per un utente
• L’attributo session della direttiva page deve essere true affinchè JSP
partecipi alla sessione
4
02/05/2017
Oggetto application
• Oggetto che fornisce informazioni su contesto di esecuzione della JSP (è
ServletContext)
• Rappresenta la Web application a cui JSP appartiene
• Consente di interagire con l’ambiente di esecuzione:
• fornisce la versione di JSP Container
• garantisce l’accesso a risorse server-side
• permette accesso ai parametri di inizializzazione relativi
all’applicazione
• consente di gestire gli attributi di un’applicazione
Oggetto pageContext
• Oggetto che fornisce informazioni sul contesto di esecuzione della pagina JSP
• Rappresenta l’insieme degli oggetti impliciti di una JSP
• Consente accesso a tutti gli oggetti impliciti e ai loro attributi
• Consente trasferimento del controllo ad altre pagine
• Utilizzando questo oggetto è possibile lavorare con gli attributi (e.g., find, get, set,
remove) in qualsiasi livello
1. JSP Page – Scope: PAGE_CONTEXT (default)
2. HTTP Request – Scope: REQUEST_CONTEXT
3. HTTP Session – Scope: SESSION_CONTEXT
4. Application Level – Scope: APPLICATION_CONTEXT
• Es:
<% pageContext.setAttribute(”role", “manager”, PageContext.SESSION_SCOPE); %>
<% pageContext.getAttribute("mail", PageContext.APPLICATION_SCOPE); %>
5
02/05/2017
Oggetto exception
• Oggetto connesso alla gestione degli errori
• Rappresenta l’eccezione che non viene gestita da nessun blocco catch
• Non è automaticamente disponibile in tutte le pagine ma solo nelle Error
Page (quelle dichiarate con l’attributo errorPage impostato a true)
• Esempio:
Azioni
• Le azioni sono comandi JSP tipicamente per l’interazione con altre pagine
JSP, Servlet, o componenti JavaBean; sono espresse usando sintassi XML
• Sono previsti 6 tipi di azioni definite dai seguenti tag:
• useBean: istanzia JavaBean e gli associa un identificativo
• getProperty: ritorna la property indicata come oggetto
• setProperty: imposta valore della property indicata per nome
• include: include nella JSP il contenuto generato dinamicamente da un’altra
pagina locale
• forward: cede il controllo ad un’altra JSP o Servlet
• plugin: genera contenuto per scaricare plug-in Java se necessario
6
02/05/2017
Azioni: forward
• Sintassi: <jsp:forward page="localURL" />
• Consente trasferimento del controllo dalla pagina JSP corrente ad
un’altra pagina sul server locale
• L’attributo page definisce l’URL della pagina a cui trasferire il controllo
• La request viene completamente trasferita in modo trasparente per il
client
Azioni: forward
• È possibile generare dinamicamente l’attributo page <jsp:forward
page=’<%="message"+statusCode+".html"%>’/>
• Oggetti request, response e session della pagina d’arrivo sono gli stessi
della pagina chiamante, ma viene istanziato un nuovo oggetto
pageContext
• Attenzione: forward è possibile soltanto se non è stato emesso alcun output
• È possibile aggiungere parametri all’oggetto request della pagina
chiamata utilizzando il tag <jsp:param>
7
02/05/2017
Azioni: include
• Sintassi: <jsp:include page="localURL" flush="true" />
• Consente di includere il contenuto generato dinamicamente da un’altra
pagina locale all’interno dell’output della pagina corrente
• Trasferisce temporaneamente controllo ad un’altra pagina
• L’attributo page definisce l’URL della pagina da includere
• L’attributo flush stabilisce se sul buffer della pagina corrente
debba essere eseguito il flush prima di effettuare l’inclusione
• Gli oggetti session e request (ma non response) per pagina da
includere sono gli stessi della pagina chiamante, ma viene istanziato
un nuovo contesto di pagina
8
02/05/2017
JavaBeans
• JavaBeans è il modello di “base” per componenti Java, il più semplice…
• Un JavaBean, o semplicemente bean, non è altro che una classe Java dotata
di alcune caratteristiche particolari:
• Classe public
• Ha un costruttore public di default (senza argomenti)
• Espone proprietà, sotto forma di coppie di metodi di accesso (accessors) costruiti
secondo una convenzione standard per i nomi dei metodi (get... set...)
• La proprietà prop è definita da due metodi getProp() e setProp()
• Il tipo del parametro di setProp(…) e del valore di ritorno di … getProp() devono
essere uguali e rappresentano il tipo della proprietà (può essere un tipo primitivo o
una qualunque classe Java)
• Es.: void setLength(int value) e int getLength() identificano proprietò length di tipo int
9
02/05/2017
JavaBeans (2)
• Se definiamo solo il metodo get avremo una proprietà in sola lettura (read-
only)
• Le proprietà di tipo boolean seguono una regola leggermente diversa: metodo
di lettura ha la forma isProp()
• Es: la proprietà empty sarà rappresentata dalla coppia void
setEmpty(boolean value) e boolean isEmpty()
• Ci sono anche proprietà indicizzate per rappresentare collezioni di valori
• Es: String getItem(int index) e setItem(int Index, String value) definiscono la
proprietà indicizzata String item[]
• Espone eventi con metodi di registrazione che seguono regole precise
• Es. listener, lancio di eventi
Esempio
• Creiamo un bean che espone due proprietà in sola lettura (ore e minuti)
e ci dà l’ora corrente
10
02/05/2017
JSP e JavaBean
• JSP prevedono una serie di tag per agganciare un bean e utilizzare le
sue proprietà all’interno della pagina
• Tre tipi:
• Tag per creare un riferimento al bean (creazione di un’istanza)
• Tag per impostare il valore delle proprietà del bean
• Tag per leggere il valore delle proprietà del bean e inserirlo nel flusso
della pagina
11
02/05/2017
Tag jsp:useBean
• Sintassi: <jsp:useBean id="beanName" class="class“
scope="page|request|session|application"/>
• Inizializza e crea il riferimento al bean
• Gli attributi principali sono:
• id è il nome con cui l’istanza del bean verrà indicata nel resto della pagina
• class è classe Java che definisce il bean
• scope definisce ambito di accessibilità e tempo di vita dell’oggetto (default
= page)
Tag jsp:getProperty
• Sintassi:<jsp:getProperty name="beanName" property="propName"/>
• Consente l’accesso alle proprietà del bean
• Produce come output il valore della proprietà del bean
• Il tag non ha mai body e ha solo 2 attributi:
• name: nome del bean a cui si fa riferimento
• property: nome della proprietà di cui si vuole leggere il valore
12
02/05/2017
Tag jsp:setProperty
• Sintassi: <jsp:setProperty name="beanName" property="propName“
value="propValue"/>
• Consente di modificare il valore delle proprietà del bean
• Esempio:
13
02/05/2017
Proprietà indicizzate
• I tag per JavaBean non supportano proprietà indicizzate
• Però un bean è un normale oggetto Java: è quindi possibile accedere a
variabili e metodi
• Esempio:
14