IPRO - PC Magazine Romania, Februarie 2004
SOLUȚII PENTRU PROGRAMATORII ȘI DESIGNERII WEB
JSP: Java și mai aproape de noi
Mircea Scărlătescu
Dacă acum 10 ani cineva v-ar fi spus că internetul va ajunge pentru multe firme
principala metodă de a-și conduce afacerile iar pentru utilizatorii particulari
o sursă de informații deosebit de folositoare nu cred să fi fost prea convinși…Și
totuși…
Și cum era normal, tehnologiile care să folosească la maxim potențialul internetului
nu au întârziat să apară. JSP se încadrează în categoria tehnologiilor de calitate
înaltă, recomandată în special mediilor enterprise, dar și celor care doresc
să aibă situri realizate calitativ și hostate pe servere performante.
Ce este JSP?
JavaServerPages este o tehnologie bazată pe limbajul Java dezvoltată de Sun
(www.sun.com) și care îmbină perfect
conținutul static al paginilor Web cu informațiile dinamice, citite funcție
de diferite reguli sau date aflate pe diferite suporturi de stocare (în special
baze de date). Printre avantajele folosirii JSP putem enumera dezvoltarea paginilor
în orice mediu de dezvoltare, și indiferent de platformă, posibilitatea de interacțiune
cu obiecte server dar și posibilitatea de extindere a limbajului cu marcaje
(tag-uri) customizate după necesități.
Cum se pot rula aplicații JSP?
La fel ca și Servlets, (tehnologiile sunt strâns legate) o posibilitate la
îndemâna tuturor este de a instala pachetul software Tomcat, pachet disponibil
gratuit pe internet, dezvoltat de fundația Apache Software. Există o multitudine
de alte variante, dar aceasta este recomandabilă și din punctul de vedere al
resurselor consumate de server. Desigur, în mediile profesionale de dezvoltare
e posibil să folosiți unelte dezvoltate de Sun sau IBM, și care sunt extrem
de folosite pe plan mondial. Una peste alta însă, alegerea aparține dumneavoastră,
și trebuie să faceți alegerea care vă avantajază, nu neaparat cea la moda.
Și totuȘi, ce fac eu cu JSP?
Există două mari categorii de date ce pot să fie introduse într-o pagină de
tip JSP. Date (conținut) statice și dinamice. Să o luam pe rând. Conținutul
static al unui document care circulă pe Web, reprezintă cod HTML, XML, WML (wireless
markup language) și așa mai departe. Acest tip de conținut nu este afectat de
interogări ale bazelor de date, de formulare completate de utilizator, etc.
Conținutul dinamic însă este exact opusul primului. Bazele de date, identificarea
utilizatorilor și alte asemenea aspecte determină direct ce se afișează pe o
astfel de pagină cu conținut dinamic. În general, conținutul fix, static este
reprezentat de layout-ul paginii care se generează, iar datele sunt generate
funcție de diferite opțiuni.
Conținutul static este ´by default´ de tip HTML. Dacă se dorește
să conțină să zicem WML (echivalentul pentru telefoane mobile al HTML-ului),
trebuie să precizăm explicit acest lucru printr-o declarație de genul
<%@ page contentType="text/vnd.wap.wml"%>
Conținutul dinamic se generează folosind obiecte ale limbajului Java. O primă
categorie de obiecte care pot fi utilizate de către programatori sunt obiectele
implicite. Aceste sunt obiecte chiar și de tip ´enterprise bean´
sau componente JavaBeans. Iată câteva exemple de obiecte implicite ce pot fi
utilizate:
Obiectele specifice ale aplicației sunt obiecte definite de către programatori
care ajută pe de o parte implementarea unitară a funcțiilor și proprietăților,
așa cum se recomandă în programarea orientată pe obiecte, dar pe de altă parte
ajută la o separare a conținutului static de cel dinamic, și implicit a designului
și layout-ului paginii de conținutul generat de aplicație în mod dinamic.
Obiect |
Clasă |
Scurtă descriere |
application |
javax.servlet.ServletContext |
Contextul paginii |
config |
javax.servlet.ServletConfig |
Informațiile de inițializare
a paginii |
session |
javax.servlet.http.HttpSession |
Obiect de tip sesiune |
out j |
avax.servlet.jsp.JspWriter |
Streamul de ieșire (răspuns)
al pagini |
Elemente de scripting JSP
În paginile JSP veți introduce diferite elemente dinamice, și în cele ce urmează
vom descrie o parte dintre ele.
Un lucru extrem de important pentru paginile JSP este precizarea limbajului
de scripting ce va fi folosit. Trebuie să spunem că obiectele Java pot să fie
chemate (instanțiate) și de alte limbaje în afară de limbajul Java, cel care
este implicit selectat. Deci, dacă se dorește folosirea unui alt limbaj, atunci
se va scrie la începutul fișierului următoarea linie de cod:
<%@ page language="limbaj" %>
Analog cu importarea claselor necesare atunci când scriem un servlet, sau un
alt tip de program Java (applet sau stand-alone) și în JSP este necesară o astfel
de declarație; iată mai jos un exemplu:
<%@ page import="java.util.*, java.net.*" %>
Declararea unor variabile sau metode în cadrul unei pagini JSP se realizează
prin marcajul
<%! Declaratii metode si variabile %>
Scripletii sunt părti (bucăți) de cod (în Java sau alt limbaj) care este interpretat
și executat la server. Declarația unui astfel de scriptlet se face în interiorul
tagurilor:
<% … %>
Pentru a scrie o expresie tag-ul utilizat va fi:
<%=… %>
Includerea unui alt fisier în fișierul curent
Astfel de includeri sunt deosebit de necesare și orice programator vă va spune
că le-a folosit cel puțin odată. Astfel, și JSP are două mecanisme puse la dispoziție
în acest sens:
Prima posibilitate este aceea de a folosi directiva:
<%@ include file="fisier" %>
În acest caz, fișierul precizat este încărcat în fișierul nostru la încărcarea
paginii la server (în paranteză fie spus: pe server, orice pagină Web scrisă
în JSP este transformată în servlet, de aici și asemănarea între cele două tehnologii).
Există dupa cum am spus și varianta 2, de a include un fișier cu sintaxa:
<jsp:include page="fisier" />
care are semnificația introducerii paginii dorite la execuție. Dacă pagina
reprezintă conținut dinamic, atunci el este întâi executat, după care rezultatul
se include în pagina inițială, iar dacă ´fișier´ este un fișier
static (nu conține cod) atunci el este inclus fără nici o modificare.
Transferul controlului.
Transferul controlului reprezintă posibilitatea de a ajunge din pagina curentă
în altă pagină fără intervenția user-ului (se mai cunoaște sub numele de redirectare).
JSP permite acest lucru prin intermediul următoarei instrucțiuni:
<jsp:forward page="/main.jsp" />
La redirectarea către o altă pagină, datele ce sunt transmise în pagina de
unde se face redirectarea sunt transmise și ele mai departe. Pentru a adăuga
date noi, se va folosi următoarea sintaxa:
<jsp:include page="..." > <jsp:param name="p1" value="valoarea_asignata"/> </jsp:include>
Includerea unui Applet
Appleturile sunt programe Java care rulează în interiorul unui browser web
(java enabled). Pentru a include un applet într-o pagină JSP, vom folosi următorul
tag (destul de înfricoșător la început;) )
<jsp:plugin
type=" bean|applet"
code="objectCode"
codebase="objectCodebase"
{ align="alignment" }
{ archive="archiveList" }
{ height="height" }
{ hspace="hspace" }
{ jreversion="jreversion" }
{ name="componentName" }
{ vspace="vspace" }
{ width="width" }
{ nspluginurl="url" }
{ iepluginurl="url" } >
{ <jsp:params>
{ <jsp:param name="param1" value= value1" /> }+
</jsp:params> }
{ <jsp:fallback> text de eroare daca nu
poate rula </jsp:fallback>}
</jsp:plugin>
Atributele de mai sus, deși la prima vedere cam multe, sunt de fapt configurări
ale mașinii Java care trebuie să ruleze componenta. Există și posibilitatea
de a cere utilizatorului să downloadeze plug-in-ul necesar rulării, dacă acesta
nu este prezent, sau dacă este prea vechi cel existent la client.
Se poate observa că putem transmite parametrii de rulare sub forma
<jsp:params> <jsp:param name="param1" value= "value1" /> </jsp:params>
pentru appletul nostru.
Taguri definite de utilizator
Un concept modern și folositor în programarea de azi este reprezentat de posibilitatea
de a extinde funcționalitatea unui limbaj prin adaugarea în cadrul aplicației
a unor instrucțiuni speciale, destinate unui scop precis. Dacă este să dăm un
exemplu simplu, atunci ar fi foarte folositor să definim un tag care să se numească
email_form și care odată introdus într-o pagină JSP să genereze automat un formular
HTML care să cuprindă adresa de reply, subiect și conținut pentru un mesaj electronic
care să ajungă către email-ul specificat. Astfel, am putea să definim tag-uri
care să ajute progrmarea atăt din punct de vedere al productivității, dar ar
ajuta și la eventuale corecturi necesare, sau îmbunătățiri ulterioare ale aplicației.
Aceste tag-uri pot să fie grupate în adevărate biblioteci care sunt utilizate
în aplicație (prin importarea bibliotecii).
Înainte să vă apucați de lucru în a vă defini diverse tag-uri este folositor
să consultați mai întâi JavaServer Pages Standard Tag Library, o bibliotecă
care conține tag-uri necesare multor aplicații. Sunt șanse mari ca pentru aplicația
pe care o scrieți să fie deja disponibile o serie de tag-uri customizate și
care funcționează ireproșabil. Dezvoltarea aplicației va deveni mult mai ușoară,
și de asemnea multe posibile găuri de securitate sau de concepție pot fi eliminate
prin folosirea acestor tag-uri.
Putem spune că tot ce e nevoie pentru a deveni un bun programator JSP este
documentația, dar în special putină răbdare și timp de a trece prin documentele
disponibile pe internet. Spor la muncă!
|