Cap3 Tehnol Java
Cap3 Tehnol Java
30
ce a emis cererea, sau poate s@ se bazeze pe data sau
timpul cererii.
Forma exact@ a r@spunsului va fi func]ie de unul sau mai
mul]i dintre ace}ti factori.
31
%n timp ce servlet-urile pot fi folosite s@ extind@
func]ionalitatea oric@rui server cu suport Java, cel mai
adesea tind s@ ^mbun@t@]easc@ serverele web,
dovedindu-se un ^nlocuitor puternic }i eficient pentru
scripturile CGI. Atunci c$nd este folosit un servlet pentru a
crea dinamic con]inutul unui pagini web sau pentru a extinde
func]ionalitatea unui server, de fapt este creat@ o aplica]ie
web. O pagin@ web afi}eaz@ con]inut static. O aplica]ie
web ofera mai mult@ interactivitate. Ea poate fi at$t foarte
simpl@, ^n genul unui motor de c@utare ^ntr-un document,
c$t }i complex@, cum ar fi un magazin virtual.
Aplica]iile web se de}f@}oar@ pe Internet, sau ^n
intranet-urile }i extranet-urile unor corpora]ii, unde au
posibilitatea s@ creasc@ productivitatea }i s@ modifice
modul ^n care companiile, mici sau mari, fac afaceri.
Pentru a ^n]elege puterea tehnologiilor Java, este necesar
s@ avem o privire de ansamblu asupra altor modalit@]i care
pot fi folosite pentru a crea aplica]ii web.
32
poate fi necesar pentru generarea unui r@spuns. Crearea
unui proces pentru fiecare astfel de cerere solicit@ timp }i
resurse semnificative din partea serverului, ceea ce
limiteaz@ num@rul de cereri pe care un server le poate
trata concuren]ial. %n cazul unui server care are de f@cut
fa]@ la c$teva mii de solicit@ri concomitent (lucru comun
ast@zi pe web) este evident c@ aceast@ modalitate CGI nu
ar fi deloc viabil@.
Figura de mai jos ilustreaz@ ciclul de via]@ CGI. Se
observ@ c@ dou@ cereri pentru acela}i program CGI
genereaz@ doua procese, deoarece orice program CGI se
^ncheie odat@ ce a ^naintat outputul pentru o cerere.
33
FastCGI
34
necesar@. Ca un rezultat, multe dintre cele mai populare
sisteme de con]inut dinamic, permit con]inutului dinamic s@
fie referit prin limbaje de script. Aceast@ alegere este cea
mai potrivit@ ^n acest caz deoarece dezvoltatorii web sunt
obi}nui]i cu schimb@ri rapide atunci c$nd testeaz@ paginile
web: atunci c$nd HTML-ul dintr-o pagin@ static@ a fost
modificat, efectul schimb@rii poate fi vizualizat
^ntr-un browser web. Utilizarea limbajelor de script care nu
necesit@ un ciclu ^ndelungat de editare-compilare-legare
pentru a putea rula codul, permite acestor sisteme de
con]inut dinamic s@ ofere un feedback rapid.
Scripturile pot fi introduse direct ^n paginle web.
Elementele statice ale paginii, ce precizeaz@ forma }i
aranjamentul ^n pagin@, pot s@ fie exprimate ^n HTML ca
de obicei. Atunci c$nd documentul este solicitat de un
utilizator, serverul web va trimite elementele HTML statice,
neschimbate. %n schimb, scripturile vor fi executate }i
transformate ^n con]inut dinamic, aceste rezultate fiind
plasate ^n pagin@ ^n locul codului surs@ script original.
Deoarece elementele statice de HTML constituie cadrul ^n
care con]inutul dinamic generat de scripturi va fi plasat,
aceste sisteme sunt ^n mod obi}nuit numite sisteme
template.
Principala diferen]@ ^ntre sistemurile template const@
^n limbajul de script }i ^n capacit@]ile aferente acestuia.
ColdFusion
35
Active Server Pages
Server-Side JavaScript
36
Fig. 3.2.3 Extensii API ale serverelor web
PHP
37
Server Pages. Vom prezenta ^n continuare, detaliat, aceste
tehnologii Java.
38
web. Probabil, servlet-urile Java ofer@ cea mai bun@ solu]ie
pentru dezvoltarea de aplica]ii web.
Chiar dac@ servlet-urile sunt cel mai adesea folosite ca
^nlocuitori pentru CGI pe serverele web, ele pot extinde
orice gen de server, cum ar fi un server FTP, un server de
mail, etc.
Analog cu modul ^n care au introdus applet-urile ca
aplica]ii
Java pentru a spori interactivitatea browser-elor web, Sun au
introdus servlet-urile drept mici aplica]ii Java care adaug@ o
func]ionalitate dinamic@ serverelor.
Spre deosebire de programarea CGI tradi]ional@ care
necesit@ generarea unui nou proces pentru a trata fiecare
cerere, toate servlet-urile asociate unui server web ruleaz@
^n cadrul unui singur proces. Acest proces execut@
ma}ina virtual@ Java, care creaz@ un fir de execu]ie pentru
fiecare cerere. Firele de execu]ie nu necesit@ at$tea resurse
ca procesele de sine st@t@toare, }i se execut@ ^n cadrul
memoriei deja alocate de JVM, f@c$nd execu]ia servlet-urilor
mult mai eficient@ dec$t procesarea CGI. Cum JVM
persist@ }i dup@ terminarea satisfacerii unei cereri, servlet-
urile pot s@ evite multe opera]ii consumatoare de timp, cum
ar fi conectarea la o baz@ de date, prin partajarea resurselor
^ntre solicitan]i.
Deoarece sunt scrise ^n Java, servlet-urile beneficiaz@ de
toate atuurile platformei Java: un model de programare
orientat obiect, management automat al memoriei,
portabilitate, acces la o colec]ie numeroas@ de API-uri
(pentru acces la baze de date, la resurse din re]ea, la
directoarele serverului). Reduse la esen]a lor, servlet-urile
asigur@ o metodologie Java pentru maparea cererilor HTTP
la r@spunsuri HTTP. Generarea dinamic@ a con]inutului
paginii web este realizat@ de c@tre codul Java care
returneaz@ HTML. %n cazul datelor HTML un mod de
abordare pentru realizarea acestui deziderarat, este
construirea unui string ce va con]ine textul HTML potrivit }i
apoi scrierea acestui string ^n stream-ul de output asociat
r@spunsului HTTP.
39
O alt@ modalitate este o modelare orientat@ obiect a
datelor ce vor constitui r@spunsul, construindu-se mai ^nt$i
un model al paginii drept o colec]ie de obiecte Java. Astfel,
multe pagini web pot fi privite ca o ierarhie de elemente
textuale, printre care titluri, diverse niveluri de subtitluri,
paragrafe, ce con]in informa]ia pentru fiecare sec]iune. Pot fi
construite clase Java care s@ reprezinte at$t aceste
elemente, c$t }i pagina ^n sine.
40
va fi creat@, la care vor fi apoi ad@ugate instan]e
corespunz@toare elementelor textuale.
Figura de mai sus exemplific@ modul de tratare a
cererilor de c@tre servlet-uri.
Unul dintre avantajele cheie ale abord@rii orientate obiect
este faptul c@ se pot suporta multiple forme de output
pentru document, de exemplu HTML }i XML.
Pe de alt@ parte, dezavantajul acestei modalit@]i este c@
toate p@r]ile din document, at$t statice c$t }i dinamice,
sunt reflectate ^n codul surs@. Aceasta ^nseamn@ c@
orice modificare a documentului necesit@ interven]ia unui
programator. Un web designer nu ar putea schimba formatul
paginii, f@r@ s@ schimbe codul surs@ asociat.
Portabilitate
Putere
Servlet-urile pot s@ valorifice ^ntreaga for]@ a API-urilor
Java: acces re]ea }i URL, fire de execu]ie multiple,
manipularea de imagini, compresia de date, conectare la
baze de date, interna]ionalizare, RMI (remote method
invocation), serializarea obiectelor. Astfel se poate scrie
foarte u}or o aplica]ie care s@ permit@ angaja]ilor s@
efectueze cereri de reg@sire pe o baz@ de date mo}tenit@,
sau o aplica]ie web care s@ exploreze directoare. De
asemenea, servlet-urile se pot folosi ^mpreun@ cu clase
Java }i componente JavaBeans scrise de ter]i pentru a realiza
sarcini precum c@ut@ri de expresii regulate sau prezentarea
datelor prin grafice.
Servlet-urile sunt potrivite }i pentru comunicarea
client/server.
41
Eficien]@ }i durat@
Siguran]@
Servlet-urile suport@ un num@r de nivele la care se
asigur@ siguran]a ^n programare. Deoarece sunt scrise ^n
Java, servlet-urile mo}tenesc tipizarea strict@ a limbajului
Java. %n plus, API-ul Servlet este implementat astfel ^nc$t
s@ fie “type-safe”. %n timp ce cele mai multe valori dintr-un
program CGI, inclusiv numerice, cum ar fi num@rul unui
port, sunt tratate drept stringuri, valorile manipulate de API-
ul Servlet folosesc tipul lor nativ. Colectorul de reziduuri Java
}i lipsa pointerilor ^nseamn@ c@ servlet-urile sunt ^n
general imune la problemele de management al memoriei.
Servlet-urile pot s@ trateze ^ntr-un mod sigur erorile,
datorit@ mecanismului Java de tratare a excep]iilor. Astfel
dac@ un servlet realizeaz@ o ^mp@r]ire la zero, va arunca
o excep]ie care poate fi interceptat@ }i rezolvat@ de server,
care va jurnaliza eroarea }i va cere scuze utilizatorului
printr-un mesaj adecvat. Dac@ o extensie de server bazat@
42
pe C++ ar face aceea}i gre}eal@ ar exista posibiltatea
bloc@rii serverului.
Mai mult, un server se poate proteja de poten]iale erori
ale unui servlet printr-un manager de securitate Java. Astfel,
toate servlet-urile se vor executa sub o monotorizare strict@
a managerului de securitate, care de exemplu poate impune
o politic@ de securitate proiectat@ s@ previn@ afectarea
serverului de c@tre servlet-uri prost scrise sau r@u-
inten]ionate.
Elegan]@
Integrare
Extensibilitate }i flexibilitate
43
ca suportul pentru servlet-uri HTTP s@ fie ^n continuare
^mbun@t@]it.
Servlet-urile sunt de asemenea destul de flexibile. Un
servlet HTTP poate fi folosit pentru a genera complet o
pagin@ web, poate fi ad@ugat la o pagin@ static@ folosind
tagul <SERVLET>, poate fi folosit ^n cooperare cu alte
servlet-uri pentru a filtra con]inutul (lan] de servlet-uri).
44
Din p@cate, codul program este scump de creat }i men]inut,
a}a c@ minimizarea nevoii de programare este un obiectiv
important. Combin$nd acest obiectiv cu obiectivul Sun
pentru un suport robust, cu capacit@]i complete pentru
servere, a rezultat un sistem template bazat pe Java, anume
JSP.
JSP constituie un hibrid ^n cadrul sistemelot template,
deoarece suport@ dou@ stiluri diferite de ad@ugare a
con]inutului dinamic la paginile web. La fel ca ASP, SSJS }i
PHP, ^n paginile JSP pot fi incluse scripturi care s@
con]in@ cod surs@. Pentru JSP, acest cod surs@ este de
obicei Java, dar poate fi aproape orice alt limbaj de script.
Asem@n@tor cu ColdFusion, JSP suport@ un set de
taguri care arat@ ca cele HTML }i care interac]ioneaz@
cu obiectele Java de pe server, f@r@ a fi nevoie s@ apar@
^n pagin@ cod Java brut.
Mai mult, dezvoltatorii au posibilitatea s@-}i creeze o
bibliotec@ de taguri personalizate care pot fi ^nc@rcate
^n pagini JSP, prin intermediul unui mecanism de extindere
a tagurilor. Aceste taguri personalizate pot fi folosite ^n
pagina JSP similar cu cele standard.
Tehnologiile sevlet }i JSP au ap@rut mai ^nt$i ca o parte
a Java Web Server de la Sun (un server HTTP scris ^n Java).
Apoi Java a publicat tehnologia servlet ca o extensie Java
standard. Cur$nd a urmat }i specifica]ia pentru JSP, anume
^n iunie 1999 a ap@rut JavaServer Pages 1.0 Specification.
Odat@ ce au existat aceste baze, alte companii au putut s@
adauge suport pentru arhitecura servlet produselor lor, }i
cum func]ionalitatea JSP ^n sine este implementat@ folosind
tehnologia servlet, o mul]ime de produse ter]e s-au
dezvoltat, cresc$nd popularitatea tehnologiilor.
%n plus, ^n iunie 1999 Sun MicroSystems }i funda]ia
Apache Software au anun]at proiectul Jakarta, al c@rui scop
este o implementare Open Source a servlet-urilor }i a JSP-
ului, urm$nd s@ rezulte o platform@ de referin]@.
JSP are condi]iile s@ joace un rol major ^n evolu]ia
tehnologiilor web.
%n figura de mai jos eviden]iem locul tehnologiei JSP ^n
cadrul unui server web.
45
Fig. 3.4.1 Rolul tehnologiei JSP ^n cadrul unui server
46
^nlocuirea unei astfel de componente, toate paginile JSP }i
clasele Java asociate pot migra a}a cum sunt.
%n plus, deoarece permite accesul complet la elementele
esen]iale ale platformei Java, JSP poate profita de celelalte
API-uri Java standard pentru acces la date de baze diferite,
programare distribuit@ sau criptografie.
Aceast@ calitate de a putea lucra cu o gam@ larg@ de
surse de date, resurse de sistem }i servicii de re]ea
^nseamn@ c@ JSP constituie o solu]ie flexibil@ pentru
crearea unor aplica]ii web cu facilit@]i bogate.
JSP ^n sine ofer@ un num@r de avantaje. Printre
aceste se num@r@ ^mbun@t@]irea performan]ei fa]@ de
CGI }i propunerea unui paradigme de programare care pune
accentul pe un model al aplica]iei centrat pe componente.
Acest model ^ng@duie dezvoltatorilor, c$nd folosesc JSP, s@
men]in@ o separare strict@ a elementelor de prezentare a
aplica]iei web, de implementarea intern@. Mai mult,
aceast@ separare faciliteaz@ diviziunea muncii ^n cadrul
unei echipe de dezvoltare web prin stabilirea unei interfa]e
bine definite ^ntre dezvoltarea aplica]iei }i designul paginii.
Performan]@
47
JSP-urile sunt de obicei implementate prin servlet-uri.
C$nd un server web recep]ioneaz@ o cerere pentru o
pagin@ JSP, o ^nainteaz@ unui proces special destinat
gestiunii execu]iei servlet-urilor. Acest proces este cunoscut
drept containerul servlet. %n contextul JSP, ^i putem spune
^nc@ container JSP.
%n mod normal, containerul servlet este un proces
separat de serverul HTTP, ^n principal datorit@ faptului c@
este un proces Java ce ruleaz@ ^ntr-o JVM, ^n timp ce cele
mai multe servere sunt scrise ^n alte limbaje. A}adar unui
container servlet ^i este asociat un singur proces care
gestioneaz@ toate solicit@rile adresate servle-urilor sau JSP-
urilor. Acest proces este ini]iat atunci c$nd serverul HTTP
porne}te }i continu@ s@ ruleze p$n@ c$nd serverul este
^nchis. %n loc s@ creeze un proces nou pentru fiecare
cerere ce necesit@ generarea dinamic@ a con]inutului, toate
aceste cereri sunt ^naintate unui singur proces, containerul
servlet.
Containerul servlet gestioneaz@ concuren]ial cereri
multiple pentru un anumit servlet sau JSP, acest lucru fiind
realizat prin firele de execu]ie Java }i nu prin procese de sine
st@t@toare. Firele de execu]ie sunt similare proceselor ^n
sensul c@ mai multe fire de execu]ie pot rula simultan ^ntr-
o JVM. Ele necesit@ mult mai pu]in efort pentru creare }i
distrugere dec$t procesele, din acest motiv fiind numite
uneori “procese u}oare”. Deoarece folosesc mai pu]ine
resurse, sunt mai eficiente dec$t procesele. De exemplu,
procesele generate deseori copiaz@ memoria procesului
p@rinte, pe c$nd firele de execu]ie partajeaz@ memoria cu
firul de execu]ie p@rinte. Ca rezultat, servlet-urile }i JSP-urile
sunt mult mai eficiente dec$t programele CGI pentru
generarea dinamic@ a paginilor web.
Pentru o performan]@ sporit@, unele containere servlet
sunt capabile s@ ruleze ca o parte a procesului server HTTP
^n sine, chiar }i ^n cazul acelor servere care nu sunt scrise
^n Java. Astfel comunicarea dintre server }i container prin
cereri }i r@spunsuri devine mai eficient@, }i este realizat@
prin executarea containerului drept un fir de execu]ie ^n
cadrul serverului.
48
Mai mult, deoarece toate servlet-urile }i JSP-urile sunt
gestionate de acela}i proces (JVM), este foarte u}or pentru
ele s@ partajeze resurse De exemplu utilizarea unui set de
conexiuni la baza de date reutilizabile, care r@m$n
disponibile JSP-urilor. Un program CGI deschide pentru
fiecare solicitare o conexiune la baza de date, }i apoi o
^nchide dup@ ce a r@spuns.
Componente reutilizabile
49
comportament. Deoarece aceste propriet@]i }i
comportamentul pot fi accesate f@r@ a ]ine seama de
implementarea intern@, este posibil s@ dispunem de
capacit@]ile unei componente independent de limbajul de
programare ^n care a fost scris@. Astfel ea ar putea fi
utilizat@ ^n alt limbaj de programare (de exemplu un limbaj
de script) sau chiar folosit@ de unelte vizuale, f@r@ a fi
necesar nici un fel de cod surs@.
%n cazul JSP-urilor, componetele JavaBeans sunt accesate
nu prin mijloace de programare ci printr-o sintax@
alternativ@. Mai exact, JSP ofer@ un set de taguri pentru
accesarea componentelor JavaBeans ^n pagin@ }i pentru
afi}area }i modificarea propriet@]ilor lor.
Principala calitate a proiect@rii axate pe componente este
reutilizarea. Deoarece componentele sunt de sine st@toare,
programatorii nu trebuie s@ ^n]eleag@ rela]iile complicate
dintre obiecte pentru a le putea folosi. O component@ poate
apela la alte obiecte, dar interfa]a abstract@ prin care
componenta este accessat@ }i manipulat@ va masca
complexitatea opera]iilor interne.
Deoarece componentele sunt proiectate pentru a servi
unei sarcini specifice (reprezentatea unui set particular de
date, realizarea unui comportament specific), este u}or s@
determin@m ce func]ionalitate ofer@ o component@ }i ^n
ce circumstan]e ar trebui folosit@.
Componentele sunt reutilizate deoarece sunt u}or de
folosit de la ^nceput. Beneficul acestei reutilizari este
^n mod evident productivitatea. Dac@ o component@
este disponibil@ pentru a ^ndeplini o sarcin@, atunci va fi o
bucat@ de cod surs@ mai pu]in de scris, testat }i men]inut.
Mai mult, componentele ^n general nu depind de context.
De exemplu, o component@ JavaBeans poate fi exploatat@
^ntr-un servlet, ^ntr-un applet sau ^ntr-o pagin@ JSP.
50
afi}are al informa]iilor c@tre utilizatorul final- }i
implementarea programului- codul folosit pentru generarea
informa]iilor. Avantajul separ@rii acestor dou@ aspecte este
c@ schimb@rile efectuate asupra uneia nu vor necesita
modific@ri ^n cealalt@ parte.
Modul ^n care datele sunt afi}ate (de exemplu selectarea
fontului, paleta de culori, cadrul paginii) pot fi rev@zute
f@r@ a se efectua modific@ri ^n codul Java. Analog, at$t
timp c$t interfe]ele componentelor r@m$n neschimbate,
implementarea intern@ poate fi rescris@ (de exemplu
pentru a ^mbun@t@]i performan]a sau mentenan]a) f@r@ a
afecta nici una din paginile JSP care utilizeaz@ acele
componente.
JSP asigur@ un mijloc foarte elegant }i simplu pentru
separarea celor dou@ elemente ale unei aplica]ii web:
sintaxa. Folosind tagurile pentru accesarea componentelor
JavaBeans, se pot scrie pagini JSP care s@ nu con]in@ cod
Java. Dac@ nici unul dintre tagurile existente nu asigur@
func]ionalitatea dorit@, se poate scrie propria bibliotec@ de
taguri utiliz$nd mecanismul JSP de extensie a tagurilor.
Prima regul@ pentru realizarea separ@rii prezent@rii de
implementare este ca o pagin@ JSP s@ con]in@ doar taguri
}i nici o linie cod Java, adic@ codul aferent implement@rii
s@ nu fie mixat cu codul necesar prezent@rii datelor.
A doua regul@ spune c@ o component@ JavaBeans nu
trebuie s@ con]in@ cod HTML.
JSP nu include taguri predefinite pentru a parcurge
propriet@]ile unui Bean. Pentru a rezolva aceast@ dilem@,
la prima vedere se pare c@ trebuie ales ^ntre a include cod
Java ^n pagina JSP, or Bean-ul s@ asigure output HTML. Din
fericire, JSP permite alt@ alternativ@, care fundamenteaz@
separarea prezent@rii de implementare: prin mecanismul
JSP de extindere a tagurilor, care este ilustrat ^n figura de
mai jos. Programatorii ^}i pot crea astfel biblioteci,
destinate gener@rii de HTML prin programare Java, care pot
fi apoi importate ^n paginile JSP.
51
Fig. 3.5.1 Separarea prezent@rii de implementare
52
nevoile de comunicare pot fi reduse ^n cadrul fazei critice
de implementare, sporurile de productivitate pot fi
substan]iale.
De asemenea, modific@rile ulterioare ale aplica]iei pot fi
f@cute mai rapid dac@ este nevoie de mai pu]ini oameni
pentru a le efectua.
De obicei, aspectele de prezentare sunt supuse unor
constante revizii pentru a atrage aten]ia clien]ilor, pentru a
satisface cerin]a de u}urin]@ ^n folosire. Implementarea
afacerii din spatele aplica]iei tinde s@ evolueze mult mai
^ncet. Dac@ responsabilii pentru aceste dou@ elemente pot
lucra independent, atunci at$ dezvoltarea ini]ial@ c$t }i
rafin@rile ulterioare pot fi tratate mult mai eficient.
Practic, aceasta ^nseamn@ c@ designeri se pot concentra
pe HTML, iar proiectan]ii de aplica]ie pe Java. Echipa ca
^ntreg define}te cerin]ele care vor contura modelul
aplica]iei web. Programatorii apoi translateaz@ aceste
cerin]e ^ntr-un set de propriet@]i }i comportament care va
vor fi implementate drept componente JavaBeans. Aceste
componente vor asigura funda]ia pentru generarea
dinamic@ a con]inutului de c@tre echipa de prezentare prin
intermediul paginilor JSP. Astfel, odat@ acest@ funda]ie
construit@, ambele echipe pot lucra independent pentru a
rafina contribu]iile lor la aplica]ie (de exemplu ^nfrumuse]a
look-ul aplica]iei sau spori eficien]a la momentul execu]iei),
f@r@ a se afecta negativ performan]a celeilate echipe.
JSP ASP
Suport Cele mai populare Suportat numai de
servere web servere web, inclusiv c@tre Microsoft IIS
53
Apache, Netscape }i sau Personal Web
Microsoft IIS Server
Suport Independent de Suport complet pe
platforme platform@, ruleaz@ pe Windows.
toate platformele ce Exploatarea pe alte
suport@ JVM platforme este
dificil@ din cauza
modelului de
componente
Model de Se bazeaz@ pe Folose}te modelul
componente componente pe componente
reutilizabile, COM bazat pe
independente de WIN32
platform@ (JavaBeans,
Enterprise JavaBeans }i
biblioteci de taguri
personalizate)
Scripting Poate folosi limbajul Java Suport@ VBScript }i
sau JavaScript JScript
Securitate Se bazeaz@ pe modelul Poate lucra cu
de securitate Java arhitectura de
securitate a lui
Windows NT
Acces la Folose}te JDBC pentru Folose}te Active
baze de accesul la baze de date Data Objects
date
Extensibilita Este extensibil cu Nu poate folosi
te ajutorul bibliotecilor de biblioteci de
taguri personalizate taguri }i nu poate fi
extins
54
aceast@ privin]@ Sun ofer@ o serie de preciz@ri }i
recomand@ri.
Servlet-urile se folosesc strict numai ca extensii ale unui
server.
Acestea ar putea implementa componente specializate
pentru controlul autenticit@]ii, valid@ri asupra bazei de
date, etc. Este interesant de precizat c@ ceea ce este numit
container JSP (“JSP engine”) este de fapt un servlet
specializat ce ruleaz@ sub controlul containerului servlet.
Deoarece JSP lucrez@ doar cu date textuale, servlet-urile vor
fi folosite pentru comunicarea cu applet-uri }i alte aplica]ii.
Tehnologia JSP se utilizeaz@ pentru a dezvolta aplica]ii web
care au la baz@ con]inut dinamic. De asemenea el va fi
folosit ^n locul extensiilor de servere web particulare,
deoarece ofer@ mijloace deosebite pentru tratarea
con]inutului repetitiv.
Acestea sunt liniile mari de ghidare. Alte sugestii propuse:
- a nu se exagera cu folosirea codului Java ^n pagini
HTML- pentru aplica]ii simple aceast@ abordare este
corect@, dar pentru aplica]ii complexe ar da na}tere la mari
deficien]e: productivitate sc@zut@, dependen]@ ridicat@,
cod greu de ^nteles }i men]inut;
- alegerea mecanismului corect de includere- datele
statice sunt p@strate ^n fi}iere separate ce nu vor fi
regenerate }i care vor fi incluse ^n alte pagini;
- s@ nu se amestece prezentarea cu logica aplica]iei-
acest lucru este realizat prin componentele JavaBeans sau
Enterprise JavaBeans;
– este recomandat@ utilizarea tagurilor personalizate-
pentru asigurarea separ@rii prezent@rii de implementare;
- folosirea unui model de securitate portabil- pentru
ca dezvoltatorii
de aplica]ii s@ nu fie dependen]i de un server particular;
- folosirea unei baze de date pentru informa]iile
persistente;
- depozitarea con]inutului- con]inutul care nu se schimb@
^ntre dou@ cereri nu trebuie regenerat dinamic, el va fi
stocat pe ma}ina clientului;
- utilizarea unui set de conexiuni- pentru a putea partaja
55
eficient conexiunile la baza de date ^ntre solicit@ri;
- depozitarea rezultatelor interog@rilor pe baza de
date- este recomandat@ a nu se face cu un obiect JDBC
ResultSet ci cu un JavaBeans specific aplica]iei;
Containere Bean
Proprit@]ile Bean-urilor
56
Lucrul cu Bean-uri se face prin intermediul propriet@]ilor
lor.
Propriet@]ile sunt numele atributelor Bean-ului care men]in
starea lui }i care ^i controleaz@ comportamentul. Un Bean
este definit de propriet@]ile sale. Ele pot fi modificate la
momentul execu]iei de c@tre containerul Bean. Valorile
acestor propriet@]i constituie singurul mecanism pe care
containerul Bean ^l folose}te pentru a “etala” Bean-ul
programatorului.
Fiecare Bean va avea un set diferit de propriet@]i
depinz$nd de tipul informa]iei pe care o con]ine. Se poate
adapta un Bean prin setarea valorilor propriet@]ilor.
Creatorul unui Bean va impune restric]ii pe fiecare
proprietate pentru a controla accesul la ea. O proprietate
poate fi doar citit@, doar modificabil@, sau citit@ }i
modificabil@. Conceptul de accesibilitate permite
proiectantului Bean-ului s@ impun@ limite ^n privin]a
folosirii lui.
Unele propriet@]i sunt folosite pentru a declan}a
comportamentul }i sunt numite propriet@]i
declan}atoare. Citirea sau scierea unei propriet@]i
declan}atoare semnaleaz@ Bean-ului s@ execute o ac]iune.
Dou@ propriet@]i care au caracteristica c@ modificarea
uneia atrage dup@ sine modificarea celeilalte se numes
propriet@]i legate.
Proprietatea care stocheaz@ o colec]ie de valori se
nume}te proprieate indexat@, deoarece o valoare
stocat@ este accesat@ printr-un index ce specific@ care
valoare particular@ este solicitat@.
Propriet@]ile unui Bean pot s@ ]in@ o gam@ larg@ de
tipuri de informa]ie. O proprietate poate stoca un singur tip:
numeric, string, obiecte predefinite sau definite de
utilizator }i chiar alte Bean-uri.
Containerul Bean va determina cum se lucreaz@ cu
propriet@]ile unui Bean. Astfel, buc@]ile de cod Java vor
referi valoarea prin tipul Java. %n schimb, tagurile Bean
trateaz@ fiecare valoare drept text, containerul JSP realiz$nd
toate conversiile necesare.
57
Capacit@]ile unui Bean sunt documentate ^ntr-un tabel
numit foaia de propriet@]i, care cuprinde toate
propriet@]ile disponibile pentru un Bean, precum }i nivelul
lor de acces pentru utilizator }i tipul Java aferent.
Prin aceste foi de propriet@]i, proiectan]ii de Bean-uri
descriu tr@s@turile unui Bean celor care le utilizeaz@:
dezvoltatori JSP, programatori de servlet-uri, etc.
58