UNIVERSITATEA DIN CRAIOVA

Facultatea de Matematică - Informatică
Specializarea Informatică

WEBSITE CU INFORMAŢII MEDICALE

INDRUMĂTOR ŞTIINŢIFIC:
Lect. dr. PETRE BĂZĂVAN
ABSOLVENT:
BOLCU SORIN

Craiova
2006

CUPRINS

CAPITOLUL I..............................................................................................................................................................5
DEZVOLTAREA APLICAŢIILOR 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 Independenţa fizică şi logică................................................................................................................10
1.1.3.3 Reducerea redundanţei şi inconsistenţei..............................................................................................10
1.1.3.4 Optimizarea accesului la date..............................................................................................................10
1.1.3.5 Securitatea şi confidenţialitatea datelor...............................................................................................10
1.1.3.6 Partajabilitatea datelor..........................................................................................................................11
1.1.4 Scheme şi instanţieri...................................................................................................................................11
1.1.5 Interfeţe.......................................................................................................................................................11
1.1.5.1 Interfeţe meniu.....................................................................................................................................12
1.1.5.2 Interfeţe grafice....................................................................................................................................12
1.1.5.3 Interfeţe bazate pe forme.....................................................................................................................12
1.1.5.4 Interfeţe în limbaj natural.....................................................................................................................12
1.1.5.5 Interfeţe pentru utilizatorii parametrici................................................................................................12
1.1.5.6 Interfeţe pentru administratorul BD.....................................................................................................13
1.2 Miniservere (servleturi)...................................................................................................................................14
1.2.1 Introducere..................................................................................................................................................14
1.2.2 Comparaţie CGI – Servlet...........................................................................................................................15
1.2.3 Câteva din capabilităţile servlet-urilor........................................................................................................15
1.2.4 Avantajele servlet-urilor..............................................................................................................................16
1.2.5 Manipularea cererilor făcute 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 Interacţiunea cu clienţii...............................................................................................................................19
2

1.2.8.1 Cereri şi răspunsuri..............................................................................................................................19
1.2.8.2 Deservirea clienţilor.............................................................................................................................20
1.3 Java Database Connectivity - JDBC..............................................................................................................21
1.3.1 Drivere JDBC..............................................................................................................................................21
1.3.2 Accesarea unei baze de date folosind JDBC...............................................................................................22
1.3.2.1 Înregistrarea driver-ului JDBC............................................................................................................22
1.3.2.2 Stabilirea conexiunii către baza de date...............................................................................................23
1.3.2.3 Execuţia unei instrucţiuni SQL............................................................................................................23
1.3.2.4 Procesarea rezultatelor.........................................................................................................................24
1.3.2.5 Închiderea conexiunii la baza de date..................................................................................................24
CAPITOLUL II...........................................................................................................................................................26
TEHNOLOGII FOLOSITE.......................................................................................................................................26
2.1 Tehnologia Java Server Pages.........................................................................................................................26
2.1.1 Pagini Web generate dinamic - un posibil răspuns.....................................................................................26
2.1.2 Ce este JSP?................................................................................................................................................28
2.1.3 Pagini JSP...................................................................................................................................................30
2.1.4 Tipuri de aplicaţii pentru JavaServer Pages................................................................................................33
2.1.5 ASP sau JSP ?..............................................................................................................................................34
2.1.6 Diferenţa dintre servlet, scriptlet şi pagina JSP..........................................................................................34
2.1.7 Concluzii.....................................................................................................................................................34
2.2 MySQL..............................................................................................................................................................35
2.2.1 Introducere..................................................................................................................................................35
2.2.2 De ce să optez pentru MySQL?..................................................................................................................37
2.2.3 Instrumente furnizate cu MySQL...............................................................................................................40
2.2.4 MySQL este gratuit?...................................................................................................................................40
2.2.5 O notă despre licenţa Windows...................................................................................................................41
CAPITOLUL III.........................................................................................................................................................43
PREZENTAREA APLICAŢIEI................................................................................................................................43
3.1 Descrierea aplicaţiei.........................................................................................................................................43
3.1.1 Descrierea tabelelor folosite.......................................................................................................................43
3.1.2 Operaţiile efectuate pe tabele......................................................................................................................46
3.1.2.1 Adăugarea unui nou pacient.................................................................................................................46
3.1.2.2 Ştergerea unui pacient..........................................................................................................................46
3.1.2.3 Căutarea unui pacient...........................................................................................................................47
3.1.2.4 Modificarea datelor unui pacient.........................................................................................................48
3

3.1.2.5 Actualizarea registrului unui pacient...................................................................................................48
3.1.2.6 Vizualizarea listei pacienţilor...............................................................................................................49
3.2 Structura site-ului............................................................................................................................................50
3.3 Rularea aplicaţiei.............................................................................................................................................50

4

Capitolul I
Dezvoltarea aplicaţiilor pentru internet

1.1 Sisteme de gestiune a bazelor de date
O bază de date (BD) este o mulţime structurată de elemente de date şi de legături logice
dintre ele ce descriu un univers real sau conceptual (o întreprindere, o organizaţie, o societate de
asigurări, eveniment etc.), ce pot fi accesate simultan de mai mulţi utilizatori.
Un sistem de gestiune al unei baze de date (SGBD) este un software utilizat pentru
crearea, întreţinerea si exploatarea unei baze de date şi care dă posibilitatea mai multor utilizatori
să aibă acces simultan la datele care o compun.

1.1.1 Istoria sistemelor de gestiune a bazelor de date
Sistemele de gestiune a bazelor de date (SGBD) au o vechime de aproape patru decenii. În
anul 1960 s-a realizat prima dezvoltare a sistemelor de gestiune ale fişierelor (SGF) pentru
memoriile secundare direct accesibile şi partajabile, care a constituit inima unui SGBD. Prima
generare a unui SGBD a fost marcată de separarea descrierii datelor de programele de aplicaţii şi
de apariţia limbajelor de manipulare. Aceste SGBD permit să se caute date grupate în articole, în
structuri arborescente şi au ca obiectiv optimizarea memorării datelor pe suport şi reducerea
timpului de acces. Din această generaţie fac parte IMS, DBMS elaborate de IBM, SOCRATE
elaborat de CII etc.
A doua generaţie de SGBD care a apărut după anul 1970 se bazează pe modelul relaţional
dat de E.Codd vizează simplificarea înţelegerii, optimizarea structurilor de date şi optimizarea
accesului la date pentru utilizatorii externi. Ele oferă limbaje aserţionale bazate pe logică care
specifică datele pe care dorim să le obţinem. Acest sistem dă un mod eficient de structurare bazat
pe teoria normalizării şi determină cel mai bun plan de acces la informaţiile pe care dorim să le
obţinem. La începutul deceniului al IX-lea al secolului XX, termenii de model relaţional, bază
relaţională de date, calcul relaţional, au devenit uzuali în metodologia proiectării şi utilizării
bazelor de date. Această generaţie, a cărei fundamentare teoretică se bazează pe teoria relaţională
a cunoscut cea mai rapidă dezvoltare. Primele sisteme din această generaţie au fost
comercializate după anul 1980. Pentru crearea modelului relaţional al bazelor de date E.F.Codd a
5

sintaxa lui 6 . Modelul relaţional permite realizarea de diferite operaţii algebrice. SGBD-urile relaţionale au fost dezvoltate pentru aplicaţii de gestiune în care datele sunt separate de programe. Limbajele de interogare ale SGBD-urilor furnizează mulţimi de tupluri programelor de aplicaţii care sunt apoi transformate în structuri complexe.primit în anul 1981 premiul Turing pentru informatică. deoarece atributele nu mai sunt atomice. bazele relaţionale de date sunt instanţieri distincte de scheme de relaţii definite anterior din mulţimi de atribute (elemente de date) Cu alte cuvinte. Însă dependenţele multivoce permit introducerea de forme normale adecvate. Operaţorii sunt consideraţi ca atribute ale unei relaţii şi permit definirea de noi atribute. Operaţorii pot fi conţinuţi în cererile de interogare exprimate prin procedurile asociate. La răspândirea rapidă a modelului relaţional au contribuit factorii următori :  omogenitatea reliefată de structurile de date şi de memorare  bazele de date relaţionale pot fi imaginate independent de structura sistemului de  calcul. A doua abordare. ceea ce face ca bazele de date orientate pe obiect să nu respecte restricţia impusă de prima formă normală. Extensia se face prin introducerea de noi concepte ca: obiect. clasă. fie definit recursiv. sisteme multimedia. CAD etc. Mulţimile utilizate cel mai mult în practică sunt tabelele bidimensionale. Prima constă în extinderea modelului relaţional. Aceste sisteme trebuie să integreze sistemele relaţionale de baze de date existente. De exemplu. integrare şi generalizare. gestiunea documentelor. Acestea nu cuprind noţiunile de obiect şi clasă. operaţor ataşat unei proceduri. Sistemele de gestiune a bazelor de date obiectuale (SGBDOO) permit administrarea datelor complexe din domeniile: ingineria software. o bază relaţională de date este un model finit în sensul logicii elementare. care operează cu un formalism exact. În acest caz căutarea şi prelucrarea datelor nu depind de modul de organizare şi memorare a datelor în calculator din punct de vedere matematic. majoritatea SGBDOO concep atributele ca obiecte ne aparţinând tipurilor elementare de bază. În acest caz. Atributele unui obiect pot fi alte obiecte. O a treia generaţie care s-a preconizat după anul 1990 este aceea a bazelor de date obiectuale ( orientate obiect). SGBDOO-urile din generaţia a III-a au fost realizate pe două căi. se bazează pe modele obiectuale în care un obiect este definit fie de o relaţie. Teoria bazelor relaţionale de date devine domeniul de aplicare a logicii matematice şi al algebrei moderne.

1.Gem Stone integrează majoritatea funcţiilor SGBDR şi un limbaj orientat pe obiecte pentru a putea defini schema bazei de date. Dicţionarul de date este dat de o mulţime de scheme şi de legături dintre schemele asociate ale bazei de date. Structura de date este o mulţime de elemente de date. Transpune interogările utilizatorului într-o forma echivalentă optimizată. El constituie 7 . În continuare se prezintă pe scurt funcţiile fiecărui modul din structura SGBD. în vederea determinării celor mai bune strategii de căutare.Definirea schemelor bazei de date (schemei conceptuale) şi a legăturilor dintre ele se efectuează de administratorul BD. LMD permite ca programatorii de aplicaţii şi neinformaticienii să manipuleze date puse în evidenţă de scheme de orice nivel. cu ajutorul unui limbaj de definire a datelor (LDD) prevăzut cu un compilator ce permite crearea dicţionarului de date. pentru a manipula obiecte şi a codifica aplicaţii.Gestionarul de fişiere specifică alocările de memorie pe disc şi structurile de memorare care servesc la reprezentarea informaţiilor pe disc.Gestionarul bazei de date realizează interfaţa dintre programele de aplicaţii sau de consultare şi datele fizice ale bazei de date . Legătura dintre baza de date şi limbajul de programare permite combinarea avantajelor programării orientată pe obiecte a BDOO. Legăturile dintre obiecte sunt conservate la nivelul BDOO şi permit luarea în considerare a dinamicii obiectelor din lumea reală. Astfel la conceperea unei baze de date trebuie să se ţină seama de interfeţele dintre diverse module. . .Precompilatorul LMD (limbaj pentru manipularea datelor) generează coduri obiect ale programelor realizate cu ajutorul LMD. Dicţionarul de date poate fi el însuşi implementat ca o bază de date. cu proprietăţile de integritate şi partajare. de descrierile semnificaţiilor datelor şi a restricţiilor pe care acestea trebuie să le satisfacă. Cele mai multe SGBD asigură un minim de funcţii de bază cu ajutorul cărora sunt dezvoltate alte funcţii. . . fiecare având în cadrul sistemului sarcini specifice. . Anumite funcţii pentru sistemul de baze de date sunt asigurate de nucleul său şi de nucleul sistemului de operare.2 Arhitectura globală a sistemelor de gestiune a bazelor de date Un sistem de gestiune a bazelor de date (SGBD) este compus din module. Schema din figura de mai jos schiţează structura unui SGBD.Procesorul de consultare traduce instrucţiunile limbajului de consultare în instrucţiuni înţelese de gestionarul bazei de date. de legături care există între ele şi de operaţii efectuate cu ele.1. stocând o dată cu obiectele şi operaţiile pe care le suportă.

care de la un terminal are acces la baza de date folosindu-se de o mulţime de programe de aplicaţii sau de comenzile unui limbaj de consultare. Pentru aceasta administratorul BD dispune de un software specializat şi are următoarele sarcini: .Pascal etc.) care acceptă primitive (secvenţe de instrucţiuni de program) ce permit accesul la baza de date. fie de la un terminal utilizînd un limbaj specific LMD. Administratorul BD răspunde pe lîngă activitatea de definire a schemei BD. adică o bază care descrie o altă bază.concepe schema bazei de date ( o descriere prin intermediul LDD). Accesul la baza de date se realizează fie pornind de la un program de aplicaţii redactat într-un limbaj (C. Pe de altă parte dacă LMD de nivel înalt este utilizat într-o manieră interactivă atunci acesta se numeşte limbaj de interogare ( LI). Arhitectura SGBD Utilizatorul este o persoană. Schema trebuie să fie 8 . java .atunci o metabază. de creare şi manipulare.

Cele mai multe din modele includ şi operatori specifici de căutare şi actualizare într-o bază de date.1. El dispune de un software care îi restituie descrierea schemei BD ce este înregistrată în dicţionarul BD. Legăturile 9 .3. Un model constă dintr-o mulţime de concepte ce permit descrierea corectă a structurii bazei de date. relaţii.3 Obiective 1.1 Abstractizarea şi structurarea datelor Prezentarea sub o formă abstractă şi structurată a datelor consituie un important obiectiv al unui SGBD. Structura bazei de date este determinată de o mulţime de scheme (tipuri de date).defineşte strategiile de reluare în caz de incident .) modele logice (conceptuale) sau de nivel înalt orientate pe "înregistrări" sau pe "obiecte" descriu datele pentru clase mari de utilizatori Ele se caracterizează prin flexibilitatea descrierii şi explicitării structurilor şi restricţiilor de date. restricţii pe care datele trebuie să le satisfacă şi de semantici. Subschema permite definirea autorizaţiilor de acces .1. Descrierea unei baze de date trebuie judecată pe baza unei modelări.decide tehnicile de acces şi de implementare fizică .independentă de structura de memorare (stocarea fizică) şi de limbajul în care se descriu aplicaţiile. Elaborarea de structuri complexe de date înainte de memorarea lor în fişierele bazei de date este necesară pentru mărirea eficienţei acesteia. relaţii. El odată cu schema asociază şi restricţiile de integritate şi ce garanteză consitenţa datelor ce sunt înregistrate în BD .realizează în consecinţă modificarea structurii BD SGBD trebuie să permită utilizatorului să genereze versiuni de BD performante ţinând cont de înmulţirea utilizatorilor. 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 aşa  cum sunt memorate (ordinea înregistrărilor etc. entităţi şi obiecte. Entitatea este un obiect fizic sau conceptual care este reprezentat într-o bază de date.stabileşte legăturile SGBD-utilizator prin descrierea subschemelor care sunt derivate din schema BD. legături între date. 1. Modele de date de nivel înalt utilizează concepte de: atribute.

1.3. SGBD-ul trebuie să gestioneze accesul la informaţii şi la tipurile de operaţii pe care fiecare utilizator le poate efectua şi să valideze aceste operaţii. modele relaţionale. independent de structurile de date cu scopul realizării unui acces simplu la date. Timpul de acces creşte. modele orientate obiect. Aceste redundanţe cresc inutil volumul global al bazei de date.3. De asemenea se realizează o protejare prin parolare şi criptare împotriva accesului neautorizat. de aceea sunt frecvent numite modele bazate pe înregistrări. Aceasta face ca aceleaşi informaţii să fie replicate în mai multe fişiere. independent de implementarea lor constituie o generalizare a manipularii datelor.1. deoarece ele nu au fost actualizate în acelaşi timp determină inconsistenţa. Independenţa logică se referă la posibilitatea de a adăuga şi a modifica înregistrării şi scheme fără a rescrie programele existente. Posibilitatea de a manipula date cu ajutorul unor limbaje neprocedurale şi de neinformaticieni.1. Limbajele neprocedurale permit utilizatorilor să descrie ceea ce vor să obţină fără a indica modul cum se obţine. Dintre modelele implementate până în prezent amintim: modele ierarhice. Faptul că.1.2 Independenţa fizică şi logică Independenţa structurilor fizice permite stocarea structurilor de memorare dintr-un univers real sau conceptual.3.1. 10 .3.dintre obiecte sunt uşor de reprezentat cu ajutorul modelelor de nivel înalt numite modele orientate-obiect. Creşte şi riscul de a avea inconsistenţă în datele memorate.5 Securitatea şi confidenţialitatea datelor Datele trebuie protejate de accese neautorizate şi rău intenţionate. modele reţea.3 Reducerea redundanţei şi inconsistenţei Crearea fişierelor se face în general în perioade de timp diferite. 1. Primele trei reprezintă datele utilizând structura de înregistrare. copiile ale aceloraşi date stocate în diverse locuri nu concordă între ele. 1.4 Optimizarea accesului la date SGBD-ul trebuie să fie prevăzut cu un procesor de optimizare a operaţiilor exprimate de informaticieni cu ajutorul unui limbaj de manipulare şi de neinformaticieni cu ajutorul unui limbaj neprocedural. 1.

1. Descrierea bazei de date formează schema bazei de date.5 Interfeţe SGBD-ul trebuie să suporte interfeţe şi limbaje apropiate pentru fiecare categorie de utilizatori. Interfeţele prietenoase cu utilizatorii pot fi împărţite în următoarele categorii: 11 .1. vom schimba o instanţiere a BD cu o altă instanţiere. Tranzacţia este o unitate de prelucrare care transformă o instanţă consistentă a bazei în altă instanţă consitentă. În acest paragraf se prezintă pe scurt diverse tipuri de interfeţe pentru un SGBD. În orice moment când vom insera sau şterge valori. O diagramă a schemei afişează numai anumite aspecte ale schemei ca: numele relaţiei. Totuşi în diagrama schemei BD nu sunt specificate tipul fiecărui element de date şi alte tipuri de restricţii.1. Vom numi instanţiere iniţială a BD când datele sunt prima dată încărcate. 1.1. există interfeţe prietenoase cu utilizatorii pentru interacţionare cu baza de date.6 Partajabilitatea datelor Partajabilitatea datelor determină folosirea bazei simultan de mai multe aplicaţii. Datele actuale dintr-o BD pot fi schimbate relativ frecvent. Datele dintr-o BD la un anumit moment de timp formează o instanţiere a BD (ocurenţă sau stare). 1. Cele mai multe modele cuprind anumite convenţii şi metareguli pe baza cărora se construiesc schemele bazei de date care sunt numite diagrame schemă. elementele de date şi anumite tipuri de restricţii. Când definim o nouă BD noi vom specifica schema BD. Asigură gestiunea tranzacţiilor şi a prelucrărilor concurente. SGBD-ul trebuie să paralelizeze sau să detecteze cazurile de interblocare (când o tranzacţie aşteaptă date deţinute de alte tranzacţii). Distincţia între schema bazei de date şi instanţierea bazei de date este foarte importantă. În acest moment BD este vidă deoarece nu are nici o dată. O schemă a BD este specificată în timpul proiectării.4 Scheme şi instanţieri În orice model este important să se facă o distincţie între descrierea unei BD şi BD însăşi. În mod frecvent.3. Fiecare element din diagrama schemei se numeşte componentă constructivă (constructor de schemă ) a schemei. care corespunde unei scheme.

pe baza căruia utilizatorul îşi formulează cererea.5.1.2 Interfeţe grafice O interfaţă grafică va afişa o schemă pentru utilizator sub forma unei diagrame. Utilizatorul poate să obţină sub o anumită formă toate înregistrările sau noi date. 12 . proiectează şi implementează o interfaţă specială pentru o clasă cunoscută de utilizatori. ca de pildă funcţionarii de bancă au la dispoziţie o mulţime de aplicaţii care sunt repetate de multe ori. Frecvent se utilizează o mulţime mică de abrevieri ale comenzilor cu scopul de a minimiza numărul de taste apăsate la fiecare cerere. Multe din SGBD-uri au limbaje speciale numite limbaje de specificare a formelor care ajută programatorii să-şi specifice cererile. Dacă interpretarea este realizată. Întrebarea este compusă pas cu pas prin precizarea opţiunilor din lista meniului care este afişată de sistem. 1. În multe cazuri. în caz contrar dialogul este început cu utilizatorul pentru a clarifica întrebarea. 1. 1.5 Interfeţe pentru utilizatorii parametrici Utilizatorii parametrici. interfaţa generează o întrebare la nivel înalt care corespunde cererii în limbaj natural admisă de SGBD pentru prelucrare. în mod obişnuit are o schemă proprie care este ca o schemă conceptuală a bazei de date.1 Interfeţe meniu Aceste interfeţe prezintă utilizatorului o listă de opţiuni numită meniu. pentru a puncta anumite părţi ale afişării diagramei schemelor. Utilizatorul poate specifica întrebarea prin manipularea diagramei. interfaţa grafică poate fi combinată cu o interfaţă bazată pe meniu. Meniurile conduc pe de o parte la nevoia de a memora comenzile specifice şi a sintaxei limbajului. Astfel de interfeţe pot fi numite limbaje de comandă. Analiştii de sistem şi programatorii.5.3 Interfeţe bazate pe forme O interfaţă bazată pe forme afişează o formă pentru utilizator. pe de altă parte. 1.1.1. Cele mai multe interfeţe grafice vor utiliza un dispozitiv de punctare cum ar fi mouse-ul sau stiloul luminos.1.1. în mod frecvent.5. Interfaţa într-un limbaj natural.5.5.4 Interfeţe în limbaj natural Aceste interfeţe acceptă cererile scrise în limba engleză sau într-un alt limbaj care este înţeles.1. Interfaţa face referinţă la cuvintele schemei care fac parte dintr-o mulţime de cuvinte standard ce compun întrebarea.

1. setarea parametrilor sistemului.5.6 Interfeţe pentru administratorul BD Cele mai multe SGBD-uri au posibilitatea de a crea comenzi privilegiate care vor fi utilizate numai de administratorul BD. schimbă schema şi organizează structura de memorare a fişierelor BD. 13 . de asemenea garantează autorizarea. Aceste interfeţe includ comenzi pentru creare.1.

Înaintea servleturilor partea de server a aplicaţiilor client/server era ajutată de scripturi CGI (Common Gateway Interface). Paginile statice HTML au fost schimbate cu pagini generate în mod dinamic. Un servlet reprezintă o componentă web. fiind poziţionate între cererile care vin de la browser sau de la un client HTTP şi bazele de date sau aplicaţii de pe serverul de HTTP. oferind deservirea rapidă şi eficientă a clienţilor. Servlet-urile comunică cu clienţii pe baza paradigmei cerere – răspuns. Servlet-urile sunt clase Java. Un container poate exista în cadrul unui server web sau poate fi adăugat ulterior utilizând mecanismul de extensie al serverului. Exemplu: Un program client (web browser) accesează un server web şi transmite o cerere HTTP (poate fi de exemplu un form completat cu datele unei persoane). CGI permitea şi evaluarea formularelor trimise de către clienţi. Pe partea serverelor s-au introdus servleturile. Crearea acestor pagini necesită însă multă muncă de programare. ce oferă independenţă de platformă şi sunt încărcate şi executate dinamic de către server. Servletul este un mecanism de generare a acestor pagini dinamice HTML. Această cerere este preluată de către serverul de web şi în cazul în care este destinată unui servlet. Containerul de servleturi este o componentă ce oferă servicii de reţea prin intermediul cărora servleturile primesc şi transmit cereri şi răspunsuri de la şi către clienţi. Acest model cerere – răspuns se bazează de obicei pe protocolul Hypertext Transport Protocol (HTTP). Java cu ajutorul apleturilor ajută la crearea aplicaţiilor pe partea clientilor.2 Miniservere (servleturi) 1.1 Introducere WEB-ul a trecut printr-o transformare rapidă. gestionată de un container.2. Avantajul acestor pagini este că informaţia conţinută în ele poate reflecta de exemplu conţinutul unei magazii cu stocul în continuă schimbare. care generează conţinut dinamic. Containerul de servleturi înmagazinează servleturile şi este responsabil pentru gestionarea acestora. Containerul determină cărui 14 . Servlet-urile sunt programe care rulează pe servere WEB. Servleturile sunt tehnologie Java care răspund programării CGI.1. este transmisă mai departe către containerul de servleturi.

1.servlet îi este adresată cererea şi va invoca respectivul servlet. în format binar (imagini GIF). trimit documentul inapoi la client: documentul poate fi trimis în format Text (HTML). pot citi datele trimise de useri: aceste date sunt. însă servletul se rulează pe un fir de execuţie separat al procesului web server. aceasta implică inserarea informaţiei într-o pagină HTML 3. pot formata rezultatele într-un document: în cele mai multe cazuri. pot seta parametrii HTTP de răspuns: se informează browser-ul ce tip de document este returnat (HTML. Servletul face acelaşi lucru ca un script CGI. servletul va tansmite către client un răspuns prin intermediul obiectului response. Pe lângă eficienţă servleturile mai au o caracteristică importantă. Servlet-urile rulează pe server. introduse într-un formular WEB sau pot proveni dintr-un applet Java sau de la un program client de HTTP 2. transmiţîndu-i ca parametri două obiecte cerere (request) şi răspuns (response). se setează “cookies” etc. Crearea unui proces nou este o operaţie costisitoare din punctul de vedere al sistemului de operare. Crearea unui fir de execuţie este mult mai eficientă decât crearea unui proces nou. După realizarea operaţiilor necesare (de exemplu scrierea sau citirea unor date dintr-o bază de date). În cazul utilizării CGI pentru deservirea unui client se crează un proces nou în care se execută scriptul CGI. Servletul va utiliza obiectul request pentru a determina cererea făcută de clientul web.3 Câteva din capabilităţile servlet-urilor Principalele capabilităţi ale servlet-urilor sunt: 1. de exemplu).2. sau chiar în format compresat 15 .2 Comparaţie CGI – Servlet Scripturile CGI sunt mai puţin eficiente decât servleturile. securitatea. 4. 1.2. Firele de execuţie sunt create de către maşina virtuală Java şi posedă toate facilităţiile oferite de aceasta din punctul de vedere al securităţii. Scriptul generează pagina HTML şi trimite clientului. de obicei.

Portabilitate Servlet-urile sunt scrise în Java şi pot rula pe servere ca Apache. Servlet-urile sunt acum parte din Java 2 Platform. partea după semnul întrebarii este cunoscută ca “date formular” sau “date interogare” şi este folosită pentru a duce informaţia dintr-o pagină WEB la un program de pe server. Mai multe servlet-uri pot împărţi date.2. 1.Servlet-urile nu sunt restricţionate numai la WEB sau aplicaţii server care manipulează cereri HTTP.4 Avantajele servlet-urilor 1. pentru fiecare cerere HTTP se începe un nou proces. 2. De exemplu. 3. Când un program CGI a terminat manipularea unei cereri. dar o singură copie a clasei servlet. Enterprise Edition (J2EE). programul se termină. Microsoft Internet Information Server (IIS). rezolvarea a N cereri simultane pentru acelaşi program se realizează prin încărcarea codului programului CGI de N– ori. maşina virtuală Java rămâne în execuţie şi fiecare cerere este rezolvată printr-un thread. De exemplu într-un URL de forma http://localhost/path? user=Mihai&student=yes&bursier=no. În cazul servlet-urilor există N thread-uri. fără vreo schimabare a codului. În CGI. făcând mult mai uşoară conectarea cu baza de date. Datele formularului pot fi ataşate la sfârşitul URL-ului după semnul 16 . 1. IBM WebSphere sau StarNine WebStar.2. Putere Servlet-urile pot comunica direct cu serverul WEB. servleturile pot fi inserate în servere de email sau FTP. Servleturile rămân în memorie chiar şi după ce răspunsul a fost complet. nu printr-un proces al sistemul de operare ca în cazul CGI. În cazul servlet-urilor. de asemenea pot fi folosite şi pentru alte tipuri de servere. Eficienţa În programarea CGI.5 Manipularea cererilor făcute de utilizatori Una dintre motivaţiile pentru crearea paginilor WEB dinamice este ca rezultatul să se bazeze pe datele introduse de user.

getParameter("Param1") şi request.6 Anatomia unui servlet HTTP Pachetul javax. Conţine API-uri pentru prelucrarea cererilor şi deservirea clienţilor. Numele parametrilor sunt “case sensitive”. Metoda getParameter se foloseşte în acelaşi mod atât pentru date trimise prin GET.http conţine implementarea servleturilor utilizate în cazul webserverelor pentru generarea paginilor HTML.servlet.întrebării pentru cereri GET. Servletul ştie ce metodă pentru cerere a fost folosită. Dacă parametrul are mai multe valori se apelează metoda getParameterValues care returnează un vector de stringuri. furnizând numele parametrului ca argument al metodei. pentru cererile POST.2. Valoarea returnată este de tipul String corespunzătoare valorii din URL a primei apariţii a numelui parametrului. Stringul este gol dacă parametrul nu are nici o valoare şi null dacă nu există un astfel de parametru. Un alt pachet. cât şi pentru cele trimise prin POST. 1. javax.servlet oferă un cadru generic pentru crearea serverelor. sau pot fi trimise la server într-o linie separată.getParameter("param1") nu pot fi interschimbate. Citirea datelor formularului din servlet-uri: se poate face simplu prin apelarea metodei getParameter din clasa HttpServletRequest. deci request. 17 .

servlet. Astfel cu ajutorul metodei setContentType( String) se stabileşte tipul datelor care se trimit înapoi. O altă metodă importantă este getWriter(). care este un flux de ieşire prin care se trimite răspunsul.http Pachetul javax. cel mai des prin extinderea clasei HttpServlet. text/plain. unul de tip ServletRequest şi unul de tip ServletResponse. doTrace(). 1..Un servlet HTTP pentru a putea realiza o anumită sarcină trebuie sa redefinească metoda doGet(). Conţine informaţii referitoare la calculatorul căruia trebuie sa răspundă. Metoda este apelată de către webserver ori de câte ori serverului îi este adresată o cerere HTTP care conţine un GET <url>. Dintre tipurile posibile: text/html. Metoda returnează o referinţă de tip PrintWriter.servlet oferă clase şi interfeţe pentru scrierea servleturilor. IOException {. În momentul când un servlet acceptă conexiunea cu un client. Această metodă se utilizează dacă servletul trebuie să trimită un conţinut de tip text şi metoda getOutputStream() se utilizează dacă se trimit date binare..7 Arhitectura pachetelor javax. doPost(). Cele două clase conţin metode şi variabile care permit comunicarea servletului cu webserverul şi pot genera excepţiile ServletException şi IOException: public void doGet(HttpServletRequest req. Toate servleturile implementează această interfaţă. Principala interfaţă definită în acest pachet este interfaţa Servlet.2. Interfaţa Servlet declară metode care gestionează comunicările cu toţi clienţii. doOptions().} Clasa ServletRequest conţine toate informaţiile necesare servletului pentru a înţelege cererea şi a putea răspunde la aceasta. Clasa ServletResponse conţine metode care permit crearea şi trimiterea răspunsului. HttpServletResponse res) throws ServletException. Aceste metode doXXX() au doi parametri.servlet şi javax. Metoda este definită în clasa HttpServlet pe lângă metodele: doDelete(). primeşte şi două obiecte: 18 .

1. care este responsabil pentru comunicarea client server  un obiect ServletResponse. numele hostului de la care s-a acceptat cererea  un flux de intrare ServletInputStream. Servletul utilizează acest flux de intrare pentru citirea datelor de la clienţi . care este responsabil pentru comunicarea inversă server . un obiect ServletRequest. protocolul utilizat de către client.2.pentru tratarea cererilor GET.1 Cereri şi răspunsuri Tratarea cererilor GET şi POST se face cu ajutorul următoarelor metode:  doGet .pentru tratarea cererilor PUT 19 .8.8 Interacţiunea cu clienţii Un servlet HTTP tratează cererile clienţilor cu ajutorul metodei service(). Clienţii utilizează metode ca PUT şi POST ale protocolului HTTP Interfaţa ServletResponse declară metode prin care servletul poate trimite răspunsuri la cererile clientilor. Metoda service() este cea care apelează metoda doGet() pentru prelucrarea cererii.  permite stabilirea lungimii răspunsului precum şi tipul MIME al acestuia  un flux de iesire ServletOutputStream şi unul Writer prin care servletul va trimite raspunsul la cerere 1.client Interfaţa ServletRequest permite servletului următoarele:  informaţii despre parametrii primiţi de la client.pentru tratarea cererilor POST  doPut .2. GET condiţionat şi HEAD  doPost .

 doDelete . Dacă dorim deservirea unui singur client la un moment dat. 20 . atunci servletul nostru trebuie să implementeze interfaţa SingleThreadModel pe lângă extinderea clasei HttpServlet. Implementarea acestei interfeţe nu necesită scrierea unor metode suplimentare şi asigură deservirea unui singur client la un moment dat.2 Deservirea clienţilor Servleturile sunt capabile pentru deservirea clienţilor în mod concurent.pentru tratarea cererilor DELETE Implicit aceste metode returnează eroarea BAD_REQUEST (400) afişată de către aplicaţia client (programul de navigare).8. 1.2. Dacă deservirea clienţilor necesită accesul unor resurse partajate atunci accesul acestor resurse trebuie sincronizate.

1.3.sql care oferă capabilităţi adiţionale pe partea de server Observaţie: Aplicaţiile care utilizează baze de date trebuie să includă pachetul java. Pentru a utiliza API-ul JDBC cu un DBMS particular este nevoie de un driver JDBC care să medieze între tehnologia JDBC şi baza de date. Java-API nativ: Folosesc interfaţa JNI pentru a face apeluri direct la API-ul unei baze de date locale. necesită instalarea şi configurarea bibliotecilor client bază de date native pe maşina client. 3. 21 .sql 2.JdbcOdbcDriver. Sunt mai rapide decît tipul 1. java. de asemenea.sql.0 şi conţine două pachete: 1. Puntea traduce metodele JDBC în apeluri de funcţii ODBC. Funcţionează doar pentru sitemele de operare Microsoft Windows şi Sun Solaris. 2. Puntea JDBC-ODBC: Este reprezentat de clasa sun. şi nu pachetul care conţine implementarea driver-ului particular folosit.3 Java Database Connectivity .JDBC 1. Există patru tipuri de drivere JDBC: 1. Driverul poate fi scris numai în Java sau într-o combinaţie de Java şi metode native JNI (Java Native Interface). O funcţie foarte importantă a JDBC este faptul că lucrează cu instrucţiuni SQL. şi necesită ca bibliotecile ODBC native şi driverele ODBC să fie instalate şi configurate pentru fiecare client ce utilizează un driver de acest tip. javax. Totuşi calea spre pachetul conţinând driverul trebuie să fie prezentă în CLASSPATH.1 Drivere JDBC JDBC (Java DataBase Connectivity) reprezintă API-ul oferit de Sun Microsystems pentru dezvoltarea de aplicaţii Java care accesează bazele de date gestionate de diverse DBMS-uri (Sisteme de gestiune a bazelor de date). Dar.jdbc. Ultima specificaţie JDBC existentă are vers.odbc.

3. execuţia unei instrucţiuni SQL 4.1 Înregistrarea driver-ului JDBC Un driver JDBC este înregistrat automat de managerul de drivere atunci când clasa driver este încărcată dinamic prin meoda Class.2 Accesarea unei baze de date folosind JDBC În ODBC. procesarea rezultatelor 5. Pentru a ne conecta la o baza de date trebuie urmaţi paşii: 1. JDBC API foloseşte un manager de drivere reprezentat de o instanţă a clasei DriverManager. Sunt cele mai rapide. De asemenea. Java-protocol bază de date. Pentru gestiunea driverelor folosite într-o aplicaţie. Folosesc un protocol de reţea (de obicei.2. Aplicaţia JDBC middleware traduce cererile JDBC folosind protocolul de reţea în apeluri de funcţii specifice bazelor de date. nu necesită biblioteci de baze de date native pe client Sunt specifice unui singur DBMS. 4. stabilirea unei conexiuni către baza de date 3. Implementează un protocol de bază de date pentru a comunica direct cu baza de date. închiderea conexiunii către baza de date 1. Metoda este statică şi permite maşinii 22 . înregistrarea driver-ului JDBC folosind gestionarul de drivere DriverManager 2.3. Java-protocol de reţea.3. 1. Sunt cele mai flexibile. identificate printr-un nume (DSN – Data Source Name) şi accesibile printr-un driver ODBC corespunzător. deoarece nu necesită biblioteci de baze de date native pe client şi se pot conecta la mai multe baze de date. bazele de date sunt reprezentate ca surse de date. TCP/IP) pentru a comunica cu aplicaţia JDBC middleware.forName().

virtuale Java să aloce dinamic. Sintaxa standard pentru URL-ul unei baze de date este: jdbc<subprotocol>:<nume> Prima parte arată că se foloseşte JDBC pentru stabilirea conexiunii. numeUtilizator. să încarce şi să facă o legătură la clasa specificată ca argument al metodei.getConnection(“jdbc:odbc:myMessages”. Iată un exemplu pentru înregistrarea driver-ului punte JDBC-ODBC: Class.3.3.JdbcOdbcDriver”).2 Stabilirea conexiunii către baza de date O conexiune este identificată printr-un URL specific. se foloseşte metoda statică getConnection() din clasa DriverManager: Connection con = DriverManager. Este cazul instrucţiunilor SELECT 23 . atunci secţiunea <nume> va fi de forma //numeHost:port/numeDB Pentru stabilirea unei conexiuni la o bază de date.getConnection(“jdbc:odbc:myMessages”). iar <nume> este un nume logic sau alias care corespunde bazei de date fizice.2. 1.2. Se poate aplica apoi una din următoarele metode: o executeQuery() – pentru interogările care returnează mulţimi rezultat (instanţe ale clasei ResultSet). se foloseşte metoda createStatement() aplicată unui obiect Connection. 1.odbc.3 Execuţia unei instrucţiuni SQL Pentru execuţia unei instrucţiuni SQL neparametrizate. sau dacă baza de date necesită autentificare: Connection con = DriverManager. Dacă baza de date este accesată prin Internet.Parola).createStatement().jdbc. <subprotocol> este un nume de driver valid. Statement instructiune = con. În cazul în care clasa nu este găsită. se aruncă o excepţie ClassNotFoundException.forName(“sun.

instructiune. Dacă se doreşte realizarea de apeluri SQL având date variabile drept intrare. DELETE.out. ”Ion”.getString(“prenume”)+”. ”+rs. cât şi pentru interogările SQL DDL de genul CREATE TABLE.next()){  System.getString(“nume”) +”.println(rs. DROP TABLE.executeQuery (“select * from myMessages”). fie este 0 execute() – se utilizează atunci când se obţine mai mult de o o mulţime rezultat ResultSet rs= instructiune. instructiune. PreparedStatement instructiune=con.”+rs.3.executeUpdate() – pentru operaţiile de actualizare INSERT.”Popescu”).prepareStatament(“update myMessages set nume=? Where prenume like ?”).setString(2. String sql=”insert into myMessages values (“Popescu”. } 24 . o UPDATE. ALTER TABLE.4 Procesarea rezultatelor Pentru parcurgerea simplă a înregistrărilor unui obiect din clasa ResultSet putem folosi metoda next().  ”Craiova”)”. instructiune. while(rs.”Ion”).executeUpdate(sql). se va folosi clasa PreparedStatement care moşteneşte clasa Statement.getString(“oras”)).2. Metoda returnează un întreg care reprezintă fie numărul înregistrării afectate. 1. int raspuns=instructiune.executeUpdate().setString(1.

println(“Eroare la inchidere conexiune:  ”+e. } catch(SQLException e){ System.close().toString()).5 Închiderea conexiunii la baza de date Se recomandă ca după procesarea datelor.println(“Eroare la inchidere interogare:  ”+e. să se închidă explicit conexiunea către baza de date.close().1. instructiune. } } 25 .3. apoi se va închide obiecul Connection prin apelarea metodei close() a acestuia: try{ //… rs.toString()).out.2. } } catch(SQLException e){ System.out. Întâi se vor închide obiectele Statement şi ResultSet folosind metodelor lor close().close(). } finally{ try{ if(conexiuneBazadate!=null) { conexiuneBazadate.

Înainte de introducerea CGI Web-ul era. Apoi a apărut CGI-ul şi ISAPI-ul. 26 . de fapt.?. apărută la începutul anului 1995. şi aşa a fost! Apoi Microsoft a zis: "Să fie ASP!". Netscape..Capitolul II Tehnologii folosite 2. şi aşa a fost! Şi aplicaţiile au prins viaţă.1. Apoi Duke a zis: "Să fie Servlet-uri!". SSI-uri şi plug-in-uri!".1 Pagini Web generate dinamic . Şi Microsoft a zis: "Să fie IDC!". Oracle. şi aşa a fost! Şi a luat Duke Servlet API a vorbit cu IBM. Odată cu apariţia acestuia. a transformat Web-ul dintr-un simplu sistem de aducere de fişiere într-o platformă în care diferitele organizaţii pot instala aplicaţii Web de mare utilitate. Şi Web-ul era static şi întunecat.. serverele de Web au putut fi conectate pentru a procesa informaţia în mod dinamic. Weblogic şi alţii şi a făcut JSP. folosit pentru distribuirea de documente statice: text şi imagini.1 Tehnologia Java Server Pages 2. Şi s-a făcut lumină!.un posibil răspuns La început a fost Web-ul.. şi aşa a fost! Şi alţii au adăugat: "Să fie APIuri.." Programarea CGI (Common Gateway Interface).

Producătorii de servere Web au încercat să simplifice dezvoltarea de aplicaţii Web prin furnizarea de "plug-in"-uri şi API-uri pentru servere. Alte soluţii există. Uneori sunt necesare 27 . ar trebui să editeze şi să recompileze servlet-ul chiar dacă modul de funcţionare ce stă în spatele acestuia rămâne acelaşi. industria de software se îndreaptă rapid către construirea de aplicaţii multi-tier folosind clienţi de tip browser. programatorul trebuie doar să schimbe un program aflat pe server şi nu câteva sute de aplicaţii client instalate). Aceste trei activităţi diferă foarte mult una de cealaltă şi necesită diverse aptitudini de programare. mare parte din resursele serverului Web erau astfel epuizate. el preia cereri HTTP de la browser-ul Web şi generează dinamic un răspuns HTML (sau XML). Soluţia incipientă reprezentată de CGI avea serioase probleme de scalabilitate: fiecare cerere CGI lansa un nou proces pe server. pentru execuţia unor calcule în funcţie de specificul aplicaţiei sau pentru comunicarea cu surse de date de nivel third-tier. Ca urmare. Efectul imediat: încetinirea aplicaţiei cu efecte deosebit de neplăcute pentru utilizator. al fundalului şi al frame-urilor) şi mai puţin de sursa şi de manipularea datelor dinamice necesare pentru a aduce pagina în forma cerută de client. de exemplu. dar nu sunt uşor de folosit de către proiectantul obişnuit de pagini de Web. Dacă un Web designer sau un Web master doreşte să schimbe look-ul paginii respective. Aceste soluţii sunt specifice fiecărui server şi nu rezolvă problema în cazul unor platforme diferite. Acestea includ accesul nelimitat al clienţilor. De exemplu. Conform statisticilor recente 22% din serverele Web sunt bazate pe NT . iar dacă mai mulţi utilizatori făceau acest lucru simultan. permite folosirea limbajului Java ca mediu de dezvoltare pentru crearea dinamică a paginilor Web.ceea ce înseamnă că restul de 78% are nevoie de altceva. tehnologia Active Server Pages (ASP) facilitează crearea de pagini de Web dinamice. Întreaga pagină Web trebuie astfel să fie conţinută în servlet-ul Java. Proiectanţii Web sunt preocupaţi în special de aspectele estetice ale paginii (amplasarea şi aspectul imaginilor. instalarea şi menţinerea facilă a aplicaţiilor (pentru a face modificări. însă funcţionează doar cu servere Microsoft: Internet Information Server sau Personal Web Server. Tehnologia Java Servlets (specificată de API-ul Servlet de la Sun). Un servlet Java este un program ce rulează pe server (spre deosebire de applet-uri ce rulează în browser).Aproape că nu există limite pentru posibilităţile de folosire de clienţi Web în diverse aplicaţii. Proiectele ce folosesc clienţi de tip browser au câteva avantaje asupra modelului tradiţional client/server.

În cazul servleturilor. În loc să scriem cod Java care să genereze pagini Web. fiind o alternativă la CGI-urile clasice (Common Gateway Interface). Ar fi deci foarte util să se permită proiectanţilor Web accesul la aceste informaţii fără a trebui să înveţe să scrie servlet-uri. Sun a definit specificaţia JavaServer Pages ce permite ca Java să devină limbaj de scripting pe partea de server şi mai mult decât atât.1. JSP este o extensie a servleturilor. Tehnologia JSP facilitează crearea conţinutului dinamic pe partea de server a paginilor Web. Pentru a oferi proiectanţilor acces la API-ul Servlet fără a trece prin cele trei faze menţionate anterior cât şi pentru a veni cu o soluţie pentru problemele deja existente. se pot crea noi facilităţi pentru cei care se ocupă de partea de web design.vom crea pagini Web care să conţină elemente dinamice. Astfel. 28 . să le compileze şi să le instaleze pe serverele de Web respective. orice modificare minoră referitoare la designul paginii Web implică recompilarea respectivului servlet. Un avantaj important al JSP-urilor faţă de servleturi este faptul că se separă continutul HTML static de cel dinamic. Este asemănătoare cu ASP (Active Server Pages) de pe platforma Microsoft Windows şi cu PHP (PHP:Hypertext Processor). JSP este o soluţie Java pentru programarea pe partea de server. se creează un servlet din respectiva pagină şi acesta se execută. 2. JSP extinde limbajul HTML oferind posibilitatea inserării de secvenţe de cod Java prin intermediul unor taguri speciale. iar rezultatul este trimis ca raspuns la cererea primita. JSP integrează numeroase tehnologii Java cum ar fi servleturile. În acelaşi timp. Programatorul are posibilitatea de a crea noi taguri şi componente Java Beans cu semnificaţiile indicate de acesta. JSP combină HTML şi XML cu servleturile şi tehnologia JavaBeans pentru a crea un mediu destul de productiv pentru dezvoltarea de situri Web independente de platforma şi de o înaltă performanţă. care este independent de platforma.informaţii despre cererea browser-ului client (cum ar fi tipul acestuia) pentru a se returna un conţinut adecvat care să beneficieze de toate avantajele acestuia.Atunci când se primeşte o cerere de pagina JSP.2 Ce este JSP? Java Server Pages (JSP) este una dintre cele mai puternice tehnologii Web şi este uşor de utilizat. JavaBeans şi JDBC.

Sun a încercat să depăşească limitările soluţiilor actuale pentru generarea de pagini cu conţinut dinamic prin dezvoltarea unei tehnologii care:  să funcţioneze pe orice server Web sau de aplicaţii  să separe logica ce stă în spatele aplicaţiei de aspectul paginii  să permită dezvoltare şi testare rapidă  să simplifice procesul de dezvoltare de aplicaţii interactive Web Tehnologia JSP a fost creată să satisfacă aceste cerinţe. XHTML şi XML. fără a suferi modificari. DHTML. Astfel. JSP-urile sunt mai uşor de creat şi pot avea functionalitatea aproape a oricărui servlet. Acesta poate fi text obisnuit. Logica ce stă în spatele generării conţinutului este cuprinsă în 29 . O data scrisă. sisteme tranzacţionale şi unelte de dezvoltare. Servleturile sunt utilizate pentru a extinde funcţionalitatea serverului Web (servicii de autentificare. servere de aplicaţii. WML. procesul dezvoltării de pagini de Web dinamice este accelerat de către JSP din următoarele considerente: Separarea generării conţinutului de prezentare Prin tehnologia JavaServer Pages. JavaServer Pages este tehnologia platformei Java pentru construirea de aplicaţii ce cuprind pagini de Web cu conţinut dinamic precum HTML. partea de generare a conţinutului dinamic este păstrată separat de cea statică prin utilizarea componentelor JavaBeans externe. Orice modificare a parţii statice va fi vizibilă celor ce accesează respectivul JSP. o pagina JSP poate fi stocată pe orice server Web (care are suport pentru JSP). HTML/DHTML. oricare ar fi platforma pe care se află acesta. XML. VRML etc. validarea bazelor de date etc. Nu există limitări referitoare la tipul conţinutului generat de parţile dinamice ale JSPurilor.) şi pentru comunicarea cu appleturi sau alte aplicaţii Web.La JSP-uri. fiind rezultatul unei cooperări la nivelul industriei software dintre producătorii de servere Web. întrucât la primirea cererii se recompilează automat şi foarte repede pagina JSP apoi se execută şi rezultatul este trimis. proiectanţii de pagini folosesc tag-uri obişnuite HTML sau XML pentru formatarea rezultatului şi tag-uri JSP sau scriplet-uri pentru generarea conţinutului dinamic al paginii.

Creatorii de pagini Web nu sunt întotdeauna programatori familiarizaţi cu limbaje de scripting. declaraţii. proiectanţii de pagini sau Web master-ii pot edita şi lucra cu pagini JSP fără a afecta generarea conţinutului dinamic. pot face download la applet-uri şi pot executa funcţii ce ar fi dificil de implementat. "Write once. 2. run anywhere" Tehnologia JSP este complet independentă de platformă atât în ceea ce priveşte paginile de Web dinamice. generează conţinutul cerut (accesând componente JavaBean. scriplet-uri) pe care motorul JSP le procesează şi le elimină returnând o pagină standard HTML/XML.1. Tehnologia JSP este extensibilă prin dezvoltarea de biblioteci de tag-uri definite de utilizator.3 Pagini JSP O pagină JSP (*. legătura dintre acestea făcându-se în scriplet-uri şi totul fiind executat pe server.tag-uri şi componente JavaBean. Tag-urile JSP standard pot accesa şi instanţia componente JavaBean. JSP încapsulează funcţionalităţile necesare pentru crearea de conţinut dinamic în tag-uri de tip XML specifice JSP. Reutilizarea componentelor şi a tag-urilor Tehnologia JSP permite reutilizarea componentelor precum JavaBeans. 30 . 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. pot seta sau obţine atribute ale bean-urilor. Cu timpul vor fi create biblioteci proprii de tag-uri pentru funcţiile folosite cel mai frecvent. Ea corespunde unui document ce descrie procesarea unei cereri pentru a crea un răspuns. Pe partea de server. cât şi serverele de Web şi componentele acestora. un engine (motor) JSP interpretează scriplet-urile şi tag-urile JSP.jsp) este o pagină HTML sau XML ce cuprinde elemente adiţionale (taguri. cât şi în cadrul unor unelte interactive de dezvoltare a componentelor şi paginilor de Web. baze de date folosind JDBC sau prin includerea de fişiere) şi trimite rezultatele înapoi sub forma unei pagini HTML (sau XML) către browser. Astfel. Enterprise JavaBeans sau a tag-urilor atât independent.

declară folosirea unei instanţe. Dacă aceasta nu există atunci componenta JavaBean instanţiază şi înregistrează tag-ul  <jsp:setProperty> ...%> . tag-urile depind de fiecare cerere în parte adresată paginii JSP  elemente de scripting .folosită pentru a insera în pagină un document extern ce poate fi şi un alt document JSP  <%@ page . Nu este disponibil în implementările actuale  <jsp:useBean> .O pagină JSP cuprinde în structura sa:  cod HTML/XML standard . buffer-ul. fişier JSP sau servlet  <jsp:include> . Sintaxa lor este cea a tag-urilor XML (< tag attr1 = "valoare atribut" . tag-uri. Acestea sunt:  <jsp:forward> ../>).. a unei componente JavaBean.0 aceste directive sunt:  <%@ include .înaintează cererea către un alt fişier HTML.. În specificaţia 1.. "pachete importate".indică o bibliotecă de tag-uri pe care pagina respectivă le poate invoca.face download către browser-ul clientului la un plugin Java pentru executarea unui applet sau a unui Bean.include în etapa de procesare a cererii fişierul specificat în tag  <jsp:plugin> .directive ce furnizează informaţii globale independente conceptual de o anumită cerere adresată paginii JSP  tag-uri JSP . modul de tratare al excepţiilor etc  <%@ taglib .acestea putând fi: declaraţii.spre deosebire de directive. Nu este disponibilă în implementările actuale JSP include o serie de tag-uri standard..%> . scriplet-uri şi expresii Directive.> corp </tag> sau < tag attr1="valoare atribut" . informaţii despre thread-uri.%> ..folosită pentru a transmite informaţii referitoare la pagină precum limbajul de scripting.setează valoarea unei anumite proprietăţi a unui Bean 31 ...cod ce rămâne neinterpretat de motorul JSP  directive JSP . obiecte şi domenii de vizibilitate Paginile JSP folosesc directive JSP pentru a transmite instrucţiuni motorului JSP.

la procesarea unei cereri. Orice pagină JSP conţine o serie de obiecte create implicit :  request . Valorile pe care le poate avea atributul scope sunt:  page .get Context()) 32 .contextul servlet-ului generat (getServletConfig().cererea ce a solicitat pagina respectivă  response .accesibil din paginile de procesează aceeaşi aplicaţie în care a fost creat obiectul.obţine valoarea unei instanţe a unui Bean.accesibil din paginile ce procesează aceeaşi cerere în care a fost creat obiectul  session .obiect de tip sesiune pentru clientul solicitat (valabil doar pentru HTTP)  application . toate domeniile de vizibilitate comportându-se ca unul singur în cadrul unei secvenţe cerere/ răspuns. <jsp:getProperty> . respectiv rescrierea URL-urilor. Acestea vor conţine.răspunsul la cerere  pageContext . anumite obiecte Java. Obiectele create au un atribut numit scope ce defineşte domeniul de vizibilitate al acestora: când există o referinţă la acest obiect şi când aceasta va fi înlăturată. Cât timp sunt făcute cereri procesate de către motorul JSP.accesibil doar în cadrul paginii în care a fost creat obiectul  request . Toate referinţele la acesta sunt eliberate când mediul runtime solicită ServletContext-ul Numele ataşat unui obiect este unic pe tot timpul execuţiei. o converteşte la String şi o depune în obiectul implicit de ieşire out O pagină JSP poate crea şi/sau accesa. rescrierea URL-urilor este făcută în mod automat. în timpul etapei de procesare a cererilor. Lipsa transmiterii variabilelor de stare prin HTTP este suplinită în mod automat de către motorul JSP prin cele două modalităţi cunoscute: cookie-uri. Obiectele astfel create pot deveni vizibile elementelor de scripting prin variabile în limbajul de scripting.contextul paginii curente  session . referinţe către obiectul respectiv.accesibil din paginile ce se sunt în aceeaşi sesiune în care a fost creat obiectul  application .

1.obiect de tip ServletConfig pentru această pagină  page . Avantajele acestei abordări sunt uşurinţa de a programa şi posibilitatea autorului paginii de a genera conţinut dinamic bazat pe cererea clientului şi starea resursei solicitate.4 Tipuri de aplicaţii pentru JavaServer Pages Modelul de aplicaţie flexibilă folosind servlet-uri Java Un client Web poate face o cerere direct către un servlet Java. stochează rezultatul într-un Bean şi invocă pagina JSP. Aplicaţii de tip "two-tier" Modelul de aplicaţii "two-tier" presupune ca browser-ul să invoce în mod direct pagina JSP şi aceasta să genereze conţinutul solicitat (apelând eventual la JDBC pentru a obţine informaţia direct dintr-o baza de date).obiect de tip JspWriter ce scrie în stream-ul de ieşire 2. care generează conţinutul dinamic.excepţia declanşată anterior putând fi folosită doar în pagina de eroare invocată  config . 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. config . Acest model de fapt înlocuieşte conceptul CGI-BIN cu pagina JSP (compilată ca servlet Java). Pagina JSP accesează conţinutul dinamic din Bean şi trimite răspunsul (HTML) browser-ului.instanţă a clasei create pentru această pagină (pentru Java: this)  exception . Procesare scalabilă folosind tehnologia Enterprise JavaBeans (aplicaţii de tip N-tier) 33 .

1. În corpul paginii JSP se pot întâlni şi instrucţiuni Java. o fac însă disponibilă numai pentru platforma NT.java. JRun etc. Deşi această tehnologie este foarte complexă.jsp. 34 . Caucho. putând astfel aprecia mai bine ce va funcţiona corect şi ce nu. Tehnologia JSP este relativ nouă. Modelul acesta va fi suportat de către platforma Java 2 Enterprise Edition. scriptlet şi pagina JSP Un program scris în limbajul Java este un fişier de tip text cu extensia . Şi ea este tot un fişier de tip text dar are extensia . Pentru comerţ electronic sau alte tipuri de aplicaţii. În acest caz.5 ASP sau JSP ? Acesta e un subiect ce constituie o dispută foarte aprinsă între susţinătorii celor două tehnologii. ea suportă limbaje de scripting multiple şi modelul ActiveX al Microsoft. Pagina JSP este tot un program scris conform regulilor sintactice ale limbajului JSP. Sunt aşa-zisele scenarii. Suportul pentru bibliotecile ActiveX.) în fişiere cu extensia .6 Diferenţa dintre servlet. scriptlets. ASP a fost propusă de Microsoft în 1996 şi putem spune că este o tehnologie deja impusă ca standard pe platformele Microsoft. Comenzile din limbajul JSP împreună porţiuni de cod Java pur din aceste scenarii sunt transformate de către motorul servlet (Tomcat. Mulţi sunt cei ce consideră că JavaSoft are avantajul tacticii "wait and see". 2.1. EJB controlează tranzacţiile şi problemele de securitate aferente. Aceasta simplifică pagina JSP.Pagina JSP poate acţiona ca "middle-tier" în cadrul unei arhitecturi de tip Enterprise JavaBeans (EJB). ce îi dau adevărata putere. pagina JSP interacţionează cu resursele aflate pe server printr-o componentă de tip Enterprise JavaBean. 2. ceea ce furnizează performanţă scalabilă pentru un număr mare de utilizatori concurenţi.java. Componenta de tip EJB controlează accesul la resursele de pe server.

7 Concluzii Explozia Internet-ului face ca cerinţele pentru aplicaţii Web să crească vertiginos. Totuşi. Din punct de vedere istoric. ci şi integrarea în viitoarea platformă Java 2 Enterprise Edition şi tehnologii precum JavaBeans sau Enterprise JavaBeans. 2. dar puternice. În aceste condiţii o tehnologie precum JavaServer Pages este mai mult decât binevenită.a. Calculatoarele personale au devenit necostisitoare. iar deoarece motoarele de baze de date prezentau frecvent cerinţe hardware substanţiale pentru a putea rula cu performanţe cât de cât rezonabile. firmele distribuitoare percepând onorarii substanţiale.2. care va genera cod sursă Java. IBM.. sisteme disponibile la preţul unui compact disc ieftin. Tot acesta comandă compilarea în cod de octeţi. aceasta s-a dovedit a fi dincolo de resursele financiare a numeroase instituţii. pe de altă parte. cum ar fi operarea motoarelor de căutare din Internet. a apărut o întreagă mişcare în direcţia scrierii unor sisteme de operare cu performanţe ridicate pentru aceste calculatoare.1 Introducere Un sistem de gestiune a bazelor de date relaţionale (SGBDR) este un instrument esenţial în numeroase medii. atât pentru program cât şi pentru asistenţa necesară. Fujitsu ş. de la utilizările mai tradiţionale în contexte de afaceri. costurile erau si mai mari. Weblogic. 2. În anii din urmă.1. sau 35 . cercetare si învăţământ şi până la aplicaţiile mai recente.2 MySQL 2. situaţia s-a schimbat. cât si din acela al programelor. atât din punct de vedere al echipamentelor. sistemele de baze de date au constituit o propunere costisitoare. în ciuda importanţei unei baze de date performante pentru gestiunea şi accesul la resursele informaţionale. În sprijinul acestei afirmaţii nu vin doar declaraţiile din partea unor nume celebre precum Oracle.Deci motorul este un … programator automat. Sprijinul de care se bucură din partea industriei software precum şi faptul că se bazează pe platforma Java pot face din JSP soluţia pentru aplicaţii Web. Netscape.

Aceste eforturi de a pune programele la dispoziţia oricărui doritor au avut ca rezultat ceea ce se numeşte acum mişcarea Open Source si au generat multe programe importante.chiar gratuit. ceea ce le limitează utilitatea. pentru a numi doar câteva). LinuxPPC. Cel mai solicitat site FTP din lume. în general. Caldera. Programele de baze de date au devenit si ele mai accesibile. iar prin 36 . producătorii comerciali. şi anume ftp. Bazele sistemului MySQL au fost puse în 1979. au început să-şi ofere programele gratuit pentru sisteme de operare precum Linux. dar toate s-au dovedit a fi prea lente pentru tabelele de mari dimensiuni ale firmei. aceste din urmă produse sunt livrate. rulează FreeBSD. create de fabricanţi care nici măcar nu furnizează codul sursă. un limbaj a cărui popularitate este într-o creştere rapidă. prin Internet. datorită uşurinţei cu care permite scrierea paginilor Web dinamice. NetBSD. precum si diferite forme de Linux (RedHat. Acestea includ numeroase sisteme derivate din BSD UNIX (FreeBSD. Monty a început să programeze un server nou. Unul din noii veniţi în domeniul bazelor de date cu preţ scăzut sau gratuite este MySQL. Apache este cel mai folosit server Web din Internet. MySQL include un server SQL. OpenBSD). o dată cu instrumentul pentru baze de date UNIREG. Totuşi. care vă obligă să folosiţi produse costisitoare. De asemenea. fiind în mare măsură posibilă datorită acestora din urmă. precum Informix şi Oracle. fără suport. Toate acestea contrastează cu soluţiile „de firmă". Alte succese ale iniţiativei Open Source sunt limbajul de scripting de uz general Perl si PHP. compania a examinat mSQL. Compania a testat unele servere comerciale.cdrom. Mai recent. instrumente administrative şi o interfaţă de programare pentru scrierea propriilor dumneavoastră programe.com. TcX a început să caute un server SQL pentru a-l utiliza la dezvoltarea aplicaţiilor Web. În 1994. un sistem client/server de gestiune a bazelor de date relaţionale originar din Scandinavia. programe client pentru accesul la server. creat de Michael "Monty" Widenius pentru compania suedeză TcX. Producţia de sisteme de operare gratuite care să permită utilizarea calculatoarelor personale la maximum de capacitate s-a desfăşurat în mod concertat cu dezvoltarea unor instrumente disponibile gratuit. deoarece pentru mSQL erau disponibile numeroase instrumente gratuite. dar acestuia îi lipseau anumite caracteristici obligatorii pentru TcX. cum ar fi gcc. Interfaţa de programare era proiectată în mod explicit pentru a fi similară celei folosite de mSQL. Sistemele de baze de date precum Postgres şi mSQL au devenit disponibile gratuit sau la un preţ scăzut. compilatorul GNU de C. numai în formă binară. În consecinţă.

). dar necostisitoare.1 a fost dat lumii întregi în 1996. deoarece termenii de licenţă nu sunt foarte restrictivi (în esenţă. asistenţă în demararea unei 37 . din moment ce procurarea unui sistem de baze de date este facilă . deoarece este necesară o licenţă în anumite condiţii. stocarea si accesul la rezultatele unor cercetări genealogice. MySQL apare foarte clar în imaginea care se desfăşoară dinaintea ochilor noştri : sisteme de operare disponibile gratuit.11. În plus. cât şi sursă. sub forma de distribuţie binară pentru Linux si Solaris. MySQL nu este un proiect Open Source. rulează pe calculatoare personale (într-adevăr. MySQL se bucură de o amplă popularitate în comunitatea Open Source. Oameni care nu se gândeau niciodată că vor folosi baze de date încep să ia în considerare tot felul de utilizări ale acestora. Utilizarea bazelor de date este tot mai frecventă si la nivel individual. punând la dispoziţia unui număr de oameni mai mare ca oricând o putere substanţială de prelucrare a datelor şi alte caracteristici. urmărirea si întreţinerea colecţiilor de diferite tipuri (fluturi. David Axmark de la Detron HB a început să facă presiuni pentru ca TcX să lanseze MySQL pe Internet. cu milioane de înregistrări.de exemplu. Totuşi. Popularitatea sistemului MySQL nu este limitată la comunitatea Open Source. De asemenea. David lucra la documentaţie şi la a determina MySQL să construiască folosind utilitarul GNU configure. Instituţii care în trecut se mărgineau să viseze la a exploata în folos propriu puterea unui SGBDR cu performanţe ridicate au acum această posibilitate. la un preţ foarte redus. Da. Dar MySQL este portabil si rulează pe sisteme de operare comerciale (precum Solaris. dacă nu se doreşte să se obţină profit prin vânzarea sistemului sau a unor servicii care necesită utilizarea acestuia). MySQL funcţionează pe mult mai multe platforme si este disponibil atât în formă binară. performanţele sale rivalizează cu acelea ale oricărui sistem de baze de date cu care doriţi să îl comparaţi şi poate manipula baze de date de mari dimensiuni. Această „coborâre" a barierelor economice în ceea ce priveşte prelucrarea automată a datelor pune soluţii puternice pentru baze de date la dispoziţia unui număr fără precedent de mare de persoane şi instituţii. cu un efort de portare minim.utilizarea unei interfeţe similare aceleaşi instrumente puteau fi folosite pentru MySQL. cărţi de joc cu jucători de baseball etc. MySQL este în general gratuit. mărci poştale. care rulează pe echipamente puternice. pe o varietate de sisteme mai largă ca oricând. În 1995. Irix si Windows) şi pe echipamente care merg până la servere de întreprindere. în prezent. MySQL 3. o bună parte din programarea cu MySQL are loc pe sisteme Linux ieftine).

unul din motoarele gratuite (dar fără suport) furnizate de producătorii comerciali şi aşa mai departe. MySQL este rapid. suport. extensii etc. limbajul preferat al tuturor sistemelor moderne de baze de date. De asemenea. Când comparaţi MySQL cu alte sisteme de baze de date. preţ. Postgres. Java. Astfel. puteţi avea acces la MySQL folosind aplicaţii care acceptă ODBC (Open Database Connectivity). MySQL are de oferit numeroase caracteristici atractive:  Viteză. Perl. condiţii si restricţii de licenţiere. De asemenea. puteţi alege din mai multe opţiuni: MySQL. mSQL.limbaj de interogare structurat). gândiţi-vă la ceea ce este cel mai important pentru dumneavoastră.afaceri sau furnizarea de posibilităţi de căutare pentru situri Web personale. este disponibilă o varietate de interfeţe de programare pentru limbaje precum C. MySQL înţelege SQL (Structured Query Language . Puteţi obţine acces la MySQL în mod interactiv. PHP şi Python. MySQL este gratuit pentru majoritatea utilizărilor interne  Suport pentru limbaje de interogare. La server se pot conecta mai mulţi clienţi simultan. a cărui configurare şi administrare sunt mult mai simple decât în cazul sistemelor mai mari  Cost.). dar relativ simplu. Clienţii pot folosi mai multe baze de date simultan.2 De ce să optez pentru MySQL? Dacă sunteţi în căutarea unui sistem gratuit sau necostisitor de gestiune a bazelor de date. Date fiind aceste consideraţii. utilizatorul poate opta pentru folosirea unor programe client preambalate sau pentru scrierea propriilor programe client pentru aplicaţii personalizate 38 . toate acestea constituie factori care trebuie luaţi în considerare. browsere Web sau clienţi X Window System. MySQL este un sistem de baze de date cu performanţe ridicate. Performanţă. caracteristici (conformantă cu SQL.2. Programatorii pretind că MySQL este cel mai rapid sistem de baze de date pe care îl puteţi găsi  Uşurinţă în utilizare. 2. folosind numeroase interfeţe care vă permit să introduceţi interogări şi să vizualizaţi rezultate: clienţi în linie de comandă. un protocol de comunicaţie cu bazele de date creat de Microsoft  Caracteristici.

MySQL este uşor de obţinut. precum şi pe alte sisteme non-UNIX. MySQL rulează pe echipamente de la calculatoare de birou la servere cu performanţe ridicate  Distribuţie liberă. Această listă conţine numeroşi participanţi utili. de regulă. Ca resursă pentru asistenţă. iar bazele de date sunt accesibile de oriunde din Internet. pentru cei care preferă un acord formal  Există o listă de corespondenţă activă. Dacă în prezent utilizez un alt sistem de baze de date. Dar MySQL are controlul accesului. MySQL este dotat cu un sistem de asistenţă performant:  MySQL include un manual de referinţă de mari dimensiuni  Sunt disponibile contracte de asistenţă tehnică de la dezvoltatorii MySQL. Totuşi. Conectivitate şi securitate. este extrem de cooperantă. MySQL poate fi folosit integral în reţele. ca Windows şi OS/2. astfel încât persoanele care nu au dreptul să citească anumite date nu vor avea această posibilitate  Portabilitate. iar remediile sunt disponibile imediat prin Internet. deci datele pot fi partajate cu oricine. mulţi o găsesc suficientă pentru necesităţile proprii Comunitatea MySQL. La semnalarea unor hibe. în câteva minute. programatorii lansează un remediu în câteva zile (uneori ore!).si este perfect adevărat că timpul de instalare si configurare pentru MySQL este mai redus decât pentru multe alte sisteme. la care se poate înscrie oricine. MySQL rulează pe numeroase varietăţi de UNIX. Puteţi încerca MySQL fără nici un pericol de implicare financiară. oriunde. inclusiv dezvoltatorii MySQL. MySQL este un candidat ideal pentru evaluare dacă vă aflaţi în procesul de selectare a sistemelor de baze de date. O evaluare costă o parte din timpul dumneavoastră. îşi poate procura codul sursă şi îl poate examina Dar suportul? Bună întrebare. o bază de date nu este de prea mare folos dacă nu se poate obţine asistenţă în raport cu ea. trebuie să trec la MySQL? Nu în 39 . puteţi folosi lista de corespondenţă pentru a fi ajutat. Dacă nu se înţelege funcţionarea unei componente sau utilizatorul este curios cu privire la un algoritm. dacă vă încurcaţi. Răspunsurile la întrebările din lista de corespondenţă sosesc. dar acest lucru este valabil indiferent de sistemul de baze de date pe care îl aveţi în vedere . programatori si ne-programatori.

iar numeroasele programe administrative şi utilitare ajută utilizatorul să îşi ruleze situl. 2.mod necesar. Poate aţi prefera să folosiţi componente hardware care nu sunt acceptate de sistemul dumneavoastră actual sau poate că programul este furnizat în format binar. Utilizatorul poate scrie programe client în C. sau poate că sistemul respectiv este „de firmă" şi nu vă place să fiţi „blocat" de acesta. iar dumneavoastră preferaţi să aveţi la dispoziţie codul sursă. dar biblioteca mai furnizează şi baza pentru terţe asocieri pentru alte limbaje In afara programelor furnizate cu MySQL. Altele permit importarea sau exportarea datelor. Un program interactiv care permite introducerea interogărilor în mod direct şi vizualizarea rezultatelor. Acesta este motorul care activează MySQL si care furnizează accesul la bazele de date  Programe client pentru accesul la server.2. cărora le place să scrie programe pentru a-şi îmbunătăţi productivitatea şi care doresc să pună la dispoziţia publicului aceste programe. 40 . trebuie categoric să aveţi în vedere MySQL. MySQL însuşi este folosit de către numeroase persoane talentate şi capabile. de ce să vă deranjaţi cu o atare tranziţie? Dar dacă vă simţiţi limitat de sistemul folosit. Poate că performanţele sistemului dumneavoastră curent reprezintă o problemă.3 Instrumente furnizate cu MySQL Distribuţia MySQL include următoarele instrumente:  Un server SQL. Rezultatul este că utilizatorul are acces la o diversitate de instrumente produse de terţe părţi. Sau poate că pur şi simplu e prea costisitor! Toate acestea reprezintă motive pentru a lua în considerare MySQL. verificarea permisiunilor de acces şi multe altele  O bibliotecă client pentru scrierea propriilor programe. Dacă sunteţi satisfăcut de sistemul dumneavoastră actual. care facilitează utilizarea sistemului MySQL sau care extind aria de acţiune a acestuia în domenii precum dezvoltarea siturilor Web. Un utilitar permite controlarea serverului. deoarece biblioteca este scrisă în C.

Ideea este că. poate fi folosit gratuit. cum sunt Linux sau una din variantele BSD gratuite. în această situaţie. NetBSD şi OpenBSD  Pentru instrumentele de dezvoltare.5 O notă despre licenţa Windows Uneori se pune întrebarea: „Cum adică trebuie să obţin licenţă pentru serverul MySQL numai fiindcă rulez Windows?". cum ar fi un editor şi un compilator. cu excepţia situaţiilor când se doreşte vînzarea serverului sau a altor programe sau servicii care impun utilizarea acestuia. Sub UNIX. dacă se obţine un profit din MySQL. în general. pe toate platformele  Pentru UNIX si alte platforme non-Windows. fără nici o plată. dar. Relativ la aceste cerinţe. trebuie obţinută licenţă pentru server. Aceasta este o întrebare rezonabilă.2.2. MySQL 3. dar principiile de bază sunt următoarele:  Programele client şi biblioteca de programare a clienţilor sunt gratuite. există o diferenţă fundamentală între dezvoltarea pentru UNIX si dezvoltarea pentru Windows. Trebuie consultat manualul de referinţă MySQL pentru detalii privind licenţa. se poate obţine gratuit cam tot ceea ce aveţi nevoie:  Pentru sistemul de operare aveţi numeroase opţiuni.4 MySQL este gratuit? MySQL nu este un produs Open Source. aveţi nevoie de un sistem de operare si de unele instrumente de dezvoltare. la care există un răspuns rezonabil. toate aceste sisteme de operare sunt dotate cu 41 . Pentru a vă angaja în dezvoltarea de programe. serverul MySQL poate fi folosit gratuit. Gândiţi-vă la aspectele economice ale problemei.20. cum sunt FreeBSD.32a este disponibil în condiţiile GPL 2. 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ă obţină un profit şi există o mulţime de programe gratuite care se pot procura pentru a folosi eficient sistemul)  Versiunea Windows a serverului MySQL impune obţinerea unei licenţe  Versiunile mai vechi de MySQL sunt disponibile în condiţiile licenţei publice GNU (GPL) şi pot fi folosite în orice scopuri.2.

dar nu atât de mult încât sa fie dispuşi să plătească pentru acest privilegiu. există unele opţiuni:  Există o versiune shareware a sistemului MySQL. nule. precum compilatorul. În plus. Taxa de licenţă Windows furnizează un stimulent pentru orientarea timpului şi a eforturilor spre Windows. dezvoltatorii au descoperit că programarea sub Windows necesită mai mult timp decât cea sub UNIX. acesta este un cost care trebuie suportat pe speţele versiunii UNIX (care este. dar nu se doreşte obţinerea licenţei pentru server. se pot descărca pur şi simplu de pe Internet sau se poate procura un compact disc necostisitor. în fond. pentru Windows acestea pot atinge valori considerabile. în timp ce costurile pentru dezvoltarea programelor în UNIX sunt. în esenţă. Dacă se doreşte rularea Windows-ului. chiar dacă acestea nu sunt altceva decât remedii pentru hibe sau actualizări incrementale de mică importanţă Toate acestea înseamnă că. Această versiune oferă utilizatorului 30 de zile pentru utilizarea serverului.editoare şi compilatoare ca gcc şi egcs  Când sunt lansate actualizări ale sistemelor de operare sau ale instrumentelor de dezvoltare. care poate fi testata pentru evaluare. Se prea poate ca dezvoltatorilor MySQL să le placă să lucreze cu MySQL. iar taxa pentru licenţă este modul în care se produce această recuperare. platforma primară de dezvoltare a sistemului MySQL). Deoarece timpul dezvoltatorilor are o mărime fixă. după care acesta poate decide dacă va plăti licenţa pentru el 42 . dezvoltarea programelor în Windows este relativ costisitoare:  Sistemul de operare nu este gratuit  Instrumentele de dezvoltare. Acest lucru este valabil chiar si pentru revizuirile substanţiale Pe de altă parte. trebuie plătit din nou. nu sunt gratuite  Când sunt lansate actualizări ale sistemului de operare sau ale instrumentelor. Costurile de dezvoltare sub Windows trebuie recuperate întrun fel sau altul.

câmp de tip int care identifică în mod unic un medic  username .1 Descrierea aplicaţiei 3. tehnologia JSP (Java Server Pages) şi MySQL. Dacă se rulează serverul Windows în scopuri educaţionale sau în instituţii universitare sau de cercetare guvernamentale. Pentru conceperea acestui site am folosit pe lânga HTML şi JavaScript.1 Descrierea tabelelor folosite Aplicaţia mea este un site pe tema “Website pentru informaţii medicale”.1. În acest sens am implementat o gestiune a pacienţilor medicilor de familie dintr-un oraş (gestiunea este făcută de medici – fiecare medic îşi gestionează propriii pacienţi). În spatele site-ului se află o bază de date care conţine 3 tabele:  medici  datePacient  registruPacient Tabelul medici are următoarea structură:  idMedic .pseudonim-ul cu care se loghează medicul 43 . se poate cere dezvoltatorilor scutirea plăţii taxei de licenţă  Programele client sunt gratuite în orice caz Capitolul III Prezentarea aplicaţiei 3. Am ales JSP pentru că paginile Web ale acestui site sunt dinamice (conţinutul lor se modifică dinamic) şi MySQL pentru că este cel mai popular server de baze de date la ora actuală.

codul numeric personal al pacientului  vârstă .numele pacientului  prenume .câmp de tip int care identifică medicul la care se află pacientul  nume .data fiecărei consultaţii efectuată de un pacient  diagnostic .parola cu care medicul se loghează  nume .observaţiile medicului în legătură cu pacientul respectiv Principiul funcţionării site-ului este următorul: un medic se loghează cu un username şi o parolă. Un medic poate efectua 5 operaţii asupra pacienţilor săi:  adăugarea unui nou pacient  ştergerea unui pacient  căutarea unui pacient  modificarea datelor personale ale unui pacient  actualizarea registrului unui pacient 44 .vârsta pacientului  adresă . acesta are acces la pacienţii săi. putând să-i manipuleze dupa bunul plac.numele medicului  prenume .prenumele medicului Tabelul datePacient conţine următoarele câmpuri:  idPacient . Dacă logarea este corectă.adresa pacientului  ocupaţie .prenumele pacientului  CNP .câmp de tip int care identifică în mod unic un pacient  idMedic .diagnosticul pus de medic  tratament .tratamentul prescris de medic  observaţii .ocupaţia pacientului Tabelul registruPacient este structurat pe următoarele câmpuri:  dataConsultaţiei . parola .

Pentru a identifica în mod unic un pacient. Oricum. a apărut următoarea problemă: cum ştiu eu care sunt pacienţii medicului X ?. vizualizarea tuturor pacienţilor săi După efectuarea operaţiei dorite. Singura posibilitate prin care se poate modifica acest ID este modificând baza de date. medicul se deloghează. Datele conţinute în tabelul medici sunt folosite în primul rând atunci când un medic se loghează. Având în vedere acest lucru. Există deci un singur tabel pentru toţi pacienţii. Toţi medicii de familie dintr-un oraş sunt reţinuţi în tabelul medici. am procedat la fel ca în cazul medicilor. fiecarui medic i se ataşează un număr unic (în limbajul bazelor de date acest număr se numeşte cheie unică). numele şi prenumele acestuia. Pentru soluţionarea acestei probleme. Pacienţii sunt reţinuţi în tabelul datePacient. iar în altele am folosit codul numeric personal pentru a evita confuziile (CNP-ul este cel mai indicat de folosit pe post de cheie primară pentru că este unic – nu pot exista 2 pacienţi cu acelaşi CNP). ori acest lucru nu îl poate face decât administratorul site-ului. am setat câmpul idMedic cheie primară. Acest tabel poate conţine 2 pacienţi cu acelaşi nume şi acelaşi prenume (un medic poate avea 2 sau mai mulţi pacienţi cu acelaşi nume şi acelaşi prenume. Dacă nu. se va semnal un mesaj de eroare (logare nereuşită). Pentru fiecare medic în parte sunt reţinute username-ul. În unele pagini ale site-ului am folosit acest ID pentru identificarea pacienţilor. fiecarui pacient i-am 45 . parola. Pentru a ma asigura că doi medici nu pot avea acelaşi ID. Dacă medicul tastează un username şi o parolă corecte. Întrucât există un singur tabel cu toţi pacienţii. Astfel câmpul idPacient a devenit cheie primară. ID-ul medicilor este transparent utilizatorului (utilizatorul nu poate vedea acest ID). Astfel. prin intermediul căruia un medic poate fi identificat în mod unic din mulţimea tuturor medicilor. un pacient trebuie identificat în mod unic pentru a nu exista pericol de confuzie. chiar dacă se încearcă atribuirea aceluiaşi ID la 2 sau mai mulţi medici. fără pericol de confuzie. sistemul MySQL va semnala o eroare. Pe lângă aceste date. Am introdus un număr unic asociat fiecarui pacient. atunci el are acces la pacienţii săi. sau pot exista doi pacienţi diferiţi cu acelaşi nume şi acelaşi prenume la medici diferiţi).

2. este semnalat un mesaj de eroare la încercarea de a adăuga pacientul în baza de date. în timp ce tabelul registruPacient conţine registrul fiecărui pacient. Medicul trebuie să completeze numele şi prenumele 46 . Am introdus aceste validări pentru a mă asigura că orice modificare a bazei de date păstrează consistenţa acesteia. datele introduse sunt validate. se datorează faptului că CNP-ul noului pacient mai există deja în baza de date. 3. Acesta se conectează la baza de date şi execută un query de inserare a unei noi înregistrări în bază.2 Ştergerea unui pacient Pentru a şterge un pacient acesta trebuie mai întâi găsit. După adăugarea noului pacient în bază. împreună cu medicul acestuia. Pentru acest lucru am introdus o formă de căutare în pagina de ştergere.1 Adăugarea unui nou pacient La adăugarea unui nou pacient medicul trebuie să completeze datele personale ale acestuia. idMedic) identifică în mod unic un pacient. Datele scrise în aceste forme sunt validate cu ajutorul JavaScript-ului. Ori acest lucru nu trebuie să se întâmple.1. iar vârsta trebuie să aparţină intervalului [1. Tabelul datePacient conţine datele generale ale fiecărui pacient (datele personale).2. Singurul motiv pentru care o operaţie de adăugare poate eşua. Înainte de inserarea noului pacient in baza de date. Adăugarea propriu-zisă a noului pacient în bază se face rulănd un JSP.1.2 Operaţiile efectuate pe tabele 3.1. Astfel. perechea (idPacient. tratamentul recomandat şi eventual căteva observaţii.. Registrul unui pacient este completat în urma fiecărei consultaţii. În registru medicul îşi notează diagnosticul pacientului. 3. codul numeric personal trebuie să aibă 13 cifre dintre care prima să fie cifra 1 sau 2. Aceasta în cazul în care operaţia de adăugare se încheie cu succes. Corectitudinea datelor trebuie să respecte următoarele condiţii: numele şi prenumele pacientului nu trebuie să conţină spaţii. În mai toate paginile site-ului există forme de introducere a datelor.ataşat pe lângă ID-ul său şi ID-ul medicului la care aparţine.100]. pe ecran este afişat un mesaj de confirmare a reuşitei operaţiei. Dacă datele noului pacient nu respectă toate aceste condiţii.

medicul nu trebuie decât să facă click pe numele pacientului pe care vrea să îl şteargă. După ştergere. Acesta se conectează la baza de date şi execută un query de ştergere. se afişează o nouă pagină cu rezultatele căutării (acestea sunt afişate într-un tabel).1. Datele introduse de medic sunt validate. După validare. medicul trebuie să tasteze un CNP valid.3 Căutarea unui pacient Un medic poate căuta un pacient după 2 criterii:  după nume şi prenume  după codul numeric personal Medicul are la dispozitie o listă cu cele două opţiuni. Ştergerea propriu-zisă se face prin intermediul unui JSP. După ce ambele sunt completate şi validate (validarea constă în faptul că nu trebuie să conţină spaţii). medicul trebuie să tasteze numele pacientului sau numele şi prenumele acestuia separate printr-un spaţiu. Dacă a fost găsit cel puţin un pacient. medicul trebuie să scrie într-un textfield ceea ce caută. 3.2. În funcţie de opţiunea aleasă. Înainte de ştergerea propriu-zisă medicul este întrebat dacă doreşte acest lucru (un pacient poate fi şters doar dacă a murit sau dacă a fost transferat). prin apăsarea tastei 47 . Dacă căutarea se face după cod numeric personal.pacientului pe care doreşte să îl şteargă. se afişează pe ecran un mesaj corespunzător. Rezultatele căutării sunt afişate întro nouă pagină. Dacă căutarea se face după nume şi prenume. Căutarea poate avea ca rezultat mai mulţi pacienţi pentru că un medic poate avea mai mulţi pacienţi cu acelaşi nume şi acelaşi prenume. dar de această dată pacientul şters nu mai este afişat în tabelul rezultatelor (pagina îşi face refresh). În tabelul rezultatelor sunt afişate datele personale ale pacienţilor găsiţi. prin apăsarea tastei ENTER sau prin apăsarea butonului “Caută” se execută căutarea respectivului pacient. Pentru a şterge un pacient. aplicaţia se întoarce la pagina cu rezultatele căutării. Dacă căutarea nu întoarce nici un rezultat (adică nu a fost găsit nici un pacient cu numele şi prenumele respective). după ştergerea pacientului aplicaţia se întoarce la pagina de căutare. într-un tabel. Dacă căutarea întoarce un singur rezultat.

medicul trebuie să apese butonul de modificare pentru modificarea acestora în baza de date. diagnosticul. După validarea CNP-ului introdus se face căutarea. După modificare. sau se poate întoarce la pagina de căutare. într-un tabel. rezultatele sunt afişate într-o nouă pagină. toate celelalte date personale ale pacientului pot fi modificate.5 Actualizarea registrului unui pacient Registrul unui pacient conţine data consultaţiei. acesta trebuie căutat. 3. Chiar dacă medicul nu modifică nici un câmp al pacientului. În rest. pentru a căuta un alt pacient ale cărui date doreşte să le modifice. tratamentul şi observaţiile notate de medic la fiecare consultaţie a pacientului.2. se execută căutarea in baza de date. 48 . 3. prin apasarea butonului de modificare tot se execută modificarea (datele sunt actualizate cu aceleaşi date – adică rămân nemodificate). iar dacă a fost găsit cel puţin un pacient care să corespundă criteriului după care s-a efectuat căutarea. se afişează un mesaj corespunzător.1. Dacă în urma căutării nu a fost găsit nici un rezultat. în care se execută un query UPDATE. Dacă s-a găsit pacientul. Dacă nu este găsit pacientul cu CNP-ul introdus. medicul poate efectua o altă modificare a aceluiaşi pacient. Diagnosticul trebuie obligatoriu completat de medic la finalul consultaţiei. În acest tabel sunt afişate datele personale ale pacienţilor găsiţi. Căutarea se face după CNP.ENTER sau a butonului de căutare.1. se afişează un mesaj corespunzător. Căutarea se face de fapt într-un JSP separat (se execută un SELECT). Sub acest tabel este un buton prin apăsarea căruia medicul poate efectua o altă căutare.2. se afişează datele personale ale acestuia într-o forma editabilă.4 Modificarea datelor unui pacient Înainte de a modifica datele unui pacient. Tratamentul şi observaţiile eu am considerat că sunt opţionale (adică medicul poate să nu scrie nimic în aceste două rubrici ale registrului). Singurul câmp care nu poate fi modificat de medic este CNP-ul (am presupus că acesta a fost introdus corect de la început). După modificarea uneia sau a mai multor date. Modificarea propriu-zisă se face prin apelul unei pagini JSP.

Medicul poate părăsi fereastra prin închiderea acesteia. O altă explicaţie a acestui lucru ar mai fi că data sistemului poate fi greşită. iar dacă este găsit se afişează datele personale ale pacientului care deţine acel cod numeric personal. medicul trebuind să completeze celelalte 3 rubrici: diagnostic. mai accesează odată pagina de actualizare în decursul aceleiaşi zile. În partea de jos a paginii registrului. chiar dacă data calculatorului este greşită. aplicaţia semnalează un mesaj de eroare (un medic nu poate efectua două consultaţii ale aceluiaşi pacient în aceeaşi zi). acestea sunt memorate în baza de date. 49 . din greşeală. aceasta înseamnă că respectivul pacient a venit la medic pentru o nouă consultaţie). În aplicaţia mea. tratament şi observaţii. medicul trebuie să completeze datele consultaţiei din ziua respectivă (am considerat că odată ce medicul a deschis pagina de actualizare a registrului unui pacient. Consultaţiile înregistrate în registru sunt afişate în ordine crescătoare a datei la care au fost efectuate (ca şi cum ar fi scrise într-un caiet). care se conectează la baza de date şi execută o instrucţiune INSERT.La fiecare nouă consultaţie a unui pacient. prin apăsarea unui buton de actualizare. Dacă medicul. completarea acestor rubrici nu este obligatorie. Într-o celulă este automat trecută data curentă (aceasta reprezintă de fapt data consultaţiei care tocmai s-a efectuat). Actualizarea registrului pacientului se face cu ajutorul unei pagini JSP. medicul îi actualizează registrul cu rezultatul acestei noi consultaţii. Punând această restricţie. Prin executarea unui click se deschide o altă fereastră în care medicul poate vedea registrul pacientului. Totuşi. După ce medicul completează registrul cu noile date. registrul pacientului rămânând nemodificat. medicul îşi va da seama. deoarece în mesajul de eroare afişat i se semnalează şi posibilitatea acestui lucru. Ultima consultaţie afişată va fi cea mai recentă. Căutarea se face după cod numeric personal pentru a identifica pacientul în mod unic. medicul trebuie mai întâi să caute pacientul care vine la o nouă consultaţie. Dacă CNP-ul respectiv nu este găsit în baza de date se afişează un mesaj corespunzător.

3.2 Structura site-ului Site-ul este structurat pe 3 directoare:  pages . Eu am hotărât să nu folosesc barele de defilare.conţine acţiunile formelor existente în site  js . În urma mai multor încercări am convenit ca pe fiecare pagină să fie afişaţi câte 12 pacienţi. Dacă numărul total al pacienţilor depăşeşte 12. 50 . prin apăsarea link-ului “Pagina următoare” se vor afişa următorii 12 şi tot aşa. 3. medicul fiind obligat să folosească barele de defilare pentru a cuprinde tot tabelul. Printr-un simplu click pe opţiunea “Vizualizare pacienţi” din meniul aplicaţiei. În schimb.1. medicul are acces şi la registrul unui pacient. Întrucât există posibilitatea ca numărul pacienţilor unui medic să fie foarte mare. De asemenea. Prin intermediul fişierelor JavaScript se validează diverse date introduse de medic. dacă doreşte acest lucru. un medic trebuie să-şi poată vedea toţi pacienţii. medicul poate vedea un tabel cu toţi pacienţii săi. prin intermediul acestui tabel cu pacienţii. am optat pentru două link-uri cu ajutorul cărora medicul poate parcurge tabelul cu pacienţii înainte şi înapoi. tabelul în care aceştia sunt afişaţi nu va avea loc pe ecran.conţine fişierele JavaScript Fişierele directorului actions sunt paginile JSP care se conectează la baza de date şi execută diverse operaţii. prin executarea unui simplu click pe numele pacientului al cărui registru doreşte să îl vizualizeze.2.6 Vizualizarea listei pacienţilor Odată logat.conţine paginile principale principale ale aplicaţiei  actions .

Se poate verifica dacă instalarea şi pornirea serverului Tomcat sau făcut cu succes dacă atunci când se solicită unui navigator Web adresa (URL-ul) http://localhost:8080/. Trebuie instalat pachetul JDK (eu am folosit JDK versiunea 1. acestea sunt distribuite într-un fişier de aplicaţii Web arhivate (în general cu extensia . De obicei. Eu am optat pentru serverul Tomcat pentru că este gratuit şi totodată este cel mai utilizat în acest domeniu (acest server necesită o versiune de JRE instalată pentru că el utilizează Java).0).xml.3. Toate aplicaţiile Web utilizează aceeaşi structură de directoare referitoare la serverul utilizat. Şi acesta este gratuit şi este cel mai popular server de baze de date folosit la ora actuală. Singurul instrument care mai trebuie pentru rularea corectă a aplicaţiei este serverul de baze de date MySQL. se instalează local dezarhivând fişierele copiate. Toate servleturile specifice standardului Servlet API 2.2 utilizează conceptul de aplicaţie Web (mai nou a apărut versiunea 3.apache.org/tomcat/ Apoi. Acesta este o parte a proiectului Apache Jakarta şi reprezintă o implementare de referinţă oficială pentru servleturile Java şi pentru specificaţiile JSP (eng.war).3 Rularea aplicaţiei Pentru rularea aplicaţiei (site-ului) trebuie în primul rând instalat mediul Java pe calculatorul pe care se doreşte rularea.5. Însă locul unde sunt instalate aplicaţiile Web poate să difere de la un server la altul. Poate fi obţinut de la adresa: http://jakarta. Apoi ne trebuie un server care să suporte JSP. Urmează pornirea serverului Tomcat prin comanda startup. Java Server Pages). O aplicaţie Web este o ierarhie de directoare şi fişiere care formează împreună o aplicaţie. De exemplu. Se poate modifica numărul portului (8080) editând şi schimbând porţiunea de cod corespunzătoare din fişierul /jakarta­tomcat/conf/server. Tomcat păstrează toate aplicaţiile Web în directorul /jakarta­tomcat/webapps. se obţine pagina de lucru a serverului Tomcat. 51 .0_02) şi de asemenea JRE. Câteva cuvinte despre serverul Apache Tomcat Apache Tomcat este cel mai simplu server şi este şi gratuit. Lucrurile se petrec similar pe platforma Unix/Linux.

xml din directorul jakarta­tomcat/conf/. Apelarea servleturilor utilizând serverul Tomcat se realizează după următorul format pentru URL: http://<server>:<port>/<drum_context>/servlet/<nume_servlet>[/<informa ?ii_drum>][?<şir_interogare>] Identificatorii scrişi între paranteze unghiulare (<. <informa?ii_drum> şi <şir_interogare> sunt componente suplimentare pentru un URL.html aflat în directorul jakarta­tomcat/webapps/examples. Acestea pot fi obţinute aplicând metoda getPathInfo() a obiectului HttpServletRequest. Tomcat instalează aplicaţia ROOT ca aplicaţie implicită prin asignarea contextului vid. URL-ul http://localhost://8080/index. În plus. atunci URL-ul http://localhost:8080/examples/index. JSP şi imaginile asociate unei aplicaţii Web. <drum_context> reprezintă locul unde se memorează aplicaţia Web (acesta trebuie să fie unic). <informaţii_drum> se referă la informaţii suplimentare. Drumul de context pentru fiecare aplicaţie Web este specificat în fişierul server. De exemplu. <nume_servlet> reprezintă numele clasei servletului sau numele servletului (alias).În aceste subdirectoare ale directorului webapps va căuta serverul Tomcat fişiere HTML.html din directorul /jakarta­tomcat/webapps/ROOT. o aplicaţie Web poate fi definită prin specificarea unui drum de context vid. Toate cererile către acest drum de context vor fi direcţionate către aplicaţia Web corespunzătoare. De exemplu. Cuvăntul servlet indică serverului Tomcat că este vorba de un servlet şi nu o pagina HTML sau JSP.html va afişa fişierul index.html va returna fişierul index. De exemplu. fiecărei aplicaţii Web i se atribuie un “drum de context” unic de către administratorul de sistem. dacă se apelează un servlet numit ObţineCaleServlet prin URL-ul: http://localhost:8080/servlet/ObtineCaleServlet/html/public? name=value 52 . În general. >) semnifică faptul că aceştia trebuie înlocuiţi. Dacă aplicaţiei Web i se atribuie drumul de context /examples.

ar trebui să fie totul în regulă. Eu am numit baza de date medicidefamilie. Dacă se doreşte rularea de pe un alt calculator decât cel local. Acest director trebuie să se găsească în directorul: dir_instalare_Tomcat/webapps/ROOT. unde dir_instalare_Tomcat este directorul unde este instalat serverul Tomcat. Cuvântul “licenta” reprezintă directorul în care este stocată aplicaţia. mai rămâne de făcut un singur pas şi anume înregistrarea bazei în Control Panel. 53 .atunci valoarea returnată de metoda getPathInfo() este /html/public. browser-ul va căuta în dir_instalare_Tomcat/webapps/ROOT/licenta fisierul index. Şirurile nume = valoare din interogare pot fi citite apelând pentru un obiect HttpServletRequest metodele getParameterNames(). în locul cuvântului “localhost” trebuie scris IP-ul maşinii pe care se află instalată aplicaţia.jsp (acest fişier reprezintă prima pagină a aplicaţiei). <şir_interogare> permite trimiterea de informaţii suplimentare unui servlet utilizând formatul nume = valoare. împreună cu tabelele aferente acesteia. În momentul cînd scriem adresa de mai sus în browser. Dacă toate cele spuse mai sus s-au realizat corect. Dacă nu îl găseşte. Configurarea şi rularea aplicaţiei După instalarea MySQL-ului. Pentru rularea aplicaţiei trebuie deschis un browser de Web şi la adresă trebuie scris: http://localhost:8080/licenta Cuvântul localhost specifică faptul că aplicaţia rulează pe calculatorul local. se va semnala o eroare. pentru a fi accesibilă aplicaţiei. Pentru crearea ei am folosit aplicaţia EMS MySQL Manager (se poate folosi orice altă aplicaţie de genul acesteia). getParameter() şi/sau getParameterValue(). După ce baza de date este creată. 8080 este portul implicit al serverului Tomcat. trebuie creată baza de date folosită de aplicaţie.

Detron HB and Monty Program KB. O’Reilly – Database Programming with JDBC and Java 7. O’Reilly – Java Servlet Programming 6. Ştefan Tanasă.Core Servlets and Java Server Pages 8. Cristian Olaru. Lon Marco – EJB&JSP: Java On The Edge 5.BIBLIOGRAFIE 1. Jim Hoffman. James Goodwill – Pure JSP – Java Server Pages: A Code . Ştefan Andrei – Java de la 0 la expert 2.MySQL/PHP Database Applications 9.Introduction to Structured Query Language 54 .Intensive Premium Reference 4.MySQL Reference Manual 10. Marty Hall. Jay Greenspan and Brad Bulger. Bruce Eckel – Thinking in Java 3.