Documente Academic
Documente Profesional
Documente Cultură
INDRUMTOR TIINIFIC:
Lect. dr. PETRE BZVAN
ABSOLVENT:
BOLCU SORIN
Craiova
2006
CUPRINS
CAPITOLUL I..............................................................................................................................................................5
DEZVOLTAREA APLICAIILOR PENTRU INTERNET.....................................................................................5
1.1 Sisteme de gestiune a bazelor de date..............................................................................................................5
1.1.1 Istoria sistemelor de gestiune a bazelor de date............................................................................................5
1.1.2 Arhitectura global a sistemelor de gestiune a bazelor de date....................................................................7
1.1.3 Obiective.......................................................................................................................................................9
1.1.3.1 Abstractizarea i structurarea datelor.....................................................................................................9
1.1.3.2 Independena fizic i logic................................................................................................................10
1.1.3.3 Reducerea redundanei i inconsistenei..............................................................................................10
1.1.3.4 Optimizarea accesului la date..............................................................................................................10
1.1.3.5 Securitatea i confidenialitatea datelor...............................................................................................10
1.1.3.6 Partajabilitatea datelor..........................................................................................................................11
1.1.4 Scheme i instanieri...................................................................................................................................11
1.1.5 Interfee.......................................................................................................................................................11
1.1.5.1 Interfee meniu.....................................................................................................................................12
1.1.5.2 Interfee grafice....................................................................................................................................12
1.1.5.3 Interfee bazate pe forme.....................................................................................................................12
1.1.5.4 Interfee n limbaj natural.....................................................................................................................12
1.1.5.5 Interfee pentru utilizatorii parametrici................................................................................................12
1.1.5.6 Interfee pentru administratorul BD.....................................................................................................13
1.2 Miniservere (servleturi)...................................................................................................................................14
1.2.1 Introducere..................................................................................................................................................14
1.2.2 Comparaie CGI Servlet...........................................................................................................................15
1.2.3 Cteva din capabilitile servlet-urilor........................................................................................................15
1.2.4 Avantajele servlet-urilor..............................................................................................................................16
1.2.5 Manipularea cererilor fcute de utilizatori..................................................................................................16
1.2.6 Anatomia unui servlet HTTP......................................................................................................................17
1.2.7 Arhitectura pachetelor javax.servlet i javax.servlet.http...........................................................................18
1.2.8 Interaciunea cu clienii...............................................................................................................................19
2
Capitolul I
Dezvoltarea aplicaiilor pentru internet
calcul. Mulimile utilizate cel mai mult n practic sunt tabelele bidimensionale. n
acest caz cutarea i prelucrarea datelor nu depind de modul de organizare i
memorare a datelor n calculator
din punct de vedere matematic, bazele relaionale de date sunt instanieri distincte
de scheme de relaii definite anterior din mulimi de atribute (elemente de date)
Cu alte cuvinte, o baz relaional de date este un model finit n sensul logicii elementare.
Modelul relaional permite realizarea de diferite operaii algebrice. Teoria bazelor relaionale de
date devine domeniul de aplicare a logicii matematice i al algebrei moderne, care opereaz cu
un formalism exact.
O a treia generaie care s-a preconizat dup anul 1990 este aceea a bazelor de date
obiectuale ( orientate obiect). Sistemele de gestiune a bazelor de date obiectuale (SGBDOO)
permit administrarea datelor complexe din domeniile: ingineria software, sisteme multimedia,
gestiunea documentelor, CAD etc. Aceste sisteme trebuie s integreze sistemele relaionale de
baze de date existente. SGBD-urile relaionale au fost dezvoltate pentru aplicaii de gestiune n
care datele sunt separate de programe. Acestea nu cuprind noiunile de obiect i clas. Limbajele
de interogare ale SGBD-urilor furnizeaz mulimi de tupluri programelor de aplicaii care sunt
apoi transformate n structuri complexe.
SGBDOO-urile din generaia a III-a au fost realizate pe dou ci. Prima const n
extinderea modelului relaional. Extensia se face prin introducerea de noi concepte ca: obiect,
clas, operaor ataat unei proceduri, integrare i generalizare. Operaorii sunt considerai ca
atribute ale unei relaii i permit definirea de noi atribute. Operaorii pot fi coninui n cererile
de interogare exprimate prin procedurile asociate. n acest caz, majoritatea SGBDOO concep
atributele ca obiecte ne aparinnd tipurilor elementare de baz, ceea ce face ca bazele de date
orientate pe obiect s nu respecte restricia impus de prima form normal, deoarece atributele
nu mai sunt atomice. ns dependenele multivoce permit introducerea de forme normale
adecvate.
A doua abordare, se bazeaz pe modele obiectuale n care un obiect este definit fie de o
relaie, fie definit recursiv. Atributele unui obiect pot fi alte obiecte. De exemplu, sintaxa lui
6
Gem Stone integreaz majoritatea funciilor SGBDR i un limbaj orientat pe obiecte pentru a
putea defini schema bazei de date, pentru a manipula obiecte i a codifica aplicaii. Legtura
dintre baza de date i limbajul de programare permite combinarea avantajelor programrii
orientat pe obiecte a BDOO, cu proprietile de integritate i partajare. Legturile dintre obiecte
sunt conservate la nivelul BDOO i permit luarea n considerare a dinamicii obiectelor din lumea
real, stocnd o dat cu obiectele i operaiile pe care le suport.
Arhitectura SGBD
Utilizatorul este o persoan, care de la un terminal are acces la baza de date folosindu-se de
o mulime de programe de aplicaii sau de comenzile unui limbaj de consultare. Accesul la baza
de date se realizeaz fie pornind de la un program de aplicaii redactat ntr-un limbaj (C, java
,Pascal etc.) care accept primitive (secvene de instruciuni de program) ce permit accesul la
baza de date, fie de la un terminal utiliznd un limbaj specific LMD. Pe de alt parte dac LMD
de nivel nalt este utilizat ntr-o manier interactiv atunci acesta se numete limbaj de
interogare ( LI).
Administratorul BD rspunde pe lng activitatea de definire a schemei BD, de creare i
manipulare. Pentru aceasta administratorul BD dispune de un software specializat i are
urmtoarele sarcini:
- concepe schema bazei de date ( o descriere prin intermediul LDD). Schema trebuie s fie
8
1.1.3 Obiective
1.1.3.1 Abstractizarea i structurarea datelor
Prezentarea sub o form abstract i structurat a datelor consituie un important obiectiv al
unui SGBD. Elaborarea de structuri complexe de date nainte de memorarea lor n fiierele bazei
de date este necesar pentru mrirea eficienei acesteia. Structura bazei de date este determinat
de o mulime de scheme (tipuri de date), relaii, legturi ntre date, restricii pe care datele trebuie
s le satisfac i de semantici. Descrierea unei baze de date trebuie judecat pe baza unei
modelri. Un model const dintr-o mulime de concepte ce permit descrierea corect a structurii
bazei de date. Cele mai multe din modele includ i operatori specifici de cutare i actualizare
ntr-o baz de date. Modelele de date bazate pe tipuri de concepte ce descriu baza se clasific n:
modele de date fizice sau de nivel inferior ce cuprind concepte ce descriu datele aa
dintre obiecte sunt uor de reprezentat cu ajutorul modelelor de nivel nalt numite modele
orientate-obiect. Dintre modelele implementate pn n prezent amintim: modele ierarhice,
modele reea, modele relaionale, modele orientate obiect. Primele trei reprezint datele utiliznd
structura de nregistrare, de aceea sunt frecvent numite modele bazate pe nregistrri.
1.1.3.2 Independena fizic i logic
Independena structurilor fizice permite stocarea structurilor de memorare dintr-un univers
real sau conceptual, independent de structurile de date cu scopul realizrii unui acces simplu la
date. Independena logic se refer la posibilitatea de a aduga i a modifica nregistrrii i
scheme fr a rescrie programele existente.
1.1.3.3 Reducerea redundanei i inconsistenei
Crearea fiierelor se face n general n perioade de timp diferite. Aceasta face ca aceleai
informaii s fie replicate n mai multe fiiere. Aceste redundane cresc inutil volumul global al
bazei de date. Timpul de acces crete. Crete i riscul de a avea inconsisten n datele memorate.
Faptul c, copiile ale acelorai date stocate n diverse locuri nu concord ntre ele, deoarece ele
nu au fost actualizate n acelai timp determin inconsistena.
1.1.3.4 Optimizarea accesului la date
SGBD-ul trebuie s fie prevzut cu un procesor de optimizare a operaiilor exprimate de
informaticieni cu ajutorul unui limbaj de manipulare i de neinformaticieni cu ajutorul unui
limbaj neprocedural. Limbajele neprocedurale permit utilizatorilor s descrie ceea ce vor s
obin fr a indica modul cum se obine. Posibilitatea de a manipula date cu ajutorul unor
limbaje neprocedurale i de neinformaticieni, independent de implementarea lor constituie o
generalizare a manipularii datelor.
1.1.3.5 Securitatea i confidenialitatea datelor
Datele trebuie protejate de accese neautorizate i ru intenionate. SGBD-ul trebuie s
gestioneze accesul la informaii i la tipurile de operaii pe care fiecare utilizator le poate efectua
i s valideze aceste operaii. De asemenea se realizeaz o protejare prin parolare i criptare
mpotriva accesului neautorizat.
10
1.1.5 Interfee
SGBD-ul trebuie s suporte interfee i limbaje apropiate pentru fiecare categorie de
utilizatori. n acest paragraf se prezint pe scurt diverse tipuri de interfee pentru un SGBD. n
mod frecvent, exist interfee prietenoase cu utilizatorii pentru interacionare cu baza de date.
Interfeele prietenoase cu utilizatorii pot fi mprite n urmtoarele categorii:
11
13
necesit
ns
mult
munc
de
programare.
HTML,
oferind
deservirea
rapid
eficient
clienilor.
servlet i este adresat cererea i va invoca respectivul servlet, transmindu-i ca parametri dou
obiecte cerere (request) i rspuns (response).
Servletul va utiliza obiectul request pentru a determina cererea fcut de clientul web.
Dup realizarea operaiilor necesare (de exemplu scrierea sau citirea unor date dintr-o baz de
date), servletul va tansmite ctre client un rspuns prin intermediul obiectului response.
Servlet-urile ruleaz pe server.
15
Servlet-urile nu sunt restricionate numai la WEB sau aplicaii server care manipuleaz
cereri HTTP; de asemenea pot fi folosite i pentru alte tipuri de servere. De exemplu, servleturile pot fi inserate n servere de email sau FTP.
ntrebrii pentru cereri GET, sau pot fi trimise la server ntr-o linie separat, pentru cererile
POST.
Citirea datelor formularului din servlet-uri: se poate face simplu prin apelarea metodei
getParameter din clasa HttpServletRequest, furniznd numele parametrului ca argument al
metodei. Metoda getParameter se folosete n acelai mod att pentru date trimise prin GET,
ct i pentru cele trimise prin POST. Servletul tie ce metod pentru cerere a fost folosit.
Valoarea returnat este de tipul String corespunztoare valorii din URL a primei apariii a
numelui parametrului. Stringul este gol dac parametrul nu are nici o valoare i null dac nu
exist un astfel de parametru. Dac parametrul are mai multe valori se apeleaz metoda
getParameterValues care returneaz un vector de stringuri.
Numele parametrilor sunt case sensitive, deci request.getParameter("Param1") i
request.getParameter("param1") nu pot fi interschimbate.
17
Un servlet HTTP pentru a putea realiza o anumit sarcin trebuie sa redefineasc metoda
doGet(). Metoda este apelat de ctre webserver ori de cte ori serverului i este adresat o
cerere HTTP care conine un GET <url>. Metoda este definit n clasa HttpServlet pe lng
metodele: doDelete(), doOptions(), doPost(), doTrace(). Aceste metode doXXX() au doi
parametri, unul de tip ServletRequest i unul de tip ServletResponse. Cele dou clase conin
metode i variabile care permit comunicarea servletului cu webserverul i pot genera excepiile
ServletException i IOException:
publicvoiddoGet(HttpServletRequestreq,HttpServletResponse
res)throwsServletException,IOException{...}
cel
mai
des
prin
extinderea
clasei
HttpServlet.
18
HttpServlet.
20
3. Java-protocol de reea.
Folosesc un protocol de reea (de obicei, TCP/IP) pentru a comunica cu aplicaia JDBC
middleware. Aplicaia JDBC middleware traduce cererile JDBC folosind protocolul de reea n
apeluri de funcii specifice bazelor de date. Sunt cele mai flexibile, deoarece nu necesit
biblioteci de baze de date native pe client i se pot conecta la mai multe baze de date.
4. Java-protocol baz de date.
Implementeaz un protocol de baz de date pentru a comunica direct cu baza de date.
Sunt cele mai rapide. De asemenea, nu necesit biblioteci de baze de date native pe client Sunt
specifice unui singur DBMS.
Pentru gestiunea driverelor folosite ntr-o aplicaie, JDBC API folosete un manager de
drivere reprezentat de o instan a clasei DriverManager.
nregistrarea
driver-ului
JDBC
folosind
gestionarul
de
drivere
DriverManager
2.
3.
4.
procesarea rezultatelor
5.
22
virtuale Java s aloce dinamic, s ncarce i s fac o legtur la clasa specificat ca argument al
metodei. n cazul n care clasa nu este gsit, se arunc o excepie ClassNotFoundException.
Iat un exemplu pentru nregistrarea driver-ului punte JDBC-ODBC:
Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);
execuia
unei
instruciuni
SQL neparametrizate,
se folosete metoda
mulime rezultat
ResultSetrs=instructiune.executeQuery(select*frommyMessages);
Stringsql=insertintomyMessagesvalues(Popescu,Ion,
Craiova);
intraspuns=instructiune.executeUpdate(sql);
Dac se dorete realizarea de apeluri SQL avnd date variabile drept intrare, se va folosi
clasa PreparedStatement care motenete clasa Statement.
PreparedStatementinstructiune=con.prepareStatament(updatemyMessages
setnume=?Whereprenumelike?);
instructiune.setString(1,Popescu);
instructiune.setString(2,Ion);
instructiune.executeUpdate();
24
try{
//
rs.close();
instructiune.close();
}
catch(SQLExceptione){
System.out.println(Eroarelainchidereinterogare:
+e.toString());
}
finally{
try{
if(conexiuneBazadate!=null){
conexiuneBazadate.close();
}
}
catch(SQLExceptione){
System.out.println(Eroarelainchidereconexiune:
+e.toString());
}
}
25
Capitolul II
Tehnologii folosite
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.
La JSP-uri, partea de generare a coninutului dinamic este pstrat separat de cea static
prin utilizarea componentelor JavaBeans externe. Orice modificare a parii statice va fi vizibil
celor ce acceseaz respectivul JSP, ntruct la primirea cererii se recompileaz automat i foarte
repede pagina JSP apoi se execut i rezultatul este trimis.
O data scris, o pagina JSP poate fi stocat pe orice server Web (care are suport pentru
JSP), oricare ar fi platforma pe care se afl acesta, fr a suferi modificari.
Nu exist limitri referitoare la tipul coninutului generat de parile dinamice ale JSPurilor. Acesta poate fi text obisnuit, HTML/DHTML, XML, WML, VRML etc.
JSP-urile sunt mai uor de creat i pot avea functionalitatea aproape a oricrui servlet.
Servleturile sunt utilizate pentru a extinde funcionalitatea serverului Web (servicii de
autentificare, validarea bazelor de date etc.) i pentru comunicarea cu appleturi sau alte aplicaii
Web.
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:
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
29
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 tag-uri definite de utilizator. 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.
tag-uri JSP - spre deosebire de directive, tag-urile depind de fiecare cerere n parte
adresat paginii JSP
<%@ 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
31
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, 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:
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
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 :
session - obiect de tip sesiune pentru clientul solicitat (valabil doar pentru HTTP)
page - instan a clasei create pentru aceast pagin (pentru Java: this)
33
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.
Deci motorul este un programator automat, care va genera cod surs Java. Tot acesta comand
compilarea n cod de octei.
2.1.7 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 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.
2.2 MySQL
2.2.1 Introducere
Un sistem de gestiune a bazelor de date relaionale (SGBDR) este un instrument esenial
n numeroase medii, de la utilizrile mai tradiionale n contexte de afaceri, cercetare si
nvmnt i pn la aplicaiile mai recente, cum ar fi operarea motoarelor de cutare din
Internet. Totui, n ciuda importanei unei baze de date performante pentru gestiunea i accesul la
resursele informaionale, aceasta s-a dovedit a fi dincolo de resursele financiare a numeroase
instituii. Din punct de vedere istoric, sistemele de baze de date au constituit o propunere
costisitoare, firmele distribuitoare percepnd onorarii substaniale, att pentru program ct i
pentru asistena necesar, iar deoarece motoarele de baze de date prezentau frecvent cerine
hardware substaniale pentru a putea rula cu performane ct de ct rezonabile, costurile erau si
mai mari.
n anii din urm, situaia s-a schimbat, att din punct de vedere al echipamentelor, ct si
din acela al programelor. Calculatoarele personale au devenit necostisitoare, dar puternice; pe de
alt parte, a aprut o ntreag micare n direcia scrierii unor sisteme de operare cu performane
ridicate pentru aceste calculatoare, sisteme disponibile la preul unui compact disc ieftin, sau
35
chiar gratuit, prin Internet. Acestea includ numeroase sisteme derivate din BSD UNIX
(FreeBSD, NetBSD, OpenBSD), precum si diferite forme de Linux (RedHat, Caldera,
LinuxPPC, pentru a numi doar cteva).
Producia de sisteme de operare gratuite care s permit utilizarea calculatoarelor personale la maximum de capacitate s-a desfurat n mod concertat cu dezvoltarea unor
instrumente disponibile gratuit, cum ar fi gcc, compilatorul GNU de C, fiind n mare msur
posibil datorit acestora din urm. Aceste eforturi de a pune programele la dispoziia oricrui
doritor au avut ca rezultat ceea ce se numete acum micarea Open Source si au generat multe
programe importante. Cel mai solicitat site FTP din lume, i anume ftp.cdrom.com, ruleaz
FreeBSD. Apache este cel mai folosit server Web din Internet. Alte succese ale iniiativei Open
Source sunt limbajul de scripting de uz general Perl si PHP, un limbaj a crui popularitate este
ntr-o cretere rapid, datorit uurinei cu care permite scrierea paginilor Web dinamice. Toate
acestea contrasteaz cu soluiile de firm", care v oblig s folosii produse costisitoare, create
de fabricani care nici mcar nu furnizeaz codul surs.
Programele de baze de date au devenit si ele mai accesibile. Sistemele de baze de date
precum Postgres i mSQL au devenit disponibile gratuit sau la un pre sczut. Mai recent,
productorii comerciali, precum Informix i Oracle, au nceput s-i ofere programele gratuit
pentru sisteme de operare precum Linux. Totui, aceste din urm produse sunt livrate, n general,
numai n form binar, fr suport, ceea ce le limiteaz utilitatea.
Unul din noii venii n domeniul bazelor de date cu pre sczut sau gratuite este MySQL,
un sistem client/server de gestiune a bazelor de date relaionale originar din Scandinavia.
MySQL include un server SQL, programe client pentru accesul la server, instrumente
administrative i o interfa de programare pentru scrierea propriilor dumneavoastr programe.
Bazele sistemului MySQL au fost puse n 1979, o dat cu instrumentul pentru baze de
date UNIREG, creat de Michael "Monty" Widenius pentru compania suedez TcX. n 1994, TcX
a nceput s caute un server SQL pentru a-l utiliza la dezvoltarea aplicaiilor Web. Compania a
testat unele servere comerciale, dar toate s-au dovedit a fi prea lente pentru tabelele de mari
dimensiuni ale firmei. De asemenea, compania a examinat mSQL, dar acestuia i lipseau anumite
caracteristici obligatorii pentru TcX. n consecin, Monty a nceput s programeze un server
nou. Interfaa de programare era proiectat n mod explicit pentru a fi similar celei folosite de
mSQL, deoarece pentru mSQL erau disponibile numeroase instrumente gratuite, iar prin
36
utilizarea unei interfee similare aceleai instrumente puteau fi folosite pentru MySQL, cu un
efort de portare minim.
n 1995, David Axmark de la Detron HB a nceput s fac presiuni pentru ca TcX s
lanseze MySQL pe Internet. De asemenea, David lucra la documentaie i la a determina MySQL
s construiasc folosind utilitarul GNU configure. MySQL 3.11.1 a fost dat lumii ntregi n 1996,
sub forma de distribuie binar pentru Linux si Solaris, n prezent, MySQL funcioneaz pe mult
mai multe platforme si este disponibil att n form binar, ct i surs.
MySQL nu este un proiect Open Source, deoarece este necesar o licen n anumite
condiii. Totui, MySQL se bucur de o ampl popularitate n comunitatea Open Source,
deoarece termenii de licen nu sunt foarte restrictivi (n esen, MySQL este n general gratuit,
dac nu se dorete s se obin profit prin vnzarea sistemului sau a unor servicii care necesit
utilizarea acestuia).
Popularitatea sistemului MySQL nu este limitat la comunitatea Open Source. Da,
ruleaz pe calculatoare personale (ntr-adevr, o bun parte din programarea cu MySQL are loc
pe sisteme Linux ieftine). Dar MySQL este portabil si ruleaz pe sisteme de operare comerciale
(precum Solaris, Irix si Windows) i pe echipamente care merg pn la servere de ntreprindere.
n plus, performanele sale rivalizeaz cu acelea ale oricrui sistem de baze de date cu care dorii
s l comparai i poate manipula baze de date de mari dimensiuni, cu milioane de nregistrri.
MySQL apare foarte clar n imaginea care se desfoar dinaintea ochilor notri : sisteme
de operare disponibile gratuit, care ruleaz pe echipamente puternice, dar necostisitoare, punnd
la dispoziia unui numr de oameni mai mare ca oricnd o putere substanial de prelucrare a
datelor i alte caracteristici, pe o varietate de sisteme mai larg ca oricnd. Aceast coborre" a
barierelor economice n ceea ce privete prelucrarea automat a datelor pune soluii puternice
pentru baze de date la dispoziia unui numr fr precedent de mare de persoane i instituii.
Instituii care n trecut se mrgineau s viseze la a exploata n folos propriu puterea unui SGBDR
cu performane ridicate au acum aceast posibilitate, la un pre foarte redus.
Utilizarea bazelor de date este tot mai frecvent si la nivel individual. Oameni care nu se
gndeau niciodat c vor folosi baze de date ncep s ia n considerare tot felul de utilizri ale
acestora, din moment ce procurarea unui sistem de baze de date este facil - de exemplu, stocarea
si accesul la rezultatele unor cercetri genealogice, urmrirea si ntreinerea coleciilor de diferite
tipuri (fluturi, mrci potale, cri de joc cu juctori de baseball etc.), asisten n demararea unei
37
Vitez. MySQL este rapid. Programatorii pretind c MySQL este cel mai rapid
sistem de baze de date pe care l putei gsi
Caracteristici. La server se pot conecta mai muli clieni simultan. Clienii pot
folosi mai multe baze de date simultan. Putei obine acces la MySQL n mod
interactiv, folosind numeroase interfee care v permit s introducei interogri i
s vizualizai rezultate: clieni n linie de comand, browsere Web sau clieni X
Window System. De asemenea, este disponibil o varietate de interfee de
programare pentru limbaje precum C, Perl, Java, PHP i Python. Astfel,
utilizatorul poate opta pentru folosirea unor programe client preambalate sau
pentru scrierea propriilor programe client pentru aplicaii personalizate
38
Dar suportul? Bun ntrebare; o baz de date nu este de prea mare folos dac nu se poate
obine asisten n raport cu ea. MySQL este dotat cu un sistem de asisten performant:
Exist o list de coresponden activ, la care se poate nscrie oricine. Aceast list
conine numeroi participani utili, inclusiv dezvoltatorii MySQL. Ca resurs pentru
asisten, muli o gsesc suficient pentru necesitile proprii
Un server SQL. Acesta este motorul care activeaz MySQL si care furnizeaz
accesul la bazele de date
In afara programelor furnizate cu MySQL, MySQL nsui este folosit de ctre numeroase
persoane talentate i capabile, crora le place s scrie programe pentru a-i mbunti
productivitatea i care doresc s pun la dispoziia publicului aceste programe. Rezultatul este c
utilizatorul are acces la o diversitate de instrumente produse de tere pri, care faciliteaz
utilizarea sistemului MySQL sau care extind aria de aciune a acestuia n domenii precum
dezvoltarea siturilor Web.
40
Pentru UNIX si alte platforme non-Windows, serverul MySQL poate fi folosit gratuit,
cu excepia situaiilor cnd se dorete vnzarea serverului sau a altor programe sau
servicii care impun utilizarea acestuia; n aceast situaie, trebuie obinut licen
pentru server. Ideea este c, dac se obine un profit din MySQL, este normal ca
dezvoltatorii sistemului s primeasc o parte din acesta (200 de dolari este o nimica
toat pentru un specialist SGBDR care ajut utilizatorul s obin un profit i exist o
mulime de programe gratuite care se pot procura pentru a folosi eficient sistemul)
Versiunile mai vechi de MySQL sunt disponibile n condiiile licenei publice GNU
(GPL) i pot fi folosite n orice scopuri, fr nici o plat. MySQL 3.20.32a este
disponibil n condiiile GPL
Pentru sistemul de operare avei numeroase opiuni, cum sunt Linux sau una din
variantele BSD gratuite, cum sunt FreeBSD, NetBSD i OpenBSD
Cnd sunt lansate actualizri ale sistemelor de operare sau ale instrumentelor de
dezvoltare, se pot descrca pur i simplu de pe Internet sau se poate procura un
compact disc necostisitor. Acest lucru este valabil chiar si pentru revizuirile
substaniale
Cnd sunt lansate actualizri ale sistemului de operare sau ale instrumentelor,
trebuie pltit din nou, chiar dac acestea nu sunt altceva dect remedii pentru hibe
sau actualizri incrementale de mic importan
Capitolul III
Prezentarea aplicaiei
3.1 Descrierea aplicaiei
3.1.1 Descrierea tabelelor folosite
Aplicaia mea este un site pe tema Website pentru informaii medicale. n acest sens am
implementat o gestiune a pacienilor medicilor de familie dintr-un ora (gestiunea este fcut de
medici fiecare medic i gestioneaz propriii pacieni). Pentru conceperea acestui site am
folosit pe lnga HTML i JavaScript, tehnologia JSP (Java Server Pages) i MySQL. Am ales
JSP pentru c paginile Web ale acestui site sunt dinamice (coninutul lor se modific dinamic) i
MySQL pentru c este cel mai popular server de baze de date la ora actual.
n spatele site-ului se afl o baz de date care conine 3 tabele:
medici
datePacient
registruPacient
idMedic - cmp de tip int care identific medicul la care se afl pacientul
45
ataat pe lng ID-ul su i ID-ul medicului la care aparine. Astfel, perechea (idPacient,
idMedic) identific n mod unic un pacient, mpreun cu medicul acestuia.
Tabelul datePacient conine datele generale ale fiecrui pacient (datele personale), n
timp ce tabelul registruPacient conine registrul fiecrui pacient. n registru medicul i noteaz
diagnosticul pacientului, tratamentul recomandat i eventual cteva observaii. Registrul unui
pacient este completat n urma fiecrei consultaii.
n mai toate paginile site-ului exist forme de introducere a datelor. Datele scrise n
aceste forme sunt validate cu ajutorul JavaScript-ului. Am introdus aceste validri pentru a m
asigura c orice modificare a bazei de date pstreaz consistena acesteia.
pacientului pe care dorete s l tearg. Dup ce ambele sunt completate i validate (validarea
const n faptul c nu trebuie s conin spaii), prin apsarea tastei ENTER sau prin apsarea
butonului Caut se execut cutarea respectivului pacient. Rezultatele cutrii sunt afiate ntro nou pagin, ntr-un tabel.
Dac cutarea nu ntoarce nici un rezultat (adic nu a fost gsit nici un pacient cu numele
i prenumele respective), se afieaz pe ecran un mesaj corespunztor. Dac a fost gsit cel puin
un pacient, se afieaz o nou pagin cu rezultatele cutrii (acestea sunt afiate ntr-un tabel).
Cutarea poate avea ca rezultat mai muli pacieni pentru c un medic poate avea mai muli
pacieni cu acelai nume i acelai prenume. n tabelul rezultatelor sunt afiate datele personale
ale pacienilor gsii.
Pentru a terge un pacient, medicul nu trebuie dect s fac click pe numele pacientului
pe care vrea s l tearg. nainte de tergerea propriu-zis medicul este ntrebat dac dorete
acest lucru (un pacient poate fi ters doar dac a murit sau dac a fost transferat). tergerea
propriu-zis se face prin intermediul unui JSP. Acesta se conecteaz la baza de date i execut un
query de tergere. Dup tergere, aplicaia se ntoarce la pagina cu rezultatele cutrii, dar de
aceast dat pacientul ters nu mai este afiat n tabelul rezultatelor (pagina i face refresh).
Dac cutarea ntoarce un singur rezultat, dup tergerea pacientului aplicaia se ntoarce la
pagina de cutare.
Medicul are la dispozitie o list cu cele dou opiuni. n funcie de opiunea aleas,
medicul trebuie s scrie ntr-un textfield ceea ce caut. Dac cutarea se face dup nume i
prenume, medicul trebuie s tasteze numele pacientului sau numele i prenumele acestuia
separate printr-un spaiu. Dac cutarea se face dup cod numeric personal, medicul trebuie s
tasteze un CNP valid. Datele introduse de medic sunt validate. Dup validare, prin apsarea tastei
47
ENTER sau a butonului de cutare, se execut cutarea in baza de date. Cutarea se face de fapt
ntr-un JSP separat (se execut un SELECT).
Dac n urma cutrii nu a fost gsit nici un rezultat, se afieaz un mesaj corespunztor,
iar dac a fost gsit cel puin un pacient care s corespund criteriului dup care s-a efectuat
cutarea, rezultatele sunt afiate ntr-o nou pagin, ntr-un tabel. n acest tabel sunt afiate datele
personale ale pacienilor gsii. Sub acest tabel este un buton prin apsarea cruia medicul poate
efectua o alt cutare.
49
Fiierele directorului actions sunt paginile JSP care se conecteaz la baza de date i
execut diverse operaii.
Prin intermediul fiierelor JavaScript se valideaz diverse date introduse de medic.
50
numrul portului (8080) editnd i schimbnd poriunea de cod corespunztoare din fiierul
/jakartatomcat/conf/server.xml.
n aceste subdirectoare ale directorului webapps va cuta serverul Tomcat fiiere HTML,
JSP i imaginile asociate unei aplicaii Web. n general, fiecrei aplicaii Web i se atribuie un
drum de context unic de ctre administratorul de sistem. Toate cererile ctre acest drum de
context vor fi direcionate ctre aplicaia Web corespunztoare.
Dac aplicaiei Web i se atribuie drumul de context /examples, atunci URL-ul
http://localhost:8080/examples/index.html va afia fiierul index.html aflat n
directorul jakartatomcat/webapps/examples.
Drumul de context pentru fiecare aplicaie Web este specificat n fiierul server.xml din
directorul jakartatomcat/conf/.
n plus, o aplicaie Web poate fi definit prin specificarea unui drum de context vid. De
exemplu, Tomcat instaleaz aplicaia ROOT ca aplicaie implicit prin asignarea contextului vid.
De exemplu, URL-ul http://localhost://8080/index.html va returna fiierul
index.html din directorul /jakartatomcat/webapps/ROOT.
Apelarea servleturilor utiliznd serverul Tomcat se realizeaz dup urmtorul format
pentru URL:
http://<server>:<port>/<drum_context>/servlet/<nume_servlet>[/<informa
?ii_drum>][?<ir_interogare>]
Identificatorii scrii ntre paranteze unghiulare (<, >) semnific faptul c acetia trebuie
nlocuii. <drum_context> reprezint locul unde se memoreaz aplicaia Web (acesta trebuie s
fie unic). Cuvntul servlet indic serverului Tomcat c este vorba de un servlet i nu o pagina
HTML sau JSP; <nume_servlet> reprezint numele clasei servletului sau numele servletului
(alias); <informa?ii_drum> i <ir_interogare> sunt componente suplimentare pentru un
URL. <informaii_drum> se refer la informaii suplimentare. Acestea pot fi obinute aplicnd
metoda getPathInfo() a obiectului HttpServletRequest. De exemplu, dac se apeleaz
un servlet numit ObineCaleServlet prin URL-ul:
http://localhost:8080/servlet/ObtineCaleServlet/html/public?
name=value
52
utiliznd formatul nume = valoare. irurile nume = valoare din interogare pot fi citite apelnd
pentru
un
obiect
HttpServletRequest
metodele
getParameterNames(),
se
gseasc
directorul:
dir_instalare_Tomcat/webapps/ROOT,
unde
53
BIBLIOGRAFIE
54