Java Server Pages
Le Java Server Pages (JSP) furono presentate per la prima volta in o a-
sione diJava One del1998, una manifestazioneorganizzata dalla Sun a San
Fran is o per la presentazione delle innovazioni legate a Java. Inizialmente
passate quasi inosservate, oggi sono onsiderate da molti addetti ai lavori
ome una te nologia ompetitiva he parte iperà in maniera fondamentale
all'evoluzionedel Web.
Per un'appli azione web il livello presentazione è molto importante, in-
fattiè quello he onsenteall'utentedi fruireinmanierasempli e dell'appli-
azionestessa. Un'interfa iautente orrettamente ostruitasiadalpuntodi
vistafunzionale he logi opuòde retare ilsu esso diun'appli azione. Nelle
appli azioneweb l'interfa ia utente è ostituita daun browser.
Analizziamoquindiimotivi he hannospintoall'utilizzodelleJSPperla
realizzazionedi un interfa ia web perCONStanza.
5.1 Vantaggi delle JSP
JSPèunate nologiaperlarealizzazionedipagineHTMLdinami hedallato
server. Èuna evoluzionedelleservlet, unis equindi atuttele aratteristi he
di una normale servlet la possibilità di reare un'interfa ia web dinami a,
utilizzando le stesse te ni he usate nella s rittura di pagine web stati he.
Infattile pagine JSPsi presentano ome una ombinazione ditesto e tag.
LeJSP,basandosisuJava,assumonogliaspettipositividiquestolinguag-
gio, in parti olare la quasi totale portabilità del odi e. Questo porta un
notevole vantaggio perlo sviluppo di appli ativi lato server, infatti essendo
svin olati dal tipo di sistema operativo, non ne essitano di al una modi-
a, nemmeno nel passaggio tra server gestiti in maniera dierente (es. da
Windows a Unix).
La portabilità porta vantaggi an he dal lato liente, il linguaggio Java
vieneinterpretatodalserver, quindi nemmenoil lienteèvin olatoaltipodi
sistemaoperativoutilizzato,dato he èsu ienteavere un browser ingrado
diinterpretare il odi e HTML.
Un altro importante pregio è la possibilità di riuso del odi e, infatti
si possono in ludere nelle pagine delle omponenti di odi e (JavaBeans).
Si rende quindi più sempli e la realizzazione di appli azioni an he omples-
se, senza approfondite onos enze di Java, inoltre si rende più sempli e la
modi a ela manutenzione delle pagine stesse.
Oltre he attraverso i JavaBeans, le JSP permettono di utilizzare Ja-
va ome linguaggiodi s ript, inserendolo direttamente all'interno del odi e
HTML.
5.2 Funzionamento delle JSP
Una JSP è una omponente server-side, ioè he va in ese uzione sul la-
to server, è infatti ne essario un Web Container in grado di eseguirla, (ad
es. Tom at). La prima volta he un le JSP viene invo ato, sul lato ser-
ver, lapagina JSPviene tradottain una lasse Java,quindi viene ompilata
ottenendodel byte ode standard, ari atainmemoriaed inizializzata,ana-
logamente a quanto avviene per una omune servlet. Come onseguenza di
questo me anismo la prima volta he viene invo ato un le.jsp, il sistema
saràleggermentepiù lento,adogni modo, dopolaprima ri hiesta,laservlet
generata dalla traduzione e dalla ompilazione resta in memoria nello stato
diservizio perri evere egestire le ri hiestedel liente, riportandole presta-
zioni a livelli normali. La onversione e su essiva ompilazione avviene in
seguito,solamentenei asi in uiilsorgentedella paginahasubitomodi he
rispetto all'ultima onversione eettuatadal web ontainer.
5.3 Struttura
Una pagina JSP a prima vista non appare molto diversa da una normale
paginaHTML.Il sorgenteinfatti ontieneoltreaitag HTMLunaseriedidi-
rettive,di hiarazionie tag parti olari. I prin ipalielementi he ompongono
una paginaJSP sono:
• Direttive
• Informazionistati he
• Elementidi s ripting
Figura5.1: Elementidi una paginaJSP
• Azioni
5.3.1 Direttive
Servono a omuni are al ontainer JSP le informazioniglobali sulla pagina
e al une istruzioni he verrannoutilizzate infase di traduzione della pagina
JSPin lasse Java. Le direttive sono ra hiuse trai delimitatori:
``<%'' e ``%>''
Si hannotre direttive:
• page
supporta dierenti tipi di attributi, ad esempio è possibile spe i are
il linguaggiodi s riptingutilizzato
<%page language="java" %>
• taglib
Questa direttiva viene utilizzata per in ludere all'interno della pagina
della JSP. Si ompone di due attributi,uno per indi are il presso da
utilizzare per a edere ai tag ed un se ondo attributo he indi a la
lo alizzazionedel tag utilizzato.
Sipossonoutilizzaredellelibrerieditagstandardgiàpredenite,leJSP
StandardTag Library(JSTL) he fornis onolepiù omunifunzionalità
ome il ontrollo di usso ondizionale, le iterazioni, tag per ottenere
l'outputdeidati ed altro an ora.
Nell'esempio èmostratol'utilizzo deltag if della JSTL ore
<% taglib prefix=" "
uri="http://java.sun. o m/jsp/jstl/ ore" %>
.
< : if test="${statGet.debug==0} ">
<td>Off</td>
</ :if>
Oppure l'utente può denire delle proprielibrerie di tag e ri hiamarle
all'internodella paginaJSP, indi ando il dire toryin uisi trovano ed
ilpresso on uiutilizzarle
<% taglib prefix="vali"
tagdir="/WEB−I N F/tags/validation" %>
• in lude
Permettedi in ludere un le all'internodella paginaJSP
<% in lude file="prova.txt" %>
5.3.2 Informazioni stati he
Sonoil testo stati o,questo non viene elaboratodal JSP ontainer,si tratta
di odi e HTML stati o, infatti una pagina JSP è valida an he se ontiene
solo tag HTML e nessun altro elemento, naturalmente il risultato sarà la
sempli evisualizzazione diuna pagina stati a.
5.3.3 Elementi di s ripting
Sono porzioni di odi e, tipi amente Java, he vengono in luse all'interno
della paginaJSP. Ci sono tre dierenti tipidi elementidi s ripting:
• Di hiarazioni. Sono utilizzate per denire variabili e metodi appar-
<%! int ontatore=0; %>
• Espressioni. Sono ra hiuse tra i simboli <%= e %>. Vengono utilizzate per inviare in output il valore di una variabile o il risultato
di un'operazione o di un metodo. Infatti l'espressione Java ra hiusa
traidue simboli,vienevalutatadalmotoreJSP,ilrisultatoprodottoè
onvertito in stringa e la stringa inserita nel odi e HTML, nelpunto
stesso in ui omparival'espressione.
Ad esempio l'espressione he segue permette di ottenere in output il
risultatodel metodogetValore:
<%=mioOggetto.getValore() %>
Con l'espressione seguente si ottiene in output il valore della variabile
i:
<%=i %>
Inne quest'ultima espressione permette di visualizzare il risultato di
un'operazione di moltipli azione:
<%=i∗i %>
• S riptlet. Possono ontenereporzioniarbitrariedi odi eJava,delimi-
tate dai simboli<% %>. Nell'esempio presentato si usano les riptlet
perinserirel'istruzione ondizionaleif, insiemeall'utilizzodelle espres-
sioni si ottiene una pagina web dinami a he al ola il quadrato dei
primi 10numeri e mostrail risultato.
<html>
<head>
<title>
quadrati dei primi 10 numeri>
</title>
</head>
<body>
<% page language="java" %>
<% for (int i=0; i<11; i++) { %>
<%=i %> Al quadrato fa <%=i∗i %>
<% } %>
</body>
</html>
5.3.4 Azioni
Sono le omponenti di una pagina JSP direttamente oinvolte nell'elabora-
zione della ri hiesta, permettono infattidi a edere ai dati e dimanipolarli,
per generare i ontenuti dinami i. Possono essere di tipo standard, ovvero
giàdenitedallate nologiaJSP,oppure ustom,quandoèl'utenteadenirle
mediante le API fornite da JSP, generalmente sono raggruppate in librerie
ditag (importate attraverso la direttivataglib).
Tra le azioni standard una delle più importanti è la useBean. Questa
azionepermetteallapaginaJSPdiin ludereemanipolareoggettiJavaBean,
settando e re uperando leloroproprietà.
<html>
<head>
<jsp:useBean id="statGet" s ope="request"
lass="Lr s.Lr sGetStat" />
</head>
<body>
<jsp :setProperty n a m e="statGet" property="lr sad" />
<jsp :setProperty n a m e="statGet" property="debug"
value="1" />
.
.
iltag <jsp:useBean>èutilizzatoper reareun'istanzadiunJavaBean,
oppure per re uperarne una già esistente. L'attributo id è l'identi ativo
univo o hevieneassegnatoall'istanzadelJavaBean, lassidenti ala lasse
Java ( odi e ompilato) di appartenenza del Bean, deve oin idere on il
nome del le. lass senza estensione.
Attraverso s ope è possibile impostare la visibilità del JavaBean, sono
possibili iseguenti valori:
• page: il JavaBeanè a essibile soltanto all'internodella pagina.
• request: ilJavaBeanè a essibile n hè la ri hiestanon viene omple- tamenteelaborata e larisposta inviata al lient.
• session: il JavaBeanèa essibile pertutta la duratadella sessione.
• appli ation: il JavaBean èa essibile no a quando l'appli azioneweb non viene interrotta, in prati ano alloshutdown delserver.
Attraverso il tag <jsp:setProperty> si possono settare le proprietà
JavaBeandasettare. Se non vengonoindi ativalori,levariabili sonosettate
on i rispettivi valori passati attraverso la ri hiesta http, altrimenti si può
spe i are un valore attraverso l'attributo value
5.4 Utilizzo dei JavaBeans
I JavaBeans [19℄, sono lassi Java parti olari, vennero inizialmente pensati
per il rapido sviluppo di interfa e gra he. Oltre alla loro iniziale funzio-
nalità vengono appli ati in altri ambiti, tra ui la reazione di appli azioni
web. Comeabbiamovistoinpre edenzapossonoesserein lusiinunapagina
JSP, permettono quindi un in apsulamentodel odi e oltre aduna notevole
apa itàdi riuso.
Un JavaBean si distingue da una normale lasse Java per le seguenti
aratteristi he:
• Deveessere presenteun ostruttoredi default vuoto.
• Nondovrebbe avere variabilidi stato pubbli he.
• Pera edere eimpostarelevariabilisiutilizzanodeimetodipubbli iil
uinome deve essere ostituito dal presso get o set seguito dal nome
della proprietà.
pa kage Gr s.GetQuorum;
publi lass R sGetQuorum
{
private String address;
private int quorum;
publi R sGetQuorum()
{
}
//method to set address
publi void setAddress(String ad)
{
this.address = ad;
}
publi String getAddress()
{
return this .address;
}
//method to get quorum
publi int getQuorum()
{
return this .quorum;
}
.
.
5.4.1 Expression Language
Unabuonaregolanell'utilizzareleJSPèquellodimantenereseparatiillivello
logi odaquellogra o. Inquestomodosifa ilitanoeventuali aggiustamenti
futuri magari ad opera di sviluppatori dierenti. Inoltre separare l'aspetto
gra o daquello logi o permettedi poter sviluppare i due aspetti an he da
personeoteamdilavorodierentierendepiùsempli ieventuali ambiamenti
omiglioramenti.
Per avere quindi un odi e fa ile da mantenere, si er a di utilizzare le
JSPperlapresentazionedinami adeidati,mentreperl'elaborazionesi er a
di usare i JavaBeans, eliminando gli elementi di s ripting, ovvero il odi e
Java all'internodellapaginaJSP. Inquesto modoil odi e Java sitrovasolo
neiJavaBeans utilizzati.
Per Invo are i metodi deiJavaBeans senza ri orrere a elementi di s rip-
tingJavasipossonoutilizzarel'Expression Language(EL).Questoèstato
introdottinelleJSPdallaversione2.0epermettedisvolgeredierentifunzio-
ni,senzari orrere a odi eJavain orporatonella paginaJSP.Leespressioni
EL sono ra hiuse tra isimboli:
${...}
Pera edere alleproprietà diun JavaBean hesono a essibiliinlettura,
ovvero quelle proprietà per ui è presente il metodo getNomedellaProprie-
tà(), basta utilizzarel'identi ativodelJavaBeanseguito da. o[ ℄ ed il
nome dellaproprietà.
<html>
<jsp:useBean id="quorumGet" s ope="request"
lass="Gr s.GetQuorum.R sGetQuorum" />
</head>
<body>
<jsp:setProperty n a m e="quorumGet"
property="address" />
<table border=1>
<tr>
<th olspan=2 align= enter>
Get Quorum
</th>
</tr>
<tr>
<td>GRCS Server:</td>
<td>${quorumGet.address} </td>
</tr>
.
.
Nell'esempioattraversol'espressioneEL${quorumGet.address} sia -
ede allapropietàaddress delJavaBeanquorumGet.