Sunteți pe pagina 1din 4

Tehnologia Java Server Pages

Pagini Web generate dinamic - un posibil rspuns


La nceput a fost Web-ul. i Web-ul era static i ntunecat. Apoi a aprut CGI-ul i ISAPI-ul. i Microsoft a
zis: "S fie IDC!"; i aa a fost! i alii au adugat: "S fie API-uri, SSI-uri i plug-in-uri!"; i aa a fost! Apoi
Microsoft a zis: "S fie ASP!"; i aa fost! i aplicaiile au prins via. Apoi Duke a zis: "S fie Servlet-uri!";
i aa a fost! i a luat Duke Servlet API a vorbit cu IBM, Oracle, Netscape, Weblogic i alii i a fcut JSP. i
s-a fcut lumin!...?..."
Davian Popescu

Programarea CGI (Common Gateway Interface), aprut la nceputul anului 1995, a transformat Web-ul dintr-un
simplu sistem de aducere de fiiere ntr-o platform n care diferitele organizaii pot instala aplicaii Web de mare
utilitate. nainte de introducerea CGI Web-ul era, de fapt, folosit pentru distribuirea de documente statice: text i
imagini. Odat cu apariia acestuia, serverele de Web au putut fi conectate pentru a procesa informaia n mod
dinamic.
Aproape c nu exist limite pentru posibilitile de folosire de clieni Web n diverse aplicaii. Proiectele ce folosesc
clieni de tip browser au cteva avantaje asupra modelului tradiional client/server. Acestea includ accesul nelimitat
al clienilor, instalarea i meninerea facil a aplicaiilor (pentru a face modificri, programatorul trebuie doar s
schimbe un program aflat pe server i nu cteva sute de aplicaii client instalate). Ca urmare, industria de software se
ndreapt rapid ctre construirea de aplicaii multi-tier folosind clieni de tip browser.
Soluia incipient reprezentat de CGI avea serioase probleme de scalabilitate: fiecare cerere CGI lansa un nou
proces pe server, iar dac mai muli utilizatori fceau acest lucru simultan, mare parte din resursele serverului Web
erau astfel epuizate. Efectul imediat: ncetinirea aplicaiei cu efecte deosebit de neplcute pentru utilizator.
Productorii de servere Web au ncercat s simplifice dezvoltarea de aplicaii Web prin furnizarea de "plug-in"-uri i
API-uri pentru servere. Aceste soluii sunt specifice fiecrui server i nu rezolv problema n cazul unor platforme
diferite. De exemplu, tehnologia Active Server Pages (ASP) faciliteaz crearea de pagini de Web dinamice, ns
funcioneaz doar cu servere Microsoft: Internet Information Server sau Personal Web Server. Conform statisticilor
recente (vezi situl Netcraft http://www.netcraft.com/survey/), 22% din serverele Web sunt bazate pe NT - ceea ce
nseamn c restul de 78% are nevoie de altceva.
Alte soluii exist, dar nu sunt uor de folosit de ctre proiectantul obinuit de pagini de Web. Tehnologia Java
Servlets (specificat de API-ul Servlet de la Sun), de exemplu, permite folosirea limbajului Java ca mediu de
dezvoltare pentru crearea dinamic a paginilor Web, pentru execuia unor calcule n funcie de specificul aplicaiei
sau pentru comunicarea cu surse de date de nivel third-tier. Aceste trei activiti difer foarte mult una de cealalt i
necesit diverse aptitudini de programare. Un servlet Java este un program ce ruleaz pe server (spre deosebire de
applet-uri ce ruleaz n browser); el preia cereri HTTP de la browser-ul Web i genereaz dinamic un rspuns HTML
(sau XML). ntreaga pagin Web trebuie astfel s fie coninut n servlet-ul Java. Dac un Web designer sau un Web
master dorete s schimbe look-ul paginii respective, ar trebui s editeze i s recompileze servlet-ul chiar dac
modul de funcionare ce st n spatele acestuia rmne acelai.
Proiectanii Web sunt preocupai n special de aspectele estetice ale paginii (amplasarea i aspectul imaginilor, al
fundalului i al frame-urilor) i mai puin de sursa i de manipularea datelor dinamice necesare pentru a aduce
pagina n forma cerut de client. Uneori sunt necesare informaii despre cererea browser-ului client (cum ar fi tipul
acestuia) pentru a se returna un coninut adecvat care s beneficieze de toate avantajele acestuia. Ar fi deci foarte util
s se permit proiectanilor Web accesul la aceste informaii fr a trebui s nvee s scrie servlet-uri, s le
compileze i s le instaleze pe serverele de Web respective.
Pentru a oferi proiectanilor acces la API-ul Servlet fr a trece prin cele trei faze menionate anterior ct i pentru a
veni cu o soluie pentru problemele deja existente, Sun a definit specificaia JavaServer Pages ce permite ca Java s
devin limbaj de scripting pe partea de server i mai mult dect att.
Ce este JSP?
JavaServer Pages este tehnologia platformei Java pentru construirea de aplicaii ce cuprind pagini de Web cu
coninut dinamic precum HTML, DHTML, XHTML i XML. Sun a ncercat s depeasc limitrile soluiilor
actuale pentru generarea de pagini cu coninut dinamic prin dezvoltarea unei tehnologii care:
- s funcioneze pe orice server Web sau de aplicaii;
- s separe logica ce st n spatele aplicaiei de aspectul paginii;
- s permit dezvoltare i testare rapid;
- s simplifice procesul de dezvoltare de aplicaii interactive Web.

Tehnologia JSP a fost creat s satisfac aceste cerine, fiind rezultatul unei cooperri la nivelul industriei software
dintre productorii de servere Web, servere de aplicaii, sisteme tranzacionale i unelte de dezvoltare. Astfel,
procesul dezvoltrii de pagini de Web dinamice este accelerat de ctre JSP din urmtoarele considerente:
Separarea generrii coninutului de prezentare
Prin tehnologia JavaServer Pages, proiectanii de pagini folosesc tag-uri obinuite HTML sau XML pentru
formatarea rezultatului i tag-uri JSP sau scriplet-uri pentru generarea coninutului dinamic al paginii. Logica ce st
n spatele generrii coninutului este cuprins n tag-uri i componente JavaBean, legtura dintre acestea fcndu-se
n scriplet-uri i totul fiind executat pe server. Astfel, proiectanii de pagini sau Web master-ii pot edita i lucra cu
pagini JSP fr a afecta generarea coninutului dinamic.
Pe partea de server, un engine (motor) JSP interpreteaz scriplet-urile i tag-urile JSP, genereaz coninutul cerut
(accesnd componente JavaBean, baze de date folosind JDBC sau prin includerea de fiiere) i trimite rezultatele
napoi sub forma unei pagini HTML (sau XML) ctre browser.
Reutilizarea componentelor i a tag-urilor
Tehnologia JSP permite reutilizarea componentelor precum JavaBeans, Enterprise JavaBeans sau a tag-urilor att
independent, ct i n cadrul unor unelte interactive de dezvoltare a componentelor i paginilor de Web. Creatorii de
pagini Web nu sunt ntotdeauna programatori familiarizai cu limbaje de scripting. JSP ncapsuleaz funcionalitile
necesare pentru crearea de coninut dinamic n tag-uri de tip XML specifice JSP. Tag-urile JSP standard pot accesa i
instania componente JavaBean, pot seta sau obine atribute ale bean-urilor, pot face download la applet-uri i pot
executa funcii ce ar fi dificil de implementat. Tehnologia JSP este extensibil prin dezvoltarea de biblioteci de taguri definite de utilizator (vezi [3]). Cu timpul vor fi create biblioteci proprii de tag-uri pentru funciile folosite cel
mai frecvent.
"Write once, run anywhere"
Tehnologia JSP este complet independent de platform att n ceea ce privete paginile de Web dinamice, ct i
serverele de Web i componentele acestora. Aceasta este explicabil deoarece limbajul de scripting pentru paginile
JSP se bazeaz pe Java i n special pe modul de manipulare a obiectelor n acest limbaj (vezi paragraful 1.4.4 din
[2]).
Pagini JSP
O pagin JSP (*.jsp) este o pagin HTML sau XML ce cuprinde elemente adiionale (tag-uri, declaraii, scriplet-uri)
pe care motorul JSP le proceseaz i le elimin returnnd o pagin standard HTML/XML. Ea corespunde unui
document ce descrie procesarea unei cereri pentru a crea un rspuns.
O pagin JSP cuprinde n structura sa:
cod HTML/XML standard - cod ce rmne neinterpretat de motorul JSP;
directive JSP - directive ce furnizeaz informaii globale independente conceptual de o anumit cerere
adresat paginii JSP;
tag-uri JSP - spre deosebire de directive, tag-urile depind de fiecare cerere n parte adresat paginii JSP;
elemente de scripting - acestea putnd fi: declaraii, scriplet-uri i expresii.
Listing-ul 1 reprezint un exemplu concludent ce cuprinde toate aceste elemente:
cod HTML standard;
o directiv JSP ce transmite informaii motorului JSP. n cazul de fa este inclus fiierul copyright.html n
etapa de traducere n servlet-ul ce va genera pagina de rspuns;
tag-uri JSP: implementate ca tag-uri standard sau definite de utilizator(n versiunea viitoare 1.1) avnd
sintaxa XML a unui tag. n exemplu se folosesc jsp:useBean i jsp:include pentru a instania JavaBean-ul
oData pe server, respectiv pentru a include fiiere n etapa de runtime (de procesare a cererilor);
elemente de scripting:
declaraia variabilei useragent folosind sintaxa limbajului de scripting (Java). Declaraiile sunt cuprinse
ntre tag-urile <%! i %>;
scriplet-uri. Acestea sunt poriuni de cod n limbajul de scripting (n cazul de fa acelai Java) ce sunt
compilate i ruleaz ca parte din servlet-ul generat. Ele sunt delimitate de tag-urile <% respectiv %>. Cel
din exemplul ales verific tipul browser-ului client i n funcie de acesta este afiat un text corespunztor;
expresiile exprimate n limbajul de scripting pentru a afia denumirea zilei din sptmn, ziua i respectiv
anul.
Directive, tag-uri, obiecte i domenii de vizibilitate
Paginile JSP folosesc directive JSP pentru a transmite instruciuni motorului JSP. n specificaia 1.0 aceste directive
sunt:

<%@ include ...%> folosit pentru a insera n pagin un document extern ce poate fi i un alt document JSP;
<%@ page ...%> folosit pentru a transmite informaii referitoare la pagin precum limbajul de scripting, buffer-ul,
informaii despre thread-uri, "pachete importate", modul de tratare al excepiilor etc;
<%@ taglib ...%> indic o bibliotec de tag-uri pe care pagina respectiv le poate invoca. Nu este disponibil n
implementrile actuale.
JSP include o serie de tag-uri standard. Sintaxa lor este cea a tag-urilor XML (< tag attr1="valoare atribut" ...> corp
</tag> sau < tag attr1="valoare atribut" .../>). Acestea sunt:
<jsp:forward> nainteaz cererea ctre un alt fiier HTML, fiier JSP sau servlet;
<jsp:include> include n etapa de procesare a cererii fiierul specificat n tag;
<jsp:plugin> face download ctre browser-ul clientului la un plugin Java pentru executarea unui applet sau a unui
Bean. Nu este disponibil n implementrile actuale.
<jsp:useBean> declar folosirea unei instane, a unei componente JavaBean. Dac aceasta nu exist atunci
componenta JavaBean instaniaz i nregistreaz tag-ul;
<jsp:setProperty> seteaz valoarea unei anumite proprieti a unui Bean;
<jsp:getProperty> obine valoarea unei instane a unui Bean, o convertete la String i o depune n obiectul implicit
de ieire out.
O pagin JSP poate crea i/sau accesa, la procesarea unei cereri, anumite obiecte Java. Obiectele astfel create pot
deveni vizibile elementelor de scripting prin variabile n limbajul de scripting. Acestea vor conine, n timpul etapei
de procesare a cererilor (vezi "Server Web cu funcionalitate JSP"), referine ctre obiectul respectiv. Obiectele
create au un atribut numit scope ce definete domeniul de vizibilitate al acestora: cnd exist o referin la acest
obiect i cnd aceasta va fi nlturat. Valorile pe care le poate avea atributul scope sunt:
page - accesibil doar n cadrul paginii n care a fost creat obiectul;
request - accesibil din paginile ce proceseaz aceeai cerere n care a fost creat obiectul;
session - accesibil din paginile ce se sunt n aceeai sesiune n care a fost creat obiectul;
application - accesibil din paginile de proceseaz aceeai aplicaie n care a fost creat obiectul. Toate referinele la
acesta sunt eliberate cnd mediul runtime solicit ServletContext-ul (pentru detalii vezi [2] respectiv [9]).
Numele ataat unui obiect este unic pe tot timpul execuiei, toate domeniile de vizibilitate comportndu-se ca unul
singur n cadrul unei secvene cerere/ rspuns. Lipsa transmiterii variabilelor de stare prin HTTP este suplinit n
mod automat de ctre motorul JSP prin cele dou modaliti cunoscute: cookie-uri, respectiv rescrierea URL-urilor.
Ct timp sunt fcute cereri procesate de ctre motorul JSP, rescrierea URL-urilor este fcut n mod automat.
Orice pagin JSP conine o serie de obiecte create implicit (detalii n [2]):
request - cererea ce a solicitat pagina respectiv;
response - rspunsul la cerere;
pageContext - contextul paginii curente;
session - obiect de tip sesiune pentru clientul solicitat (valabil doar pentru HTTP);
application - contextul servlet-ului generat (getServletConfig().get Context();
config - obiect de tip ServletConfig pentru aceast pagin;
page - instan a clasei create pentru aceast pagin (pentru Java: this);
exception - excepia declanat anterior putnd fi folosit doar n pagina de eroare invocat;
config - obiect de tip JspWriter ce scrie n stream-ul de ieire.
Tipuri de aplicaii pentru JavaServer Pages
Modelul de aplicaie flexibil folosind servlet-uri Java
Un client Web poate face o cerere direct ctre un servlet Java, care genereaz coninutul dinamic, stocheaz
rezultatul ntr-un Bean i invoc pagina JSP. Pagina JSP acceseaz coninutul dinamic din Bean i trimite rspunsul
(HTML) browser-ului. Un astfel de exemplu este listing-ul 2.
Aplicaii de tip "two-tier"
Modelul de aplicaii "two-tier" presupune ca browser-ul s invoce n mod direct pagina JSP i aceasta s genereze
coninutul solicitat (apelnd eventual la JDBC pentru a obine informaia direct dintr-o baza de date). Pagina JSP
poate apela JDBC sau o component JavaBean pentru a genera rezultatele dorite i a crea HTML standard ce va fi
trimis browser-ului.
Acest model de fapt nlocuiete conceptul CGI-BIN cu pagina JSP (compilat ca servlet Java). Avantajele acestei
abordri sunt uurina de a programa i posibilitatea autorului paginii de a genera coninut dinamic bazat pe cererea
clientului i starea resursei solicitate. Acesta este exemplul prezentat n Listing-ul
3. Se face acces prin JDBC la o sursa de date ce conine cotaiile valutare pe o perioad mai mare de timp. Structura
tabelei curs cuprinde 3 cmpuri: data DATE, simbol CHAR(3), lei NUMERIC(10).

Aceast arhitectur nu este fiabil pentru un numr mare de posibili clieni deoarece fiecare dintre acetia va trebui
s stabileasc o conexiune ctre sursa de date. Exemplul poate fi mbuntit folosind un JavaBean cu atributul
application pe post de "connection pool". Un astfel de exemplu ruleaz cu succes pentru situri de nivel mediu. n
cazul n care se dorete scalabilitate complet i fiabilitate foarte ridicat arhitectura ce se folosete este cea de tip C.
Procesare scalabil folosind tehnologia Enterprise JavaBeans (aplicaii de tip N-tier)
Pagina JSP poate aciona ca "middle-tier" n cadrul unei arhitecturi de tip Enterprise JavaBeans (EJB). n acest caz,
pagina JSP interacioneaz cu resursele aflate pe server printr-o component de tip Enterprise JavaBean.
Componenta de tip EJB controleaz accesul la resursele de pe server, ceea ce furnizeaz performan scalabil
pentru un numr mare de utilizatori concureni. Pentru comer electronic sau alte tipuri de aplicaii, EJB controleaz
tranzaciile i problemele de securitate aferente. Aceasta simplific pagina JSP. Modelul acesta va fi suportat de ctre
platforma Java 2 Enterprise Edition.
ASP sau JSP?
Acesta e un subiect ce constituie o disput foarte aprins ntre susintorii celor dou tehnologii. Muli sunt cei ce
consider c JavaSoft are avantajul tacticii "wait and see", putnd astfel aprecia mai bine ce va funciona corect i ce
nu.
Tehnologia JSP este relativ nou. Prima specificaie adoptat cu numrul de versiune 1 a aprut la sfritul lunii mai
a acestui an. La data scrierii acestui articol exista un draft pentru versiunea 1.1. Tag-urile definite de utilizator,
integrarea cu XML i cu platforma Java 2, Enterprise Edition sunt deziderate propuse pentru aceast versiune.
ASP a fost propus de Microsoft n 1996 i putem spune c este o tehnologie deja impus ca standard pe platformele
Microsoft. Dei aceast tehnologie este foarte complex, ea suport limbaje de scripting multiple i modelul ActiveX
al Microsoft. Suportul pentru bibliotecile ActiveX, ce i dau adevrata putere, o fac ns disponibil numai pentru
platforma NT.
Tabelul "Comparaia ASP-JSP" descrie comparativ cele dou tehnologii. Caracteristicile au fost preluate din pagina
de Web a JSP-ului i completate cu observaiile autorului. A ncerca s stabileti care dintre cele dou tehnologii este
mai bun sau care se va impune este un lucru mai mult dect riscant i articolul de fa nu-i propune aceasta.
Concluzii
Explozia Internet-ului face ca cerinele pentru aplicaii Web s creasc vertiginos. n aceste condiii o tehnologie
precum JavaServer Pages este mai mult dect binevenit. Sprijinul de care se bucur din partea industriei software
precum i faptul c se bazeaz pe platforma Java pot face din JSP soluia de facto pentru aplicaii Web. n sprijinul
acestei afirmaii nu vin doar declaraiile din partea unor nume celebre precum Oracle, Netscape, Weblogic, IBM,
Fujitsu .a., ci i integrarea n viitoarea platform Java 2 Enterprise Edition i tehnologii precum JavaBeans sau
Enterprise JavaBeans.
Pentru testarea exemplelor cuprinse n acest articol recomand Orion Web Server (http://orion. evermind.net/) sau
JavaServer Web Development Kit (http://developer.java.sun.com/developer/earlyAccess/jsp). Departe de a fi epuizat
subiectul n cadrul acestor pagini, cititorul interesat de evoluia JSP poate vizita site-ul cel mai avizat n acest sens
http://java.sun.com/products/jsp.
Succesul JSP depinde n mare parte i de succesul platformei J2EE (Java 2 Enterprise Edition). Viitorul este ns cel
ce ne va arta evoluia acestei tehnologii

S-ar putea să vă placă și