3 ebook a un prezzo eccezionale! 🚣‍♀️

Solo per un weekend: da venerdì 19 a lunedì 22 aprile.

Approfitta dell'offerta
Home
Javabeans – Visibilità

31 Ottobre 2002

Javabeans – Visibilità

di

Dopo aver visto quali sono le specifiche per la produzione di Javabeans analizziamo una qualità che li rende unici, la possibilità di definire visibilità differenti a seconda delle esigenze

Abbiamo già parlato di Javabens, si tratta di particolari classi Java scritte seguendo la specifica delle API Javabeans.
Un bean, come si diceva, è un’istanza di una classe Java serializzabile. Le sue proprietà non sono accessibili direttamente a chi utilizza il bean, ma il consumatore è obbligato ad utilizzare metodi di accesso in lettura e scrittura alle proprietà stesse. I nomi dei metodi sono standard e questo permette compatibilità con ambienti di sviluppo di tipo visuale.

Si è detto anche che per istanziare un bean all’interno di una pagina JSP è preferibile utilizzare la seguente sintassi:

id=”nomebean”
class=”package.Classe”
scope=[page|request|session|application]
/>

/

Oggi analizzeremo, in particolare, lo scope del bean, cioè la sua visibilità all’interno del contesto dell’applicazione web.
Lo scope rappresenta la persistenza dell’oggetto ed indica in quali contesti l’oggetto stesso deve esse mantenuto in vita. Quanto il contesto si esaurisce tutti gli oggetti che hanno uno scope limitato al contesto stesso vengono persi e riciclati dal garbage collector.

Vediamo quindi le differenti tipologie di visibilità.

Bean con scope = “page”

Quando un bean ha lo scope settato su “page” la sua visibilità è limitata alla pagina che ha creato l’istanza della classe.
L’utilizzo tipico di questo scope è istanziare oggetti che non devono essere condivisi con altri elementi dell’applicazione. Si usa ad esempio per istanziare componenti che accedono a database, che fanno formattazioni di dati, che utilizzano oggetto locali della pagina.

Bean con scope = “request”

Quando un bean ha lo scope settato su “request” può essere utilizzato in maniera automatica per leggere i dati inviati nella request HTTP.
Quando si ha una pagina JSP che invia i dati di un form ad una pagina di destinazione, e quindi lo fa attraverso la request, la pagina destinataria può leggere questi dati semplicemente istanziando un bean la cui struttura sia conforme a quella dei dati che riceve.
In particolare è sufficiente utilizzare la sintassi:



/

per fare in modo che tutte le proprietà del Bean vengano automaticamente riempite utilizzando i valori presenti nella request.

Bean con scope = session

Quando un bean ha lo scope settato su “session” la sua persistenza è valida per tutta la sessione.
L’esempio tipico di utilizzo di un bean dotato di questa visibilità è la memorizzazione del profilo dell’utente.
Se l’utente accede all’applicazione web attraverso una pagina di login e quindi riceve un profilo, questo profilo potrà essere memorizzato all’interno di un bean con scope = “session” per fare in modo che le informazioni di profilo vengano rese disponibili in tutto il percorso di navigazione dell’utente.
In questo modo non sarà l’applicazione a dover gestire manualmente i dati di profilatura dell’utente, sarà sufficiente scriverli nel bean subito dopo le operazioni di login ed accedere al bean stesso per averli a disposizione.
C’è da dire che nel momento in cui la sessione fosse eliminata (ad esempio attraverso l’utilizzo del metodo invalidate();) anche il bean perderebbe la sua persistenza e di conseguenza sarebbe distrutto.

Bean con scope = application

Quando un bean ha lo scope settato su “application” la sua visibilità è trasversale a tutta l’applicazione, qualsiasi sia la sessione corrente, qualsiasi sia la pagina visualizzata e qualsiasi sia il contenuto della request.
Un bean con queste caratteristiche viene utilizzato per esempio per gestire i contatori di visite delle applicazioni.
Tutti gli utenti condividono lo stesso bean, pertanto è possibile utilizzarlo anche per passare informazioni tra una sessione e l’altra.

Conclusioni

Come si è visto i Javabeans hanno caratteristiche davvero interessanti ed il loro utilizzo, soprattutto nel contesto delle applicazioni web, permette di gestire al meglio alcune tipologie di informazioni senza doversi manualmente appoggiare a database e codice dedicato.

L'autore

  • Massimo Canducci
    Massimo Canducci vanta oltre 25 anni di esperienza nel campo dell'innovazione e della digital transformation ed è Chief Innovation Officer per Engineering Ingegneria Informatica. È docente alla Singularity University, l'Università di Torino e l'Università di Pavia, e insegna in master MBA.

Iscriviti alla newsletter

Novità, promozioni e approfondimenti per imparare sempre qualcosa di nuovo

Gli argomenti che mi interessano:
Iscrivendomi dichiaro di aver preso visione dell’Informativa fornita ai sensi dell'art. 13 e 14 del Regolamento Europeo EU 679/2016.