Sunteți pe pagina 1din 106

TEHNOLOGII WEB

Acest material este destinat studentilor anului II, invatamant la distant,


specializarea Informatic.

Structura cursului:
HTML si CSS
JAVASCRIPT
PHP i MySQL
CONSTRUIREA DOCUMENTELOR XML.
Utilizarea servlet-urilor.

2014-2015

Nota final care se va acorda fiecrui student, va conine


urmtoarele componente n procentele menionate:
- examen final
60%
- lucrari practice/ proiect
40%

Fiecare student va realiza un site care va cuprinde minim 3


pagini pentru fiecare unitate de nvare (Html, JavaScript,
XML, Php si MySql). Codul sursa al fisierelor va contine si
comentariile corespunzatoare.
Aplicatia se va transmite cel mai tarziu cu 2 zile inainte de
examen, pe adresa de email mironela.pirnau@prof.utm.ro.

Unitatea de invatare I.
CREAREA PAGINILOR WEB CU HTML
Aceasta unitate are ca scop cunoasterea si utilizarea tagurilor HTML, care stau la baza crearii
site-urilor WEB. Un site web desemneaz o grup de pagini web multimedia (coninnd texte, imagini
fixe, animaii .a.), accesibile n Internet pe o tem anume i care sunt conectate ntre ele prin aa-numite
hiperlinkuri.

Dup parcurgerea si nsusirea acestei teme, studentul va fi capabil:


- sa utilizeze tag-uri de baz,
- sa utilizarea ancorelor, sa insereze imagini, sa creeze tabele,
- sa proiecteze cadre n HTML(frames), sa defineasca formulare, stiluri si
straturi.

Cuprins:
1. Crearea paginilor Web folosind HTML
1.1. Tag-uri de baz
1.2. Utilizarea ancorelor
1.3. Utilizarea imaginilor
1.4. Crearea tabelelor
1.5. Cadre n HTML(frames)
1.6. Definirea formularelor
1.7. Stiluri
1.8. Straturi
Intrebari de control; Tema de casa; Exemple rezolvate; Formular feedback;

Cuvinte cheie: WWW, FTP , HTTP, IRC, HTML, W3C.


Introducere
WWW apare ca o colecie de informaii structurate sub form de documente Web sau pagini Web. Mai multe
pagini Web, organizate ierarhic, formeaz un site. Site-ul reprezinta un ansamblu de pagini Web, ntre care sunt
definite legturi, astfel nct, pornind de la o prim pagin a crei adres reprezint adresa site-lui, este posibil
navigarea prin toate paginile acestuia. Site-urile sunt gzduite pe servere speciale numite servere Web. Navigarea
pe Web se face cu ajutorul unor programe numite browsere Web.

Internetul, ca i serviciul WWW, lucreaz n tehnologia client/server, astfel:


browserul stabilete o conexiune TCP/IP ctre server;
browserul emite o cerere HTTP ctre server;
serverul Web recepioneaz cererea, o interpreteaz i emite un rspuns ctre browser prin
trimiterea documentului codului HTML;
browserul interpreteaz codul HTML i afieaz pagina web pe ecran;
Serve-rul de Web primete cererea, o interpreteaz i emite un rspuns ctre client. n forma cea mai simpl,
rspunsul este un document HTML (un hipertext), caz n care browser-ul afieaz pagina Web corespunztoare.
TCP/IP (Transfer Control Protocol / Internet Protocol) este protocolul prin care se face transmisia datelor n
Internet. Principalele caracteristici ale acestui protocol sunt:
independen fa de tipul calculatorului sau de sistemul de operare folosit;
independen fa de tipul reelei, ceea ce permite interconectarea unor reele diferite.
HTTP (HyperText Transfer Protocol) este protocolul folosit pentru transferul informaiilor din cadrul paginilor
Web i anume, a HyperTextului. O cerere HTTP conine un URL dar i alte informaii. Paginile Web sunt de fapt
documente, fiiere, cu un format special ce au exitensia HTML.
HTML (HyperText Markup Language) este vzut ca un limbaj de realizare a hypertextului.
Localizarea unei resurse n Internet se face prin specificarea adresei acesteia, adres ce poart numele de URL
(Uniform Resource Locator) i are formatul
protocol://server.domeniu/cale/fiier.extensie.
Un URL conine urmtoarele informaii:
- protocolul folosit;
- adresa mainii pe care se afl resursa;
- portul ales pentru conexiune;
- calea ctre resurs;
- numele resursei.
Exemplu: http://www.microsoft.com/download/index.html
Accesarea unui site se face, de obicei, numai prin specificarea n cadrul browse-rului a unei adrese de
forma:www.utm.ro. n mod automat, browserul va introduce i protocolul http.
Cu ani n urm, oamenii de tiin s-au gndit, c ar fi bine, ca cele mai importante reele de calculatoare s fie
conectate ntre ele. Rezultatul a fost apariia mamei tuturor reelelor, numit acum Internet. Pn n anul 1990,
accesarea informaiilor de pe Internet era foarte dificil i reeaua nu era folosit dect de un grup restrns de
oameni de tiin. Fizicianul Tim Berners-Lee a devenit celebru, datorit faptului c a inventat link-urile
(legturi, referine) hypertext. Dei aceast idee nu era nou, ea a condus la dezvoltarea unui limbaj simplu, care s-a
impus, pn la urm, ca i un standard. Tim Berners-Lee a numit acest limbaj Hypertext Markup Language,
cunoscut sub denumirea prescurtat de HTML. Noiunea de hypertext nseamn text pstrat n format electronic cu
link-uri ntre pagini. n anul 1993, n jur de 100 de calculatoare din lumea ntreag erau echipate pentru a gzdui
pagini HTML. Aceste pagini interconectate au fost nimite World Wide Web. Dup un timp, au nceput s fie
scrise primele browsere Web cu ajutorul crora se puteau vizualiza pagini Web care conin att text, ct i imagini.
Unul din primele elemente fundamentale ale WWW (World Wide Web) este HTML (Hypertext Markup
Language), care descrie formatul primar n care documentele sunt distribuite i vzute pe Web. Multe din
trsturile lui, cum ar fi independena fa de platform, structurarea formatrii i legaturile hypertext, fac din el un
foarte bun format pentru documentele Internet i Web.
Documentele HTML sunt documente n format ASCII i prin urmare, pot fi create cu orice editor de texte. Au fost
ns dezvoltate editoare specializate care permit editarea ntr-un fel de WYSIWYG, dei nu se poate vorbi de
WYSIWYG, atta vreme ct navigatoarele afieaz acelai document oarecum diferit, n funcie de platforma pe
care ruleaz.
W3C prezinta un set de tehnologii integrate. Se pot crea situri multimedia cu tehnologia W3C existent XHTML
(Structured XML markup), CSS (Style sheets), SVG (2D vector animated graphics), SMIL (Synchronized
Multimedia) etc. Aceste tehnologii au fost construite, prin consens, de ctre cele mai importante organizatii care

activeaza pe web.Paginile Web sunt coninute n fisiere pe un calculator server. Un astfel de server este, de
exemplu, www.yahoo.com, sau www.google.ro. Calculatoarele care acceseaz paginile Web sunt clieni. De fapt,
pe clieni ruleaz programe dedicate vizualizarii paginilor Web, numite browsere Web i acestia acceseaz i
afieaz pagina Web pe calculatorul local.
WWW Consortium perfecioneaz standarde noi, ofer programe pentru servere i clieni, documentaie etc.
Productori de browsere implementeaz n browserele lor standardele W3C, dar dezvolt i ei standarde pe care
numai browserele lor le suport. Din aceste motiv, o pagin web trebuie s fie test cu mai mult browsere.
Internetul pune la dispoziia utilizatorilor mai multe servicii, printre care:

E-mail care permite schimbul de mesaje ntre utilizatori


WWW (World Wide Web) care este cel mai important serviciu Internet prin care utilizatorul are acces
rapid la informaia organizat, sub forma unor documente numite pagini web.
FTP (File Transfer Protocol) este un serviciu specializat pe transferul de fiiere.
Telnet (Remote Access) permite exploatarea la distan a resurselor unui calculator.
News ofer utilizatorului accesul la diverse informaii din domenii bine precizate.
IRC (Internet Relay Chat) permite realizarea unei comunicri n timp real, n general, sub form de text.

1 Crearea paginilor web folosind HTML


Un fiier HTML (HyperText Markup Language) este un fiier text, care reprezint sursa paginii de Web. Fiierul
HTML trebuie s aib extensia .htm sau .html, iar browserul l interpreteaza. Deoarece fiierul este de tip text, el
poate fi editat cu Notepad (din Windows) sau editoare specilizate.
HTML-ul nu reprezint un limbaj de programare ci mai degrab un limbaj de marcare a textului. El conine un
set de coduri speciale, care se insereaz ntr-un text, pentru a aduga informaii despre formatarea textului i despre
legturile existente n pagini. Aceast marcare a textului se face cu ajutorul unor tag-uri (marcaje, etichete). Un tag
este introdus ntotdeauna ntre paranteze unghiulare, sub forma:
<nume_tag atribut1=valoare1 atribut2=valoare2 >
Marcajele html pot avea sau nu i o form de nchidere:
</nume_tag>
Marcajele html se aplic unui text sau chiar altor marcaje prin cuprinderea lor ntre forma de deschidere i forma de
nchidere.
Spre exemplu, marcajul <html> indic browser-ului c documentul este scris i formatat pentru limbajul HTML.
Forma de nchidere este </html>. De reinut, faptul c browser-ele Web ignor formatrile aplicate textului cu
ajutorul procesoarelor de texte valabile fiind doar formatrile aplicate cu ajutorul tag-urilor html.
Un fiier html, este de obicei, mprit, din motive de organizare, n dou seciuni:
antetul (header-ul) care conine informaii introductive de formatare a documentului. Este identificat
de forma de deschidere i forma de nchidere a marcajului <head> </head>. Informaiile cuprinse
de acest marcaj nu apar n pagina Web.
corpul efectiv al documentului, adic ceea ce este vizualizat n fereastra browser-ului, este cuprins
ntre marcajele <body> i </body>.
Observaie: O etichet (un tag) poate fi scris/ att cu litere mari, ct i cu litere mici. Standardul W3C recomand
folosirea literelor mici pentru tag-uri. Mai mult, generaia urmatoare de standard HTML, standardul XHTML
impune obligatoriu utilizarea tag-urilor cu litere mici.

Article I.
Validarea documentelor HTML
Toate documentele trebuie validate pentru elimiarea erorilor, ca de exemplu lipsa unei ghilimele,
neinchiderea unei paranteze, elemente sau atribute scrise gresit sau structurate invalid. Erorile nu sunt
vizibile mereu in browser deoarece fiecare le recupereaza in modul propriu. Validarea acestor documente
se face cu un serviciu special W3C care poate fi accesat de oricine la adresa: http://validator.w3.org. Un
validator verifica definitia tipului documentului(DTD) si nu siguranta legaturilor din document.
Elementul DOCTYPE
Documentul HTML validat trebuie declarat in functie de versiunea pe care o utilizeaza.
Declararea tipului este definita de DTD(Document Type Definition), in HTML 4 pot exista 3 DTD
specifici, astfel autorul trebuie sa include in pagina sa tipul de document in functie de versiune.
Elementele care se pot utiliza n cadrul paginilor depind de versiunea HTML utilizat.n tabelul 1 avem lista cu
versiunile HTML i modul de declarare al acestora la ncepul oricrui fiier html (DOCTYPE):

Tabelul 1. Declaraii DOCTYPE


Versiune
HTML

declaraia DOCTYPE

HTML 4.01

<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01//EN


http://www.w3.org/TR/html4/strict.dtd>
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Frameset//EN
http://www.w3.org/TR/html4/frameset.dtd>

HTML 3.2

<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 3.2 Final//EN>

HTML 1.0

<!DOCTYPE html PUBLIC -//IETF//DTD HTML 1.0//EN>

XHTML 1.0

<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN


http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Frameset//EN
http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd>

XHTML 1.1

<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.1//EN


http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd>

Atenie! Nu se poate valida un document, dac nu se utilizeaz una din declaraiile din tabelul 1, la nceputul
acestuia. De asemenea, anumite motoare de indexare caut elemente META n paginile HTML, elemente care au
rolul de a defini o list de cuvinte cheie, separate cu virgul. Motoarele de cautare pot prezena aceste cuvinte
cheie, ca rezultat al unei cautari.
Etichetele META au atributele NAME i CONTENT i se folosesc conform sintaxei:
<META NAME= meta nume CONTENT= coninut>
Exemplu de utilizarea a acestei etichete n antetul unei paginii
<meta name=informatica content=importanta informaticii in procesul de invatamant>
Etichete meta se poate utiliza i pentru a nlocui comenzile Refresh sau Reload care au rolul de a
renmprospta coninutul paginii ncrcate n browser.
Exemplu: pentru remprosptarea la 10 secunde a unui pagini ncarcate ntr-un browser:
<meta http-equiv=refresh content=10;url=http://www.test_site.ro>
Inserarea unui titlu pentru pagina web
Un lucru subtil, dar simplu, pe care l putem face este s inserm un titlu pentru o pagin Web, titlu ce va fi afiat n
bara de titlu a browser-ului folosit. Acest titlu se poate introduce cu ajutorul marcajului <title> </title>. Acestea
vor fi introduse n interiorul marcajelor

Article II.

HTML 5

HTML 5.0 Acest limbaj se bazeaza pe prezentarea continutului si structurarea in world wide
web , o tehnologie nucleu pentru Internet propusa si initial pentru Opera.
Este a cincea revizuire a standardului HTML si din octombrie 2011 este in curs de dezvoltare.
Acest limbaj se bazeaza pe prezentarea continutului si structurarea in world wide web.
Obiectivele sale principale au fost acelea de a imbunatati limbajul cu un suport pentru cele mai recente
aparitii multimedia. HTML 5 isi propune sa cuprinda nu numai HTML 4.0 dar si XHTML 1.
HTML 5 devine o incercare de a define un singur limbaj de marcare care poate fi scris in oricare
dintre sintaxele HTML sau XHTML.
Acesta include modele detaliate de prelucrare pentru a incuraja mai multe implementari
interoperabile, extinde, imbunatateste si rationalizeaza disponibilitatile pentru documentele web si
introduce marcarea si aplicatii API(application programming interfaces) pentru aplicatii web complexe.
HTML 5 este un posibil candidat pentru aplicatiile de platforme mobie, multe caracteristici au fost
create din considerarea ca va trebui sa devina capabil sa ruleze pe dispositive cum ar fi o tableta sau un
smart-phone.
Aduce multe noi caracteristici sintactice, acesta cuprinzand elemente ca <video>, <audio>,
precum si integrarea continutului SVG(Scalable Vector Graphics) care inlocuieste utilizarea tag-ului
<object> .
Aceste noutati sunt proiectate pentru a facilita includerea si manipularea in web a continuturilor
multimedia si grafice fara a fi nevoie sa se recurga la proprietatile de plugin si API.
XHTML5
XHTML5 este serializarea XML a HTML5, documentele XML trebuie servite cu un tip XML
media de internet. HTML 5 necesita utilizarea stricata a XML, sintaxa bine formata.
Alegerea intre HTML5 si XHTML5 se rezuma la alegerea tipului de continut MIME: tipul de
media ales determina ce tip de document se va folosi. In XHTML5 html exista si poate fi chiar omis.
Lista elementelor noi in HTML 5.0:
Tag-ul

Descrierea

<article>

marcheaza un articol

<aside>

marcheaza un continut aparte fata de continutul paginii, dar care are legatura cu el.

<audio>

marcheaza introducerea de continut audio

<canvas>

marcheaza introducerea de continut grafic

<command> marcheaza un buton de comanda


<datalist>

marcheaza un meniu drop-down

<details>

marcheaza detaliile unui element

<dialog>

marcheaza un dialog, o conversatie

<embed>

marcheaza continut interactiv extern sau introducerea unui plugin

<figure>

marcheaza un grup de elemente care au legatura unul cu celalalt si care pot fi considerate in
pagina, continut de sine statator.

<footer>

marcheaza sectiunea footer a pagini

<header>

marcheaza sectiunea header a pagini

<hgroup>

marcheaza o sectiune a pagini

<keygen>

marcheaza un cod generat automat intr-un formular

<mark>

marcheaza text evidentiat

<meter>

marcheaza valoarea unei unitati de masura cunoscute

<nav>

marcheaza o bara de navigare cu linkuri

<output>

marcheaza diferite tipuri de rezultate ale unui script oarecare.

<progress>

marcheaza o bara de progres fie ea grafica sau numerica

<rp>

defineste continut care va fi afisat in cazul in care browser-ul nu supotra tag-ul ruby

<rt>

defineste o regula sau o explicatie pentru tagul ruby

<ruby>

folosit impreuna cu caracterele asiatice

<section>

marcheaza o sectiune oarecare (header, footer, bara de navigare, capitole sau orice alta
sectiune)

<source>

marcheaza sursa fisierului multimedia

<time>

marcheaza ora / data

<video>

marcheaza introducerea unui video

Tag-ul

Atribute noi pentru Tag-ul input:


Descrierea

tel

Valoare de tip numar de telefon

search

Valoare de tip camp de cautare

url

Valoare de tip URL. (link)

email

Valoare de tip adresa de email.

datetime

Valoarea este de tip data sau timp

date

Valoarea este de tip data

month

Valoarea reprezinta una din lunile anului

week

Valoarea reprezinta una din saptamanile zilelor.

time

Valoarea este de tip timp

datetime-local

Valorea este de tip date/time local

number

Valoarea este un numar

range

Valoarea este un numar dintr-un interval dat

color

Valoarea este o culoare in hexazecimal. Ex: #FF8800

placeholder

Specifica un indiciu care descrie valoarea preconizata a unui camp.

Article III.
1.1 Tag-uri de baz
Sfritul de linie
Dup cum se observ, caracterele enter , tab i spaiile multiple sunt ignorate de ctre browser. Trecerea pe o
linie nou se face prin inserarea marcajului <br> (line break). Nu are form de nchidere. Introducerea unui
spaiu se poate face prin construcia: &nbsp;.

Tabelul 2 prezint corespondena dintre caracterele speciale i codul acestora.


a)
b) Tabelul 2 Entitaile caracter cele utilizate
2)
secven
i)
caracter
descriere
cod zecimal
cod
Spatiu nedivizibil &nbsp;
&#160;
<
Mai mic dect
&lt;
&#60;
>
Mai mare dect
&gt;
&#62;
&
Ampersand
&amp;
&#38;

Ghilimele
&quot;
&#34;

Apostrof
&#39;

Sectiune
&sect;
&#167;

Copyright
&copy;
&#169;

Marca nregistrata &reg;


&#174;

Multiplicare
&times;
&#215;

mpartire
&divide;
&#247;

Euro
&euro;
&#8364;
Culoarea de fond i culoarea textului
O culoare se compune din diferite procentaje ale culorilor de baza rosu, verde i albastru (RGB Red, Green,
Blue) i poate fi precizat n trei moduri:
1. folosind numele culorii (red, de exemplu, adic rou); sunt disponibile cel puin 16 nume de culori: aqua,
black, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white i yellow.
2. cu combinaia valorii zecimale a celor trei culori de baza, fiecare lund o valoare ntreaga de la zero la 255,
de exemplu rgb(255,0,0), care este tot rou (verdele i albastrul sunt zero); observai sintaxa
(rgb(codrosu,codverde,codalbastru));
3. cu combinatia valorii hexazecimale a celor trei culori de baza, fiecare lund o valoare de la zero la FFhexa,
de exemplu #FF0000 este tot rou, deoarece FF (pentru rou) hexazecimal este 255 zecimal, iar 00
este zero i n zecimal;
Culorile specificate n hexazecimal sunt recunoscute de toate browserele.
Tabelul 3. Utilizarea codurilor hexa
DENUMIRE
COD HEXA
CULOARE
aqua
#00FFFF
black
#000000
blue
#0000FF
fuchsia
#FF00FF
gray
#808080
green
#008000
lime
#00FF00
maroon
#800000
navy
#000080
olive
#808000
purple
#800080
red
#FF0000
silver
#C0C0C0
teal
#008080
white
#FFFFFF
yellow
#FFFF00

Section 3.02
Utilizarea culorilor pentru tagul <body>
n tag-ul <body>, puteti specifica culoarea fundalului, sau a textului, a legaturilor nevizitate, a celor vizitate sau a
celor activate.
atribut
efect
bgcolor
fundal
text
text
link
legatur nevizitat
vlink
legatur vizitat
alink
legatur activ
Stiluri pentru blocurile de text. Unui text i se pot aplica diverse stiluri prin folosirea marcajelor:
NUME TAG
<b><b>
<big></big>
<em></em>
<i></i>
<small></small>
<strong> </strong>
<sub></sub>
<sup></sup>
<s>.</s>
<del></del>
<u></u>

EFECT
text ngrosat
text cu caractere mari
text evidentiat
text italic
text cu caractere mici
text mai evidentiat dect <em>
indice inferior (subscript)
indice superior (superscript)
text taiat
text sters
text subliniat

Blocuri paragraf
Cu ajutorul etichetei paragraf <p> este posibil trecerea la o linie noua i permite:
- inserarea unui spaiu suplimentar nainte de blocul paragraf;
- inserarea unui spaiu suplimentar dup blocul paragraf, daca se folosete delimitatorul </p> (acesta fiind
opional);
- alinierea textului cu ajutorul atributului align, avnd valorile posibile left , center , right i
justify.
Blocuri de titlu
ntr-un text titlurile (headers) de capitole pot fi introduse cu ajutorul etichetelor <h1>, <h2>, <h3>, <h4>, <h5>,
<h6>.
Toate aceste etichete se refera la un bloc de text i trebuie nsoite de o eticheta de ncheiere similara.
Aceste etichete accepta atributul align pentru alinierea titlului blocului de text la stanga (n mod prestabilit ) , n
centru i la dreapta. Tag-ul <h1> permite scrierea unui titlu cu caractere mai mari i aldine, pe cnd <h6> folosete
caracterele cele mai mici.
Linii orizontale
ntr-o pagina Web pot fi inserate linii orizontale. Acest lucru se face cu ajutorul etichetei <hr>. Pentru a configura
o linie orizontala se utilizeaz urmtoarele atribute ale etichetei <hr> care sunt:
align permite alinierea liniei orizontala. Valorile posibile sunt left ,center i right;
width permite alegerea lungimii liniei;
size permite alegerea grosimii liniei;
noshade cnd este prezent definete o linie fr umbra;
color permite definirea culorii liniei.

Blocuri <center>
Blocul introdus de etichetele <center>...</center> aliniaz centrat toate elementele pe care le conine.
Fonturi
Un font este caracterizat de urmtoarele atribute:
culoare (stabilit prin atributul color);

nume (stabilit prin atributul face);


mrime (definit prin atributul size);
Toate aceste atribute aparin etichetei <font>, care permite inserarea de blocuri de texte personalizate.
Familia fontului
Pentru a scrie un text ntr-o pagina, pot fi folosite mai multe fonturi (stiluri de caractere). Exista cinci familii
generice de fonturi care sunt de regul disponibile pe toate calculatoarele utilizatorilor: serif, sans serif, cursive,
monospace i fantasy. Tipul de font necesar poate fi stabilit prin atributul face al etichetei font.
Pot fi introduse mai multe fonturi separate prin virgula. n acest caz, browserul va utiliza primul font din list
instalat pe calculatorul client.
Mrimea fontului
Pentru a stabili mrimea unui font se utilizeaz atributul size al etichetei . Valorile acestui atribut pot fi:
1, 2, 3, 4, 5, 6, 7 ( 1 pentru cel mai mic font i 7 pentru cel mai mare);
+1, +2, etc. pentru a mari dimensiunea fontului cu 1, 2, etc. fata de valoarea curenta;
-1, -2, etc. pentru a micora dimensiunea fontului cu 1, 2, etc. fata de valoarea curenta.
Utilizarea listelor
n HTML exist trei tipuri de liste care sunt:
1. liste de definiie
2. liste neordonate
3. liste ordonate
Unul din cele mai obinuite elemente din documentele cu mai multe pagini este un set de definiii, referine sau
indexuri. Glosarele sunt exemple clasice n acest sens; cuvintele sunt listate n ordine alfabetica, urmate de definiii
ale termenilor respectivi. n HTML, ntreaga seciune a unui glosar va fi gestionata prntr-o lista de definiii, care
este inclusa ntr-o pereche de marcaje de lista de definiii: <dl>...</dl> (de la definition list = lista de definiii)
Observaii:
- Un termen al listei este iniiat de eticheta <dt> (de la definition term = termen definit);
- Definiia unui termen este iniiata de eticheta <dd> (de la definition description = descrierea definiiei);
- Definiia unui termen ncepe pe o linie noua i este indentat;
O lista neordonat este un bloc de text delimitat de etichetele corespondente <ul>...</ul> ( ul vine de la
unordered list = lista neordonat). Fiecare element al listei este iniiat de eticheta <li> (list item). Lista va fi
indentat fata de restul paginii Web i fiecare element al listei ncepe pe un rnd noua.
Tag-urile <ul> i <li> pot avea un atribut type care stabilete caracterul afiat n faa fiecrui element al listei.
Valorile posibile al acestui atribut sunt:
o circle (cerc)
disc (disc plin) (valoarea prestabilita);
square (patrat)
O lista ordonat de elemente este un bloc de text delimitat de etichetele corespondente <ol>...</ol> (ol vine de
la ordered list = lista ordonata). Fiecare element al listei este introdus de eticheta <li> (list item).
Lista va fi indentat fa de restul paginii Web i fiecare element al listei ncepe pe un rnd nou.
Tag-urile <ol> i <li> pot avea un atribut type care stabilete tipul de caractere utilizate pentru ordonarea listei.
Valorile posibile sunt:
- A pentru ordonare de tipul A , B , C , D etc.;
- a pentru ordonare de tipul a , b , c , d etc.;
- I pentru ordonare de tipul I , II , III , IV etc.;
- i pentru ordonare de tipul i , ii , iii , iv etc.;
- 1 pentru ordonare de tipul 1 , 2 , 3 , 4 etc
Tag-ul <ol> poate avea un atribut start care stabilete valoarea iniiala a secvenei de ordonare. Valoarea acestui
atribut trebuie s fie un numr ntreg pozitiv.
Definirea legturi
Legaturile (link-urile) reprezint partea cea mai important a unei pagini Web.Ele transform un text obinuit n
hipertext sau hiperlegatura, care permite trecerea rapid de la o informaie aflata pe un anumit server la alt

informaie memorat pe un alt server, aflat oriunde n lume. Legturile sunt zone active ntr-o pagin Web, adic
zone de pe ecran sensibile la apsarea butonului stng al mouse-ului.
O legatura ctre o pagina aflata n acelai director
O legtur ctre o pagina aflata n acelai director se formeaz cu ajutorul etichetei <a> (de la anchor=ancora).
Pentru a preciza pagina, indicat de legtur, se utilizeaz un atribut al etichetei <a> numit href, care ia valoare
numele fiierului HTML aflat n acelai director. Zona activ, care devine sensibil la apsarea butonului stng al
mouse-ului, este formata din textul cuprins ntre etichetele <a>...</a>.
Prezena etichetei de sfrit </a> este obligatorie.
O legtur ctre un site particular
n exemplul urmtor se utilizeaz adresa URL www.utm.ro care ncarc pagina de start din site-ul Universitii..
<html>
<head>
<title> Link ctre site-ul UTM</title>
</head>
<body>
<h3>Link ctre site-ul UTM </h3>
<a href=http://www.opera.com>Opera 9.6 Web browser</a>
</body>
</html>
1.2 Utlizarea ancorei
ntr-o pagin foarte lung pot exista puncte de reper ctre care se definesc legturi. O ancora se definete, de
asemenea, prin eticheta <a>. Pentru a defini ancora, se utilizeaz atributul name care primete ca valoare un nume
atribuit ancorei (de exemplu leg1).
Pentru a insera o legtur ctre leg1, definit n aceeai pagina, se utilizeaz eticheta <a> avnd atributul href de
valoare #leg1.
Pentru a introduce o legtur ctre o ancor definit n alt document (alt pagin), aflat n acelai director, atributul
href primete o valoare de forma nume_fisier.html#nume_ancora.
Alegerea culorilor pentru legaturi
n mod prestabilit, se utilizeaz trei culori pentru legaturi:
culoare pentru legaturile nevizitate (nu s-a efectuat nici un clic pe ele)
culoare pentru legaturile vizitate (s-a efectuat cel puin un clic pe ele)
culoare pentru legaturile active (cnd se execut clic i se ine apsat).
Aceste atribute pot fi stabilite cu ajutorul urmtoarelor atribute ale etichetei <body>:
link pentru legaturile nevizitate;
vlink pentru legaturile vizitate;
alink pentru legaturile active.
Valorile pe care le pot lua aceste atribute sunt culori definite prin nume sau conform standardului RGB.
Utilizarea potei electronice - se utilizeaz n construcia adresei URL cuvntul mailto: urmat de o adresa e-mail
valida.
Pentru ca exemplul urmtor s funcioneze trebuie ca pe calculator s fie instalat o aplicaie de expediere a
mesajelor electronice (Outlook Express, Microsoft Outlook etc). Adresa trebuie s fie valid i calculatorul s fie
conectat la Internet.
Atributul target
Dac dorim ca pagina solicitat s fie ncrcat ntr-o alt fereastr dect cea curent, atunci trebuie lansat n
execuie o nou instan a browserului care va conine noua pagin. Acest lucru se realizeaz folosind atributul
target al etichetei <a>, care primete ca valoare un nume. Numele ferestrei poate fi folosit ca valoare pentru
atributul target i pentru alte legturi caz n care paginile respective vor fi ncrcate n aceeai fereastr. Atributul
target accept i alte valori cum ar fi _blank caz n care pagina se va ncrca ntr-o fereastr nou, anonim (nu
poate fi folosit pentru ncrcarea altor pagini).

1.3 Utilizarea imaginilor


Imaginile sunt stocate n fisiere cu diverse formate. Formatele acceptate de browsere pentru fiierele imagine sunt:
GIF (Graphics Interchange Format) cu extensia .gif;
JPEG (Joint Photographic Experts Group) cu extensia .jpeg sau .jpg;
XPM (X PixMap) cu extensia .xmp;
XBM (X BitMap) cu extensia .xbm;
BMP (BitMap) cu extensia .bmp (numai cu Internet Explorer);
TIFF (Tagged Image File Format) cu extensia .tif sau .tiff;
Cele mai rspndite formate sunt GIF (8 bii pentru o culoare, 256 culori posibile) i JPEG (24 bii pentru o
culoare, 16777216 de culori posibile). Toate imaginile cu care vom lucra vor avea adresa URL exprimata n funcie
de directorul ce conine documentul HTML care face referire la imagine. Pentru a insera o imagine ntr-o pagina, se
utilizeaz eticheta <img> (de la image=imagine). Pentru a putea fi identifica imaginea care va fi inserat, se
utilizeaz un atribut al etichetei <img> i anume src (de la source=sursa). Daca imaginea se afla n acelai
director cu fisierul HTML care face referire la imagine, atunci adresa URL a imaginii este formata numai din
numele imaginii, inclusiv extensia.
< img src=imagine.gif>
Atributul alt permite afiarea unui text alternativ n locul imaginii dac aceasta nu este ncrcat sau lng mouse
atunci cnd acesta este plasat peste imagine.
Alinierea unei imagini
Alinierea unei imagini se poate face prin intermediul atributului align care poate lua urmtoarele valori:
left - aliniere la stnga; celelalte componente sunt dispuse pe n partea dreapta;
right - aliniere la dreapta; celelalte componente sunt dispuse pe n partea stnga;
top - aliniere deasupra; partea de sus a imaginii se aliniaz cu partea de sus a textului ce precede
imaginea;
middle - aliniere la mijloc; mijlocul imaginii se aliniaz cu linia de baz a textului ce precede imaginea.
bottom - aliniere la baza; partea de jos a imaginii se aliniaz cu linia de baz a textului.
Alinierea textului n jurul imaginii
Atributele hspace i vspace precizeaz distanta n pixeli pe orizontal, respectiv pe vertical, dintre imagine i
restul elementelor din pagina.

Imagini pentru fundalul unei pagini


O imagine poate fi utilizata pentru a stabili fondul unei pagini Web. n acest scop, se folosete atributul
background al etichetei <body>, avnd ca valoare adresa URL a imaginii. Imaginea se multiplica pe orizontala i
pe verticala, pn umple ntregul ecran.
Atributul bgproperties=fixed menine imaginea fix la realizarea unei defilri n pagin.
Imagini folosite ca legturi
Pentru a utiliza imaginea strart.jpg drept legatura ctre pagina test_1.1.html utilizam sintaxa:
<a href =test_1.1.html><img src= start.jpg></a>
n mod prestabilit, imaginea utilizat pe post de zon activ este nconjurat de un chenar avnd culoarea unei
legaturi. Daca stabilim pentru atributul border al etichetei <img> valoare 0 acest chenar dispare.
1.4 Crearea tabelelor
Tabelele ne permit s crem o reea dreptunghiular de domenii, fiecare domeniu avnd propriile opiuni pentru
culoarea fondului, culoarea textului, alinierea textului etc.
Pentru a insera un tabel se folosesc etichetele corespondente
<table> </table>
Un tabel este format din rnduri. Pentru a insera un rnd ntr-un tabel se folosesc etichetele <tr> (table row=
rnd de tabel) th (table head= rnd de tabel bold). Folosirea etichetei de sfrit este opional. Un rnd este
format din mai multe celule ce conin date. O celul de date se introduce cu eticheta <td> .
n mod prestabilit, un tabel nu are chenar. Pentru a aduga un chenar unui tabel, se utilizeaz atributul border.
Acest atribut poate primi ca valoare orice numr ntreg (inclusiv 0) i reprezint grosimea n pixeli a chenarului

tabelului. Dac atributul border nu este urmata de o valoare atunci tabelul va avea o grosime prestabilita egal cu
1 pixel, o valoare egal cu 0 semnific absena chenarului. Cnd atributul border are o valoare nenul, chenarul
unui tabel are un aspect tridimensional.
Alinierea tabelului
Pentru a alinia un tabel ntr-o pagina Web, se utilizeaz atributul align al
etichetei
table
cu
urmtoarele
valori
posibile:
left
(valoarea
prestabilita), center, right.
Definirea culorilor de fond pentru un tabel
Culoarea de fond se stabilete cu ajutorul atributului bgcolor, care poate fi
ataat ntregului tabel prin eticheta table, unei linii prin eticheta tr sau
celule de date prin eticheta td. Valorile pe care le poate primi bgcolor sunt
cele cunoscute pentru o culoare. Dac n tabel sunt definite mai multe
atribute bgcolor, atunci prioritatea este urmtoarea: celul, linie, tabel.
<html>
<head><title>culoare tabel</title></head>
<body><h1 align=center>Un tabel simplu colorat</h1><hr>
<table border=3 bgcolor=green>
<tr> <td>verde 11 <td bgcolor=red>rosu 11
<tr bgcolor=blue> <td>albastru 21 <td bgcolor=yellow>galben 22
<tr bgcolor=cyan> <td>cell 31 <td>cell 32
<tr> <td>cell 41 <td bgcolor=white>cell 42
</table>
</body>
</html>

Utilizarea culorilor n tabele

Dimensionarea celulei unui tabel


Distana dintre dou celule vecine se definete cu ajutorul atributului
cellspacing al etichetei table. Valorile acestui atribut pot fi numere
ntregi pozitive, inclusiv 0, i reprezint distana n pixeli dintre dou
celule vecine. Valoarea prestabilita a atributului cellspacing este 1.
Distana dintre marginea unei celule i coninutul ei poate fi definit cu
ajutorul atributului cellpadding al etichetei table. Valorile acestui atribut
pot fi numere ntregi pozitive. Valoarea prestabilita a atributului
cellpadding este 1.
Dimensionarea unui tabel
Dimensiunile unui tabel - limea i nlimea - pot fi stabilite exact prin
intermediul a dou atribute, width i height, ale etichetei table.
Valorile acestor atribute pot fi:
numere ntregi pozitive reprezentnd limea respectiv nlimea n
pixeli a tabelului;
numere ntregi ntre 1 i 100, urmate de semnul %, reprezentnd
fraciunea din limea i nlimea total a paginii.

n exemplul urmtor, se utilizeaz un truc care permite afiarea ntr-o


pagina Web a unui text poziionat n centrul paginii.
Alinierea coninutului unei celule
Alinierea pe orizontala a coninutului unei celule se face cu ajutorul
atributului align care poate lua valorile: left (la stnga),center
(centrat , valoarea prestabilita ), right (la dreapta). Alinierea pe
verticala a coninutului unei celule se face cu ajutorul atributului valign
care poate lua valorile: bottom (jos), middle (la mijloc, valoarea
prestabilita), top (sus). Aceste atribute pot fi ataate att etichetei tr
pentru a defini tuturor elementelor celulelor unui rnd, ct i etichetelor
td pentru a stabili alinierea textului ntr-o singur celul .
Dimensionarea exacta a celulelor unui tabel
Dimensiunea unei celule poate fi stabilit exact cu ajutorul a doua atribute
ale acestor etichete: width pentru lime i height pentru nlime. Valorile
posibile ale acestor atribute sunt:
numere ntregi pozitive (inclusiv 0) reprezentnd dimensiunea n pixeli
a limii, respectiv a nlimii unei celule;
procente din limea , respectiv nlimea tabelului.
Tabele de forme oarecare
Un tabel trebuie privit ca o reea dreptunghiular de celule. Cu ajutorul a
doua atribute ale etichetelor td, o celul se poate extinde peste celule
vecine, astfel:
extinderea unei celule peste celulele din dreapta ei se face cu ajutorul
atributului colspan a crui valoare determina numrul de celule care se
unific.
extinderea unei celule peste celulele dedesubt se face cu ajutorul
atributului rowspan a crui valoare determina numrul de celule care se
unifica.
Celule vide ale unui tabel
Dac un tabel are celule vide, atunci acestea vor aprea n tabel far chenar
de delimitare. Pentru a afia un chenar, pentru celule vide, se utilizeaz
dup tagul td secvena &nbsp sau eticheta <br>. Principalele atribute pentru
etichetele <table>, <tr>, <td> i <th> sunt prezenate n tabelul 4.
Tabelul 4. Atributele tagului table
<table>

align = center/ right / left


border = nr (valori in pixeli)= reprezinta grosimea chenarului
width= nr (in pixeli) / % (un procent din fereastra curenta) reprezint latimea
tabelului
height = nr (in pixeli) / % = reprezint inaltimea tabelului
bordercolor = culoare (culoare chenarului)
bordercolorlight = culoare
bordercolordark =culoare
cele 2 atribute coloreaza coltul din stanga sus/dreapta jos.
bgcolor =culoare definete culoarea de fundal a tabelului
background = poza.gif (aplic o poz de fundal n tabel)

cellspacing = nr (in pixeli) stabileste distanta dintre celule


cellpadding= nr stabileste distanta dintre continutul celulei i marginile acesteia
Atentie!
daca se foloseste cellpadding ar trebui s nu folosim width i height .
daca se foloseste cellpadding atunci se aliniaza automat textul din celula pe centrul
acesteia.

<tr>

align = center/ right / left = aliniaza informatia in cadrul randului


bgcolor = culoare / cod culoare culoarea de fundal a rndului
height = nr / % stabileste inaltimea randului

<td>
<th>

align = center / right / left = aliniaza textul n celul


bgcolor = color / cod culoare coloreaza fundalul celulei respective
width = nr / % inaltimea celulei
rowspan= nr numrul de rnduri care se unesc
colspan= nr numrul coloane care se unesc

HARI DE IMAGINI
(vezi site-ul http://www.utm.ro/live/index.html) figura de mai jos. Imaginea este mprit n mai multe
seciuni, iar prin activarea unei seciuni se deschide un fiier, prin activarea altei seciuni un alt fiier. Seciunile se
creeaz astfel:
Introducem n pagina imaginea care reprezint harta:
< img src= harta.gif usemap= #numele hartii>
< map name= nume harta >(acelai nume al hartii ca cel de mai sus)
n interior delimitm zonele pentru clic pe mouse astfel:
Area
shape=

circle coords= x,y,r href= nume fisier.html alt= text alternativ (explicatii: circle
=decupeaza dupa o zona circulara ; x,y= reprezint coordonatele cercului n pixeli; r=raza
cercului,n pixeli; nume fisier=indica numele fisierului deschis la clic; alt arata textul
alternativ, care apare ca o eticheta cand pozitionam mouse-ul pe zona delimitata)

rect coords= x1,y1,x2, y2 href= nume fisier.html alt= text (explicatii: rect =
decupeaza dupa o zona dreptunghiulara; x1,y1= colt stanga sus; x2,y2 = colt dreapta)

poly coords=x1,y1,x2,y2,x3,y3,x4,y4....xn,yn href= nume fisier.html alt= text


(explicatii: poly=de la poligon , decupeaza dupa un poligon; x1,y1...xn,yn =unde n trebuie
s aiba valoarea de minim 3 (un poligon are minim 3 laturi, de exemplu, triunghiul); perechile
x,y reprezinta coordonatele )

Harta se inchide cu eticheta: </map>

Exemplu de pagina ce conine eticheta <map>


Aplicaie:
S se creeze un fiier ce conine o hart, astfel nct:
pentru cerc definim valorile: 150, 150, 100.
pentru dreptunghi definim valorile :350,150,550,275,
pentru poligon definim valorile : 350, 400, 200, 500,500.

<html>
<head>
<title>Harti de Imagini </title>
</head>
<body>
<img src=poze/Imag0061.jpg width=400 height=400 usemap=#dzip>
<map name=dzip>
<area shape=circle coords=100,100,30 href=cv.html alt=CV target=_blank>
<area shape=rect coords=250,250,350,350 href=ex1.html alt=1>
<area shape=poly coords=50,350,150,350,100,250 href=ex1.html alt=2>
</map>
</body>
</html>

1.5 Cadre n HTML (frames)


Cadrele ne permit s definim, n fereastra browser-ului, zone n care s fie ncrcate documente HTML diferite.
Cadrele sunt definite ntr-un fiier HTML special, unde blocul <body>...</body> este nlocuit de blocul
<frameset>...</frameset>.
n interiorul acestui bloc, fiecare cadru este introdus prin eticheta <frame>.
Un atribut obligatoriu al etichetei <frame> este src, care primete ca valoare adresa URL a documentului HTML
care va fi apoi ncrcat n acel cadru.
Definirea cadrelor se face prin mprirea ferestrei pe orizontal sau pe vertical cu atributele:
cols mprirea unei ferestre ntr-un numr de cadre pe vertical;
rows mprirea unei ferestre ntr-un numr de cadre pe orizontal;
-

Valoarea atributelor cols i rows este o list de elemente, separate prin virgul, care descriu modul n care se
face mprirea. Elementele listei pot fi:
un numr ntreg de pixeli;
procente din dimensiunea ferestrei (numr ntre 1 i 99 terminat cu %);
n* care nseamn n pri din spaiul rmas;
Exemplul 1: <frameset cols=300,*,50%,*> nseamn o mprire n 4 cadre pe vertical, dintre care primul are
300 pixeli, al treilea ocup jumtate din spaiul total disponibil, iar al doilea i al patrulea ocup, n mod egal, restul
de spaiu rmas disponibil.
Exemplu 2: <frameset rows=300,1*,50%,2*> nseamn o mprire n 4 cadre, dintre care primul are 300 pixeli ,
al treilea ocup jumtate din spaiul total disponibil, iar al doilea i al patrulea ocup, n mod egal, restul de spaiu
rmas disponibil, care se mparte n trei pri egale, al doilea cadru ocupnd o parte , iar al patrulea ocupnd 2 pri.
Observatii: dac mai multe elemente din list sunt configurate cu * , atunci spaiul disponibil rmas pentru ele se
va mpri n mod egal. ntr-un cadru se poate ncrca un document HTML sau poate fi mprit la rndul su n alte
cadre (folosind <frameset>).
n exemplul urmtor, este creat o pagina Web cu trei cadre orizontale. Pentru al doilea cadru valoarea atributului
src este adresa URL a unei imagini.
n exemplul urmtor, este creat o pagina Web cu trei cadre mixte. Pentru a o crea se procedeaz din aproape n
aproape. Mai nti, pagina este mprit n dou cadre de tip coloan, dup care al doilea cadru este mprit n
doua cadre de tip linie.
<html>
<head><title>cadre</title></head>
<frameset cols=20%,*>
<frame src=p1.html>
<frameset rows=*,*>
<frame src=p1.html>
<frame src=p1.html>
</frameset>
</frameset>
</html>

Culori pentru chenarele cadrelor i dimensionarea chenarului unui cadru


Pentru a stabili culoarea chenarului unui cadru se utilizeaz atributul bordercolor. Acest atribut primete ca
valoare un nume de culoare sau o culoare definit n conformitate cu modelul de culoare RGB. Atributul
bordercolor poate fi ataat att etichetei <frameset> pentru a stabili culoarea tuturor chenarelor cadrelor
incluse, ct i etichetei <frame> pentru a stabili culoarea chenarului pentru un cadru individual. Atributul border
al etichetei <frameset> permite configurarea limii chenarelor tuturor cadrelor la un numr dorit de pixeli.
Valoarea prestabilita a atributului border este de 5 pixeli. O valoare de 0 pixeli va defini un cadru fr chenar. n
mod prestabilit, chenarul unui cadru este afiat i are aspect tridimensional. Afiarea chenarului unui cadru se poate

dezactivata dac se utilizeaz atributul frameborder cu valoare no. Acest atribut poate fi ataat att etichetei
<frameset> ct i etichetei <frame> (dezactivarea fiind valabil numai pentru un singur cadru). Valorile posibile ale
atributului frameborder sunt: yes - echivalent cu 1; no - echivalent cu 0;
Bare de defilare
Atributul scrolling al etichetei <frame> este utilizat pentru a aduga unui cadru o bar de derulare care
permite navigarea n interiorul documentului afiat n interiorul cadrului. Valorile posibile sunt:
yes - barele de derulare sunt adugate ntotdeauna;
no - barele de derulare nu sunt utilizabile;
auto - barele de derulare sunt vizibile atunci cnd este necesar.
Atributul noresize al etichetei <frame> (fr nici o valoare suplimentar) dac este prezent, inhib posibilitatea
prestabilit a utilizatorului de a redimensiona cadrul cu ajutorul mouse-ului.
Poziionarea documentului ntr-un cadru
Atributele marginheight i marginwidth ale etichetei <frame> permit stabilirea distanei n pixeli dintre
coninutul unui cadru i marginile verticale, respectiv orizontale ale cadrului . Valori posibile sunt: numrul de
pixeli sau procent din limea, respectiv din nlimea cadrului;

Cadre interne (n-line)


Un cadru intern este specificat prin intermediul blocului <iframe>...</iframe>. Acesta se introduce ntr-o pagina
Web n mod asemntor cu o imagine aa cum rezulta din urmtorul exemplu:
<iframe src=ex_3.1.html height=40% width=50%> </iframe>
n acest caz, am specificat un cadru intern care are 40% din nlimea i 50% din limea paginii curente.
Atributele acceptate de eticheta <iframe> sunt n parte preluate de la etichetele <frame> i <frameset>, cum ar fi:
src, border, frameborder, bordercolor, marginheight, marginwidth, scrolling, name, noresize; sau de la eticheta
<img> vspace, hspace, align, width, height;
inte pentru legaturi
n mod prestabilit, la efectuarea unui clic pe o legtura noua pagin (ctre care indic legtura) o nlocuiete pe cea
curent n aceeai fereastr (acelai cadru). Acest comportament se poate schimba n doua moduri:
prin plasarea n blocul <head>...</head> a unui element <base> care precizeaz, prin atributul target
numele ferestrei (cadrului) n care se vor ncrca toate paginile noi referite de legaturile din pagina curenta
conform sintaxei:
<base target=nume_ferastra/frame_de_baza> ;
prin plasarea n eticheta <a> a atributului target, care precizeaz numele ferestrei (cadrului) n care se va
ncrca pagina nou referit de legtur, conform sintaxei: <a href=fiier.html
target=nume fereastra/frame> ... </a> .
Observaie.
Daca este prezent att un atribut target n <base>, ct i un atribut target n <a>, atunci cele precizate de
atributul target din <a> sunt prioritare.
Numele unui cadru este stabilit prin atributul name al etichetei <frame> conform sintaxei: <frame
name=nume cadru>

Valori pentru atributul target


Atributul target al etichetei<frame> accepta anumite valori predefinite care sunt:

Target

_self (ncrcarea noii pagini are loc n cadrul curent);


_blank (ncrcarea noii pagini are loc ntr-o fereastra noua anonima);
_parent (ncrcarea noii pagini are loc n cadrul parinte al cadrului
curent daca acesta exista, altfel are loc n fereastra browserului curent);
_top (ncrcarea noii pagini are loc n fereastra browserului ce contine cadrul
curent)

1.6 Definirea formularelor


Un formular este un ansamblu de zone active alctuit din butoane, casete de selecie, cmpuri de editare etc.
Formularele sunt utilizate pentru construirea unor pagini Web care permit utilizatorilor s introduc efectiv
informaii i s le transmit serverului. Formularele pot varia de la o simpl caset de text, pentru introducerea unui
ir de caractere pe post de cheie de cutare - element caracteristic tuturor motoarelor de cutare din Web - pn la o
structur complex, cu multiple seciuni, care ofer faciliti puternice de transmisie a datelor. O sesiune cu o
pagina web ce conine un formular are urmtoarele etape:
utilizatorul completeaz formularul i l expediaz unui server;
aplicaie dedicat de pe server analizeaz formularul completat i (dac este necesar) stocheaz datele ntr-o
baz de date;
dac este necesar serverul expediaz un rspuns utilizatorului.
Un formular este definit ntr-un bloc delimitat de etichetele corespondente <form> i </form>.
Atribute eseniale ale elementului <form>
- atributul action precizeaz ce se va ntmpla cu datele formularului odat ce acestea ajung la destinaie. De
regul, valoarea atributului action este adresa URL a unui script aflat pe un server WWW care primete
datele formularului, efectueaz o prelucrare a lor i expediaz ctre utilizator un raspuns.
<form action=http://www.yahoo.com/cgi - bin/nume_fis.cgi>.
Script-urile pot fi scrise n limbajele CGI, Perl, C, PHP, Unix shell etc.
- atributul method precizeaz metod utilizata de browser pentru expedierea datelor formularului. Sunt posibile
urmtoarele valori:
- get (valoarea implicita). n acest caz ,datele din formular sunt adugate la adresa URL precizata
de atributul action; nu sunt permise cantiti mari de date (maxim 1 Kb)- ntre adresa URL i
date este inserat un ?. Datele sunt adugate conform sintaxei: nume_camp =
valoare_camp. ntre diferite seturi de date este introdus un &. Exemplu:
http://www.yahoo.com/cgi-bin/nume_fis.cgi?nume1 = valoare1&nume2
= valoare2;
- post. n acest caz datele sunt expediate separat. Sunt permise cantiti mari de date (ordinul MB)
Pentru ca un formular s fie funcional, trebuie precizat ce se va ntmpla cu el, dup completare i expediere. Cel
mai simplu mod de utilizare a unui formular este expedierea acestuia prin posta electronica (e-mail). Pentru aceasta
se folosete atributul action care primete ca valoare mailto:adresa e-mail.
Formular cu cmp de editare i buton de expediere
Majoritatea elementelor unui formular sunt definite cu ajutorul etichetei <input>. Pentru a preciza tipul
elementului se folosete atributul type al etichetei <input>. Pentru un cmp de editare, acest atribut primete
valoarea text. Alte atribute pentru un element <input> sunt:
atributul name ,permite ataarea unui nume fiecrui element al formularului.
atributul value ,care permite atribuirea unei valori iniiale unui element al formularului.
un buton de expediere al unui formular se introduce cu ajutorul etichetei <input>, n care atributul type
este configurat la valoarea submit. Acest element poate primi un nume prin atributul name. Pe buton
apare scris Submit Query sau valoarea atributului value , dac aceasta valoare a fost stabilit.
Pentru elementul <input> de tipul cmp de editare (type = text) , alte doua atribute pot fi utile:
atributul size specifica limea cmpului de editare;

atributul maxlength specifica numrul maxim de caractere pe care le poate primi un cmp de editare.
-

Observaii:
daca atributul type lipsete ntr-un element <input> , atunci cmpul respectiv este considerat n mod
prestabilit ca fiind de tip text.
Formularele, cu un singur cmp (de tip text), nu au nevoie de un buton de expediere, datele sunt expediate
automat dup completarea i apsarea tastei ENTER.

Butoane
Butonul Reset
Daca un element de tip <input> are atributul type configurat la valoarea reset, atunci n formular se introduce
un buton pe care scrie Reset. La apsarea acestui buton, toate elementele din formular primesc valorile
prestabilite (definite odat cu formularul), chiar dac aceste valori au fost modificate de utilizator. Un buton Reset
poate primi un nume cu ajutorul atributului name i o valoare printr-un atribut value. Un asemenea buton
afieaz textul Reset, dac atributul value lipsete, respectiv valoarea acestui atribut n caz contrar .

Cmp de editare de tip password


Daca se utilizeaz eticheta <input> avnd atributul type, configurat la valoarea password, atunci n formular
se introduce un element asemntor cu un cmp de editare obinuit (introdus prin type=text).
Toate atributele unui cmp de editare rmn valabile. Singura deosebire const n faptul c acest cmp de editare
nu afieaz caracterele n clar.

Butoane radio
Butoanele radio permit alegerea, la un moment dat, a unei singure variante din mai multe posibile. Acestea se
introduc ca familii de butoane prin eticheta <input> cu atributul type avand valoarea radio, iar atributul name
trebuie s primeasc aceeai valoare pentru fiecare buton dintr-o familie.

La expedierea formularului se va transmite una dintre perechile sex=m sau sex=f, n funcie de alegerea fcut
de utilizator.
Casete de validare
O caseta de validare (checkbox) permite selectarea sau deselectarea unei opiuni.
Pentru inserarea unei casete de validare se utilizeaza eticheta <input> cu atributul type configurat la
valoarea checkbox .
Observaii.
fiecare caset poate avea un nume definit prin atributul name;
fiecare caset, la fel ca i butonul radio, poate avea valoarea prestabilita selectat, definit cu atributul
checked.
Casete de fiiere
Pentru pereche name i value a unui formular se poate utiliza ntregul coninut al unui fiier pe post de valoare.
Pentru aceasta se insereaz un element <input> ntr-un formular, cu atributul <type> avnd valoarea file (fiier).
Atributele pentru un element de tip caset de fiiere sunt:
atributul name ce permite ataarea unui nume;
atributul value ce primete ca valoare adresa URL a fiierului care va fi expediat o data cu formularul.
Aceast valoare poate fi atribuit direct atributului value, poate fi tastata ntr-un cmp de editare ce apare
o data cu formularul sau poate fi selectat prin intermediul unei casete de tip File Upload sau Choose File
care apare la apsarea butonului Browse... din formular .

Liste de selectie
O lista de selectie permite utilizatorului s aleag unul sau mai multe elemente dintr-o list finit. Lista de selecie
este inclus n formular cu ajutorul etichetelor corespondente <select> i </select>. O list de selecie poate avea
urmtoarele atribute:
atributul name, care ataeaz listei un nume (utilizat n perechile name=value expediat serverului);
atributul size, care precizeaz (printr-un numr ntreg pozitiv , valoarea prestabilita fiind 1) cte elemente
din list sunt vizibile la un moment dat pe ecran (celelalte devenind vizibile prin acionarea barei de
derulare ataate automat listei).
Elementele unei liste de selecie sunt incluse n lista cu ajutorul etichetei <option>. Doua atribute ale etichetei
option se dovedesc utile:
atributul value primeste ca valoare un text care va fi expediat server-ului n perechea name=value; dac
acest atribut lipsete , atunci ctre server va fi expediat textul ce urmeaz dup <option>;
atributul selected (fr alte valori) permite selectarea prestabilita a unui element al listei.

Cmpuri de editare multilinie


ntr-un formular cmpuri de editare multilinie pot fi incluse cu ajutorul etichetei <textarea>. Eticheta are
urmtoarele atribute:
atributul cols, care specifica numrul de caractere afiate ntr-o linie;
atributul rows, care specifica numrul de linii afiate simultan;
atributul name, care permite ataarea unui nume cmpului de editare multilinie;
atributul wrap, care determin comportamentul cmpului de editare fa de sfritul de linie.

ntr-un formular pot fi afiate butoane fr un rol prestabilit. Cnd utilizatorul apas un buton, se lanseaz n
execuie o funcie de tratare a acestui eveniment. Limbajul HTML nu permite scrierea unor astfel de funcii (acest
lucru este posibil daca se utilizeaz limbaje de scriptare precum JavaScript, VBScript). Pentru a insera un buton
ntr-un formular , se utilizeaz eticheta <input> avnd atributul type configurat cu valoarea button. Alte doua
atribute ale elementului button sunt:
atributul name, care permite ataarea unui nume butonului
atributul value, care primete ca valoare textul ce va fi afisat pe buton.

1.7 Stiluri
Stilurile pun la dispoziia creatorilor de site-uri noi posibiliti de personalizare a paginilor Web. Un stil reprezint
un mod de a scrie un bloc de text (adic anumite valori pentru font, mrime, culoare, aliniere, distane fa de
margini etc).
Exista doua modaliti de a defini un stil:
sintaxa CSS (Cascading Style Sheets);
sintaxa Javascript.
Stilurile sunt introduse n doi pai care sunt:
definirea stilului;
precizarea domeniului de aplicare a stilului.

Stilurile se pot defini in fisiere externe cu extensia CSS, astfel incat se pot utiliza toate proprietatile CSS
si se asociaza cu documentele HTML cat si XML.
In HTML, legatura cu documentul CSS extern se precizeaza in interiorul elementului astfel <head>:
<link rel=stylesheet type=text/css href=exemplu.css /> </head>
Pentru XML: <?xml-stylesheet href=exemplu.css type=text/css?>

Stilurile sunt de finite n cadrul blocului <head></head> ntre etichetele <style></style>. n funcie de modul
de definire, putem avea:
Stiluri dedicate
Aceste stiluri se aplica blocurilor de text pentru care sunt definite. De exemplu:
<head><style>
h1 {text-align:center; color:red;}
</style>
</head>
Toate titlurile care apar n pagina ca fiind de mrime 1 vor fi de culoare roie i centrate. Daca dorim ca acelai stil
s fie utilizat de ctre mai multe elemente (de ex. h1, h2, i p) atunci se utilizeaz o lista acestor elemente,
separate prin virgula:
<style>
h1, h2, p {text-align:center; color:red;}
</style>
Clase de stiluri
Aceste stiluri permit definirea unui stil general i folosirea lui oriunde este necesar. Exemplu: Definim o clas de
stiluri ac (albastru i centrat) n interiorul blocului <style>...</style>, aflat la rndul lui n blocul
<head>...</head>:
<style>
.ac {text-align:center; color:blue;}
</style>
Dac dorim ca un titlu de mrimea 2 s foloseasc clasa de stiluri ac atunci scriem: <h2 class = ac>Acesta
este un header de marime 2 albastru i centrat</h2>
Stiluri identificate
Toate elementele unui document admite un atribut universal numit id. Atributul id poate identifica stilul utilizat
de un element. Pentru a utiliza un stil identificat procedai astfel:
- n blocul <style>...</style> introducei definiia stilului conform sintaxei:
<style>
#verde { color: green }
</style>
Configurarea fontului folosind stilurile
Mrimea fontului este stabilit prin atributul font-size. Valori posibile:
- predefinite: xx-small, x-small, small, medium, large, x-large, xx-large
- numr urmat de unitate de msur (pt, px, n, mm, cm)
Tipul fontului este stabilit prin atributul font-family: list de fonturi separate prin virgula. Se pot utiliza cele 5
familii generice: serif, sans-serif, cursive, monospace, fantasy.
Grosimea fontului - font-weight: valori posibile:
- normal, bold, bolder, lighter.
- numere ntre 100 (cel mai subtire) i 900 (cel mai gros)
Stilul fontului - font-style: normal, italic, oblique
<html>
<head><title>configurarea fontului</title>
<style>
#s1 {font-size:16pt; font-family:verdana;}
#s2 { font-size:2cm; font-family:Arial; font-weight:900}
#s3 { font-size:20px; font-family:fantasy;font-style:italic;}

</style>
</head>
<body>
<div id=s1>text introdus cu font verdana, dimensiune 16pt</div>
<div id=s2>text introdus cu font arial, dimensiune 2 cm, ingrosat</div>
<div id=s3>text introdus cu font generic fantasy, dimensiune 20 pixeli, inclinat</div> </body> </html>
Culoarea textului este stabilit prin atributul color. Culoarea fondului textului este stabilit prin
atributul background-color. Valorile posibile sunt aceleai cu ale atributului color.
Imaginea de fond a textului este stabilit prin atributul background-image = url(adresa imaginii folosite).
Alinierea textului este stabilit prin atributul text-align: left, center, right, justify. Decorarea textului este
stabilit prin atributul text-decoration: none, underline, line-through, overline.
<html>
<head><title>configurarea textului</title>
<style>
#s1 {color:red;background-color:yellow;text-align:center}
#s2 { color:cyan;background-color:black;text-align:right}
#s3 { color:BLACK;background-image:url(w3.gif);text-decoration:overline}
</style></head><body>
<div id=s1>text rosu pe fundal galben</div>
<div id=s2>text cyan pe fundal negru</div>
<div id=s3>text cu imagine de fundal<br> text cu imagine de fundal<br> text cu
imagine de fundal<br> text cu imagine de fundal<br> text cu imagine de
fundal<br> text cu imagine de fundal<br>
</div></body></html>

Font Properties
Font Family
Font Style
Font Variant
Font Weight
Font Size
Font
Font Family
Syntax:

font-family: [[<family-name> | <generic-family>],]*


[<family-name> | <generic-family>]

Possible Values: <family-name>


Any font family name may be used
<generic-family>
serif (e.g., Times)
sans-serif (e.g., Arial or Helvetica)
cursive (e.g., Zapf-Chancery)
fantasy (e.g., Western)
monospace (e.g., Courier)
Initial Value:

Determined by browser

Applies to:

All elements

Inherited:

Yes

P { font-family: New Century Schoolbook, Times, serif }


Font Style
Syntax:

font-style: <value>

Possible Values: normal | italic | oblique

Initial Value:

normal

Applies to:

All elements

Inherited:

Yes

H1 { font-style: oblique }
P { font-style: normal }
Font Variant
font-variant: <value>

Syntax:

Possible Values: normal | SMALL-CAPS


Initial Value:

normal

Applies to:

All elements

Inherited:

Yes

SPAN { font-variant: small-caps }


Font Weight
Syntax:

font-weight: <value>

Possible Values: normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600
| 700 | 800 | 900
Initial Value:

normal

Applies to:

All elements

Inherited:

Yes

H1 { font-weight: 800 }
P { font-weight: normal }
Font Size
Syntax:

font-size: <absolute-size> | <relative-size> | <length> |


<percentage>

Possible Values:

<absolute-size>
xx-small | x-small | small | medium | large | x-large |
xx-large
<relative-size>
larger | smaller
<length>
<percentage> (in relation to parent element)

Initial Value:

medium

Applies to:

All elements

Inherited:

Yes

H1 { font-size: large }
P { font-size: 12pt }
LI { font-size: 90% }
STRONG { font-size: larger }
H1 { font-size: 200% }
Font
Syntax:
Possible
Values:

font: <value>

[ <font-style> || <font-variant> || <font-weight> ]? <fontsize> [ / <line-height> ]? <font-family>

Initial Value:

Not defined

Applies to:

All elements

Inherited:

Yes

P { font: italic bold 12pt/14pt Times, serif }


Color and Background Properties

Color

Background Color

Background Image

Background Repeat

Background Attachment

Background Position

Background
Color
color: <color>

Syntax:

Initial Value: Determined by browser


Applies to:

All elements

Inherited:

Yes

H1 { color: blue }
H2 { color: #000080 }
H3 { color: #0c0 }
Background Color
background-color: <value>

Syntax:

Possible Values: <color> | transparent


Initial Value:

transparent

Applies to:

All elements

Inherited:

No

BODY { background-color: white }


H1 { background-color: #000080 }
Background Image
background-image: <value>

Syntax:

Possible Values: <url> | none


Initial Value:

none

Applies to:

All elements

Inherited:

No

BODY { background-image: url(/images/foo.gif) }


P { background-image: url(http://www.htmlhelp.com/bg.png) }
Background Repeat
Syntax:

background-repeat: <value>

Possible Values: repeat | repeat-x | repeat-y | no-repeat


Initial Value:

repeat

Applies to:

All elements

Inherited:

No

BODY { background: white url(candybar.gif);


background-repeat: repeat-x }
Background Attachment
background-attachment: <value>

Syntax:

Possible Values: scroll | fixed


Initial Value:

scroll

Applies to:

All elements

Inherited:

No

BODY { background: white url(candybar.gif);


background-attachment: fixed }
Background Position
background-position: <value>

Syntax:

Possible Values: [<percentage> | <length>]{1,2} | [top | center |


bottom] || [left | center | right]
Initial Value:

0% 0%

Applies to:

Block-level and replaced elements

Inherited:

No

Horizontal keywords (left, center, right)


Vertical keywords (top, center, bottom)
Background
Syntax:

background: <value>

Possible Values:

<background-color> || <background-image> ||
<background-repeat> || <background-attachment> ||
<background-position>

Initial Value:

Not defined

Applies to:

All elements

Inherited:

No

BODY
{ background: white url(http://www.htmlhelp.com/foo.gif) }
BLOCKQUOTE { background: #7fffd4 }
P
{ background: url(../backgrounds/pawn.png) #f0f8ff fixed }
TABLE
{ background: #0c0 url(leaves.jpg) no-repeat bottom right }
Text Properties
Word Spacing
Letter Spacing
Text Decoration
Vertical Alignment
Text Transformation
Text Alignment
Text Indentation
Line Height
Word Spacing
Syntax:

word-spacing: <value>

Possible Values: normal | <length>


Initial Value:

normal

Applies to:

All elements

Inherited:

Yes

The word-spacing property defines an additional amount of space between words. The value must be in the length
format; negative values are permitted.
Examples:
P EM { word-spacing: 0.4em }
P.note { word-spacing: -0.2em }
Letter Spacing
letter-spacing: <value>

Syntax:

Possible Values: normal | <length>


Initial Value:

normal

Applies to:

All elements

Inherited:

Yes

The letter-spacing property defines an additional amount of space between characters. The value must be in the
length format; negative values are permitted. A setting of 0 will prevent justification.
Examples:
H1 { letter-spacing: 0.1em }
P.note { letter-spacing: -0.1em }
Text Decoration
Syntax:

text-decoration: <value>

Possible Values: none | [ underline || overline || line-through || blink ]


Initial Value:

none

Applies to:

All elements

Inherited:

No

The text-decoration property allows text to be decorated through one of five properties: underline, overline, linethrough, blink, or the default, none.
For example, one can suggest that links not be underlined with
A:link, A:visited, A:active { text-decoration: none }
Vertical Alignment
Syntax:

vertical-align: <value>

Possible Values: baseline | sub | super | top | text-top | middle | bottom


| text-bottom | <percentage>
Initial Value:

baseline

Applies to:

Inline elements

Inherited:

No

The vertical-align property is particularly useful for aligning images. Some examples follow:
IMG.middle { vertical-align: middle }
IMG
{ vertical-align: 50% }
.exponent { vertical-align: super }
Text Transformation
Syntax:

text-transform: <value>

Possible Values: none | capitalize | UPPERCASE | lowercase


Initial Value:

none

Applies to:

All elements

Inherited:

Yes

H1 { text-transform: uppercase }
H2 { text-transform: capitalize }
Text Alignment
text-align: <value>

Syntax:

Possible Values: left | right | center | justify


Initial Value:

Determined by browser

Applies to:

Block-level elements

Inherited:

Yes

H1
{ text-align: center }
P.newspaper { text-align: justify }
Text Indentation
text-indent: <value>

Syntax:

Possible Values: <length> | <percentage>


Initial Value:

Applies to:

Block-level elements

Inherited:

Yes

P { text-indent: 5em }
Line Height
Syntax:

line-height: <value>

Possible Values: normal | <number> | <length> | <percentage>


Initial Value:

normal

Applies to:

All elements

Inherited:

Yes

P { line-height: 200% }

Orice tip de continut(text sau imagine) este incadrat intr-o boxa de afisare, marginita de zonele de
padding, border si margin, fiecare avand laturile: top, left, bottom si right.

Borduri in css

1.8 Straturi
Un strat este vzut ca un bloc de text sau elemente HTML, care poate fi dimensionat i poziionat cu exactitate n
pagin. Straturile pot fi transparente sau opace i se pot suprapune. Se definesc cu ajutorul atributelor stilurilor i se
introduc n pagina prin marcaje <div> sau <span>. Un strat motenete toate atributele stilurilor i accept i
atribute referitoare la dimensiune i poziionare. Dimensiunile unui strat se stabilesc prin atributele width i
height. Ca valori pot primi un numr urmat de unitate de msur. Poziionarea unui strat poate fi de doua tipuri:
absolut, stratul fiind poziionat n funcie de colul din stnga sus al ferestrei sau a blocului din care face
parte
relativ, stratul fiind poziionat n funcie de ultimul element introdus n pagina
Tipul poziionrii este stabilit prin atributul position cu valorile posibile absolute sau relative. Poziia stratului este
stabilita cu ajutorul atributelor top i left. Chenarul unui strat este stabilit prin atributul border-style cu valori
posibile: none, solid, dotted, dashed, double, inset, outset, groove, ridge. Culoarea chenarului este stabilit prin
atributul border-color. Grosimea chenarului este stabilit prin atributul border-width: numr cu unitate de
msur.
Dac straturile conin i culoare de fundal atunci ele sunt opace.Exemplu de poziionare relativ pentru un text
afiat unduitor .

ntrebri de control

Definiti notiunile WWW, FTP , HTTP, IRC, HTML.


Definiti notiunea de site web, browser, motor de cautare.
Definiti sturctura unei pagini web. Exemplu.
Explicati elementele care apar in cadrul formularelor
(form).
- Definiti stilurile (CSS-urile) si explicati cum se pot apela
acestea.Exemple.

Unitatea de invatare II.


JAVASCRIPT
Aceasta unitate de invatare are ca scop cunoasterea si utilizarea limbajului Javascript, pentru
realizarea site-urilor web. JavaScript este un limbaj de scriptare avnd o sintax apropiat de cea a
limbajului C. Comenzile JavaScript sunt incluse n pagina Web, mpreun cu textul i marcajele care
formeaz coninutul acesteia i sunt interpretate de ctre browser. Nu toate browserele sunt capabile s
execute comenzile JavaScript. JavaScript este un limbaj bazat pe obiecte.

Dup parcurgerea si nsusirea acestei teme, studentul va putea sa:


Materialu
l trebuie
parcurs
n
ordinea
sa
fireasc
prezentat
n continuare, inclusiv n zona referitoare la aplicatii. Se recomand testarea si notarea
sintaxei functiilor. Timpul minim pe care trebuie s-l acordati acestui modul este de 8 ore.

utilizeze functiile javascript;


utilizeze evenimente JavaScript;
sa operezecu obiectele din JavaScript;
sa scrie secvente de cod Javascript;

Cuprins:
2. Javascript
2.1. Prezentare general
2.2. Mesajul<script type=text/javascript>
2.3. Elementele limbajului Java Script
2.4. Funcii i evenimente n Java Script
2.5. Obiecte n Java Script

2.1. Prezentare general


JavaScript i Java
Java este un limbaj de programare orientat obiect, dezvoltat de firma Sun Microsystems, n timp
ce JavaScript are o structur bazat pe obiecte i a fost dezvoltat de firma Netscape
Communications. Limbajul Java poate fi folosit pentru proiectarea de aplicaii independente sau
pentru proiectarea de microaplicaii care pot fi incluse n cadrul paginilor Web i care poart

denumirea de applet-uri i sunt i ele independente de platform. Iat cteva deosebiri eseniale
ntre Java i JavaScript:
aplicaiile Java sunt compilate n fiiere binare care sunt apoi interpretate de ctre VJM
(Virtual Java Machine - Main Virtual Java), n timp ce codul JavaScript este transmis
ca un text obinuit i este interpretat.
Java este orientat obiect n timp ce JavaScript este bazat pe obiecte.
codul JavaScript este inclus n cadrul documentului HTML; applet-urile Java sunt referite
din cadrul unui document HTML, dar codul se afl ntr-un fiier separat.
script-urile JavaScript sunt incluse prin intermediul marcajului <script
type=text/javascript>, iar applet-urile Java prin intermediul marcajului <OBJECT>;
exist i marcajul <APPLET> dar folosirea lui nu mai este recomandat.
n cadrul script-urilor JavaScript variabilele nu trebuie declarate, n timp ce n cadrul
aplicaiilor Java variabilele trebuie declarate nainte de a fi folosite. Mai mult, n cadrul
script-urilor JavaScript, o variabil care este considerat ca avnd un anumit tip la un
moment dat poate fi considerat ulterior ca avnd un alt tip; de exemplu, o variabil poate
fi folosit ca fiind un ir de caractere pentru ca apoi s fie considerat ca fiind un numr
real.
JavaScript folosete legarea dinamic, adic referinele sunt verificate n timpul rulrii, n
timp ce Java folosete legarea static, adic referinele trebuie s existe n momentul
compilrii.
n general, limbajul JavaScript este folosit pentru efectuarea de calcule, citirea unor date
dintr-o tabel, proiectarea de ecrane HTML fr a folosi script-uri CGI.

2.2 Marcajul <script type=text/javascript>


n interiorul unui document HTML, instruciunile JavaScript sunt cuprinse, de obicei, n
interiorul marcajului <script type=text/javascript>. Acest marcaj poate aprea att n antetul
documentului HTML (marcajul <HEAD>), ct i n corpul documentului (marcajul <BODY>).
Script-urile definite n antet sunt ncrcate naintea ncrcrii restului paginii, antetul fiind un loc
excelent pentru plasarea funciilor JavaScript pentru a fi siguri c acestea vor fi disponibile atunci
cnd sunt apelate n alte seciuni ale documentului HTML. Pentru a insera cod JavaScript ntr-un
document HTML deja existent, este necesara introducerea n fisier a etichetei <script
type=text/javascript> ....... </script>. Aceasta eticheta are aributul type, sau language (
acesta din urma este depreciat in standardul XHTML) care va specifica browserului limbajul
folosit pentru interpretarea codului inclus. In interiorul etichetei <script type=text/javascript>
... </script> vom scrie codul surs.
Exemplu de script-ul prin intermediul cruia poate fi afiat mesajul Hello World! n fereastra
programului de navigare.

<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN


http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>
<html xmlns=http://www.w3.org/1999/xhtml lang=en>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8 />
<title>Test JavaScript</title>
<title>Cod JavaScript</title>
</head>
<body>
<script type=text/javascript>
document.write(Hello World! );
</script>
</body>
</html>

Instructiunile JavaScript se pot introduce i ntr-un alt fisier extern, care va avea extensia .js,
iar pentru editarea acestui fisier se poate utiliza un editor simplu de texte. Avantajul este c se
poate utiliza acelai cod n mai multe pagini HTML.
Dac codul JavaScript se afla ntr-un fisier extern, eticheta
<script type=text/javascript>
va trebui s contina s atributul src a carui valoare determina locatia fisierului in care se afla
codul JavaScript. In fisierul extern cu extensia js nu trebue s scriem eticheta <script
type=text/javascript>, se scriu direct instructiunile scriptului. Dac fiierul extern este
info.js, atunci fiierul HML care apeleaz fiierul extern .JS arat:

<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN


http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>
<html xmlns=http://www.w3.org/1999/xhtml lang=en>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8 />
<title>Test JavaScript</title>
<title>Cod JavaScript</title>
<script src=info.js type=text/javascript>
</script></head>
<body>.
</body>
</html>

Fisierele JavaScript externe nu pot conine dect declaraii i funcii JavaScript, iar extensia trebuie
s fie .js.

Comentarii n Javascript
La versiuni mai vechi de browsere, instruciunile JavaScript sunt scrise ntre comentarii. Sintaxa generala
este:
<script type=text/javascript>
<! - - Inceput comentariu
Instructiuni JavaScript
<! - - Sfarsitul comentariului - - >

</SCRIPT>
Proiectanii introduc instruciunile JavaScript ntre comentarii HTML astfel nct browserele care nu
permit JavaScript vor ignora instruciunile, interpretndu-le drept comentarii. Comentariile n JavaScript
pt fi definite ca n (applet-urile) JAVA, C i C++ astfel:
/* Comentariu pe mai multe linii
*/
// Comentariu pe o singur linie

2.3 Elementele limbajului JavaScript

Numerele care pot fi: numere ntregi i numere reale ,


Boolean ce are valorile true i false,
null este o valoare nedefinit,
undefined: o proprietate de nivel superior poate avea valoarea undefined,
NaN: Not a Number,
String text. Pentru orice literal de tip string se utilizeaz metodele clasei String.
Vectori i elemente de tip Obiect .

Elementele limbajului pot fi:


JavaScript este un limbaj dinamic-tipizat sau slab-tipizat (loosely-typed), ceea ce nseamn
c nu trebuie s specific tipul unei variabile cnd o declar fiindc ea va fi convertit automat dac
va fi nevoie n timpul execuiei scriptului. O variabil se poate declara n dou moduri:
atribuindu-i o valoare: x=124
cu ajutorul cuvntului rezervat var: var x=124
O variabil JavaScript creia nu i-a fost atribuit o valoare va avea valoarea undefined. Rezultatul
evalurii unei variabile depinde de modul n care a fost declarat, astfel:
- dac variabilei nu i-a fost atribuit o valoare i a fost declarat fr var rezultatul evalurii
variabilei va fi o eroare runtime.
- dac variabilei nu i-a fost atribuit o valoare, dar a fost declarat folosind cuvntul rezervat var
rezultatul evalurii variabilei va fi undefined sau NaN n context numeric.
Variabilele, definite n afara funciilor, se numesc variabile globale i ele sunt accesibile oriunde
n documentul curent. Variabilele, definite n interiorul funciilor, se numesc variabile locale i
ele sunt vizibile numai n interiorul funciilor n care sunt declarate.
iruri (de caractere) JavaScript
ntr-un scenariu JavaScript, irurile de caractere constante se delimiteaz ntre apostrofuri simple
sau duble.
Operatorul '+' semnifica concatenarea irurilor de caractere. Ca i n C, JAVA, irurile de
caractere pot conine secvene Escape: \n, \t, \f etc.
n JavaScript sunt admise urmatoarele categorii de expresii: aritmetice,iruri de caractere i
logice.
Operatorii utilizai de limaj pot fi:

Matematici:
+, -, *, /, ^, %(modulo)
- unari: se aplic la un singur operand: a++, a
- binari: se aplic la 2 operanzi:
a+b, a-b
a+=2 echivalent cu a=a+2
De comparaie, folosii pentru scrierea unor expresii logice. La evaluarea acestora se poate
obine true sau false: <, >, <=, >=, ==, !=
Exist n JavaScript o serie de funcii predefinite cum ar fi:

eval(expr): evalueaz o expresie data ca i parametru (string);


isFinite(number) : determin dac argumentul este un numr finit;
isNaN(testValue) : determina dac testValue este NaN;
parseFloat(str) : transform stringul str n valoare float i o returneaz;
parseInt(str [, radix]) : transform str ntr-o valoare de tip ntreg i o returneaz; radix este
baza de numeraie;
Number(obj) : convertete obj la number;
String(obj) : convertete obj la string;
escape/unescape(str) : folosite pentru codificare/decodificare stringuri.

Preluarea de intrri tip text de la utilizator


n cazul cnd este nevoie de citirea unei linii text de la utilizator, se poate utiliza funcia prompt
pentru afiarea unei casete de dialog care ofer utilizatorului un prompter (cursor) pentru a
introduce date i pentru preluarea ulterioara a intrrii utilizatorului. Funcia arat prompt ( text,
[valoare iniiala] ) i provoac apariia unei casete n care utilizatorul va putea introduce un ir
de caractere. Caseta conine i un buton 'OK' . Controlul de editare este iniializat cu valoare
iniial, dac acest argument este prezent, altfel este iniializat cu textul (undefined)/

Funcia EVAL se utilizeaz pentru a converti un ir de caractere la o valoare ntreag.


Funcia confirm() are rolul de a crea o fereastr prin intermediul creia se cere confirmarea
utilizatorului pentru efectuarea unei aciuni. Funcia returneaz o valoare logic (true sau false),
iar sintaxa ei este confirm(mesaj).
Fereastra creat are dou butoane: Ok i Cancel, nu poate fi minimizat sau redimensionat i are
un buton special pentru nchidere. n cazul apsrii butonului Ok sau a tastei ENTER valoarea
returnat este true, iar n cazul apsrii butonului Cancel, a butonului de nchidere sau a tastei
ESC valoarea returnat este false .
Obiectul document
n JavaScript, obiectul document corespunde documentului HTML curent. Daca un script
utilizeaz metod write pentru obiectul document n vederea afirii ieirii, browserul va reda
ieirea n documentul curent.Exemple de utilizare:
document.write(text)

document.write(variabil)
Putem intercala cod JavaScript cu cod HTML. n document.write se pot utiliza etichetele HTML
cu condiia de a fi scrise ntre ghilimele. Dac n cadrl ghilimelelor amen nevoie de alte ghilimele
atunci pentru cele din urm se utilizeazo apostrof. De exemplu, putem afia texte scrise cu fonturi
bold, respectiv italic ca n exemplu alturat.
<html> <head>
<title> document.write </title>
</head>
<body>
<script type=text/javascript>
document.write(<b>bold</b> <i>italic</i>);
</script>
</body> </html>

Instruciuni JavaScript
Instruciunile JavaScript pot fi terminate s nu cu caracterul ;. Acest caracter este obligatoriu doar
atunci cnd sunt mai multe instruciuni pe acelai rnd.
Instruciunea de atribuire a fost utilizat i n exemple anterioare i este cea cunoscut din C i Java.
Instruciunea IF este o instruciunea condiional i folosete cuvintele cheie if i else avnd urmtoarea
sintax:
if (condiie)
{
instruciuni pentru condiie adevrat
}
else
{
instruciuni pentru condiie fals
}

S se sciteasca numele i parola unui utilizator iar n funcie de acestea s se afieze un anumit
mesaj (figura 2.1).
<script type=text/javascript>
nume=prompt(Introduceti numele,);
parola=prompt(Introduceti parola,) ;
n_valid=student ;
p_valid=utm ;
if((nume==n_valid)&&(parola==p_valid))
{
alert(Date corecte!) ;
document.write(Bun venit pe pagina studentilor de la facultatea...) ;
}
else
{
alert(Date incorecte!) ;
document.write(Apasati F5 i mai incercati !!!...) ;
}
</script>

Figura 2.1

Instruciuni de ciclare
Adeseori se dorete executarea repetat a mai multor instruciuni. Acest lucru este posibil, cu ajutorul
instruciunilor de ciclare. n JavaScript exist instruciunile de ciclare: for, while i do...while. Sintaxa
instruciunii for este:
for (iniializare; condiie; incrementare)
{
corpul ciclului;
}
Oricare dintre cele patru seciuni (de iniializare, condiia, de incrementare sau corpul) poate lipsi.

Sintaxa instruciunii while este:


while (condiie)
{
corpul ciclului
}

n cazul instruciunii while poate lipsi corpul ciclului, prezena condiiei fiind obligatorie.
Exemplu:
<script type=text/javascript>
i=;
while(i!==student)
{
i=prompt(Introduceti parola,);
}
document.write(Password accepted);
</script>

Instruciunea SWITCH
Poate fi folosit pentru alegerea unei opiuni din mai multe opiuni.
Sintaxa instruciunii este:

switch (expresie)
{
case eticheta : instruciune; break;
case eticheta: instruciune; break;
...
default : instruciune;
}

Exemplu: <script type=text/javascript>


opt=eval(prompt(Introduceti nr zilei, ))
switch (opt)
{
case 1: zi=luni;break
case 2: zi=marti;break
case 3: zi=miercuri;break
case 4: zi=joi;break
case 5: zi=vineri;break
case 6: zi=sambata;break
case 7: zi=duminica;break
default: zi=Introduceti un nr ntre 1 i 7
}
document.write(zi)
</script>

Instruciunile break i continue


Instruciunea break permite ieirea forat dintr-o instruciune de ciclare. n momentul n care
interpretorul JavaScript ntlnete o astfel de instruciune, el ntrerupe execuia ciclului n
interiorul cruia se afl aceasta.
Instruciunea continue permite saltul peste anumite instruciuni din corpul ciclului care nu mai
trebuie executate n anumite condiii. n cazul unui ciclu for, se trece n mod automat, la ultimul
pas al execuiei ciclului, n timp ce n cazul unui ciclu while se trece la primul pas.
Folosirea tablourilor de elemente n JS
Un tablou de elemente (ir) este o structur complex care nglobeaz mai multe variabile de acelai tip
sub un nume. Un ir de elemente are o anumit dimensiune, are un anumit numr de elemente, fiecare
element avnd o valoare i este identificat prin poziia n cadrul irului.
Un ir se definete prin: numeir = new Array().

2.4 Funcii i evenimente n Java Script


O funcie este vzut ca un bloc de instruciuni identificat printr-un nume care poate primi
anumite argumente i ntoarce o valoare. Sintaxa unei funcii este:
function numefuncie (list parametri formali)
{
instruciuni;
return (valoare)
}

Apelul funciei se realizeaz numefuncie(parametri efectivi). Funciile sunt definite de obicei


n zona HEAD i sunt apelate apoi, ori de cte ori este nevoie, n BODY.
F(x)=x+1
F(2)=3

unde x parametru formal,


unde 2 parametru efectiv.
function suma (a,b) { s=a+b;return s; }

Se poate apela x=suma (1,1).


Exemplu: funcia titlu (parametru), s afieze parametru aceasteia cu font albastru de mrime 5
(figura 2.2).
<script type=text/javascript>
function titlu (a)
{document.write(<font color=red size=7>+a+</font>)}
x=prompt(Introduceti titlul,);titlu(x);
</script>

Figura 2.2 Text scris prin aplelul unei funcii

Funciile pot fi definite i fr parametri i pot returna sau nu o valoare.


<script type=text/javascript>
function titlu ()
{document.write(<font color=red size=7>+a+</font>);}
a=prompt(Introduceti titlul,);
titlu();</script>

Utilizarea casetelor de validate


Coninutul enei casete de validare se preia cu propietatea value care se aplica casetei astfel:
numecaseta.value. Daca caseta face parte dintr-un formular atunci continutul casetei se
acceseaz: numeformular.numecaseta.value.
S se preia dintr-un formular numele i parola, s se verifice i s se afieze un mesaj ntr-o alt
caset a formularului (figura 2.3).
<html>

<head>
<title> Formular butoane java casete text </title>
<script>
function afisare(){
// pot s pun varibile formale
a=form1.t1.value;
b=form1.t2.value;
if (a==123 && b==abc) form1.t3.value=Corect!;
else
if(a==123 && b!=abc) form1.t3.value=parola incorecta!;
else
if(a!=123 && b==abc) form1.t3.value=user incorrect!;
else
form1.t3.value=user incorrect! i parola incorecta;
}
function sterge(x)
{x.value=}
// \n trece la randul urmator
// sintaxa if: if(conditie) executa o secventa s1; else executa secventa s2
// observatie: daca conditia are 2 elem se grupeaza inte {}
// secventa s2 poate s lipseasca i atunci se reduce la if(conditie) S1;
</script>
</head>
<body><form name=form1>
<h1><center> casete de text</center></h1>
User: <input type=text name=t1 value= onclick=sterge(t1) size=40 >
<br><br><br>
parola: <input type=password name=t2 value= onclick=sterge(t2)>
<br><br>
<br>mesaj: <input type=text name=t3 value= onclick=sterge(t3) size=40>
<input type=button name=b1 value=testare onclick=afisare()>
</form></BODY>
</html>

Figura 2.3. Testare user i parola

Utilizarea casetelor de tip checkbox


Pentru o caset de tip checkbox starea acesteia se preia cu proprietate checked.

Utilizarea butoanelor de tip radio


Dac butoanele de tip radio fac parte din acelai grup, atunci ele sunt gestionate ntr-un vector,
astfel nct primul element este pe poziia zero. Proprietatea utilizat pentru a testa starea
elementului (dac a fost selectat sau nu) este tot checked, asemntor ca la casetele de tip
ckeckbox.
Exemplu
<html>
<head>
<title> butoane radio </title>
<script>
function test(x){
if(x[0].checked) alert ("Ati selectat culoarea "+ x[0].value);
if(x[1].checked) alert ("Ati selectat culoarea "+ x[1].value);
if(x[2].checked) alert ("Ati selectat culoarea "+ x[2].value);
}
</script>
</head><body>

Utilizarea listelor de selecie


Propietatea utilizat pentru a testa dac un element dintr-o lista de selecie a fost selectat este
selected. Valoarea ataat atributului value este preluat cu .value, la fel ca la casetele de tip text.
Exemplu:
<html>
<head>
<title> </title>
<script>
function lista(x)
{
for(i=0;i<6;i++)
if (x[i].selected) alert("ati selectat produsul "+ x[i].value)
}
</script>
</head>
<body>
<h1><center> liste selectie </center></h1>
<form>
<SELECT name="s" size="3">
<option value="test 11">test 11</option>
<option value="test 12">test 12</option>
<option value="test 13">test 13</option>
<option value="test 14">test 14</option>
<option value="test 15">test 15</option>
<option value="test 16">test 16</option>
</select>
<br><br><br>
<input type="button" name="b1" value="afiseaza" onclick="lista(s)">
</form></BODY></html

Evenimente

Limbajul JavaScript este bazat pe evenimente, acestea fiind folosite pentru a controla
interaciunea dintre utilizator i aplicaie. Programele convenionale opereaz ntr-o manier
diferit, codul acestora fiind executat secvenial. Pentru a specifica instruciunile JavaScript care
trebuie executate la apariia unui eveniment, limbajul HTML pune la dispoziie anumite atribute
pentru diferite marcaje, atribute care au ca valori instruciuni JavaScript (de obicei apeluri de
funcii). Cele mai multe evenimente sunt legate de aciuni ale mouse-ului ca de exemplu: un clic
(poate fi tratat cu atributul onclick), mouse deasupra cu atributul (onmouseover), mouse n afar
cu atributul (onmouseout) etc. Pentru fiecare astfel de eveniment se pot defini handlere de
evenimente care sunt functii javascript sau secvente de instructiuni care se vor executa atunci
cand evenimentul respectiv are loc.

Evenimentele i handlerele de evenimente care se pot folosi sunt urmatoarele:


Eveniment
Abort

Handler de ev.
OnAbort

Blur

OnBlur

Change

OnChange

Click

OnClick

DragDrop

OnDragDrop

Error

OnErrorFocus

Focus

OnFocus

KeyDown

OnKeyDown

KeyPress

OnKeyPress

KeyUp

OnKeyUp

Load

OnLoad

MouseDown

OnMouseDown

MouseMove
MouseOut

OnMouseMove
OnMouseOut

MouseOver

OnMouseOver

MouseUp

OnMouseUp

Move
Reset

OnMove
OnReset

Resize

OnResize

Select

onSelect

Submit
Unload

onSubmit
onUnload

are loc pentru


oprirea incarcarii
unei imagini
pierderea focusului
schimbarea valorii
unui element
utilizatorul face
click
plasarea unui obiect
n fereastra
browserului
eroare la ncarcarea
obiectului
elementul capata
focus
apasarea unei taste

se aplic
Image
Window i elem. ale
obiectului Form
Text, TextArea, Select
Button, Checkbox, Link,
Radio, Submit, Reset
Window

Image, Window

Window i elem. ale


obiectului Form
Document, Image, Link,
TextArea
apasarea sau
Document, Image, Link,
mentinerea apasata a TextArea
unei taste
eliberarea unei taste Document, Image, Link,
TextArea
incarcarea paginii in Document
navigator
apasarea butonului
Document, Button, Link
de mouse
mutarea cursorului
Nici unui obiect
mutarea cursorului
Area, Link
de mouse in afara
obiectului
mutarea cursorului
Link
peste un link
eliberarea butonului Document, Button, Link
de mouse
deplasarea ferestrei
Window
click pe butonul
Form
reset
redimensionarea
Window
ferestrei
selectarea unui
Text, TextArea
elem. al campului
apasarea pe submit
Form
parasirea paginii
Document

n afara evenimentelor generate de utilizator pot fi tratate i evenimente ce se produc automat. Apar
evenimente ca:
load ncrcarea paginii poate fi gestionat cu atributul onload
unload nchiderea documentului - poate fi gestionat cu atributul onunload

Ambele atribute aparin marcajului BODY.


<script type=text/javascript>
a=Bun venit pe pagina mea; b=Multumesc!...Good Bye !
function f(x)
{
alert(x)
}
</script>
<body onload=f(a) onunload=f(b)>

2.5 Obiecte n Java Script


Un obiect trebuie neles ca o structur ce reunete mai multe funcii i variabile sub acelai nume.
Funciile unui obiect reprezint metode iar variabilele obiectului sunt proprieti.
Obiectele permit reutilizarea unui cod deja existent i sunt folosite n mai toate limbajele de programare
orientate pe obiect. Java Script este un limbaj bazat pe obiecte i pune la dispoziie un set predefinit de
obiecte. Fiecare obiect este identificat prin nume.
O proprietate a obiectului este apelat prin numeobiect.proprietate (document.bgColor = red). O
metod este adresat prin numeobiect.metod(argument). Obiectele JavaScript sunt ierarhizate. Un
obiect poate fi derivat, inclus n cadrul unui alt obiect. Ierarhia de obiecte JS are 4 ramuri principale,
reprezenate de obiectele: window, navigator, screen, language. Din window deriveaz: frame,
document, location, history, din document deriv image, form, .a.m.d.Pe lng acestea, JS pune la
dispoziie obiecte predefinite referitoare n general la tipuri de date: String, Math, Date.
Obiectul String
ncapsuleaz un ir de caractere. Este creat automat atunci cnd unei variabile i se asociaz o valoare de
tip ir de caractere.
Dintre metodele lui String ntlnim:
Metoda
anchor()
big()
blink()
bold()
charAt()
charCodeAt()
concat()
fixed()
fontcolor()
fontsize()
fromCharCode()
indexOf()
italics()
lastIndexOf()
link()
match()

Efect
returneaza un sir ca i "anchor"
returneaza un sir cu text mare
returneaza un sir care clipeste
returneaza un sir cu litere ingrosate
returneaza un caracter de la pozitia care
este specificata
returneaza codul ascii al unui caracter de
la o pozitie specificata
returneaza doua siruri concatenate
returneaza un sir cu caractere tip
returneaza un sir cu o culoare specificata
returneaza un sir cu litere de o anume
marime
returneaza valoare unicode a unui
caracater
returneaza pozitia primei aparitii a unui
subsir intr-un sir
returneaza un sir in italic (scris aplecat)
returneaza pozitia primei aparitii a unui
subsir in un sir
returneaza un sir ca hyperlink
similar cu indexof i lastindexof, dar

Metoda

replace()
search()
slice()
small()
split()
strike()
sub()
substr()
toLowerCase()
toUpperCase()

Efect
aceasta metod returneaza sirul specificat
sir, sau "null", in locul unor valori
numerice
inlocuieste unele caractere specificate cu
altele noi specificate.
returneaza un numar intreg daca sirul
contine caracterele specificate
returneaza un sir incepand de la pozitia
index specificata
returneaza un sir cu caractere mai mici
imparte un sir in mai multe siruri, in
functie de caracterele specificate
returneaza un sir taiat cu o linie la mijloc
returneaza un sir ca indice
returneaza un subsir specificat
converteste un sir in litere mici
converteste un sir in litere mari

Proprietatea acestui obiect string este length care returneaza numarul de caractere dintr-un sir.

Obiectul Date
Obiectul Date este folosit pentru a obine informaii referitoare la ceasul sistem de pe calculatorul
vizitatorului paginii Web. Prin intermediul acestui obiect pot fi determinate data i ora curent, pot fi
efectuate diferite operaii cu date calendaristice sau momente ale zilei sau poate fi controlat modul n care
este afiat pagina Web n funcie de informaiile furnizate de metodele acestui obiect.
Pentru a crea un obiect care s conin data i ora curent secvena JavaScript corespunztoare este
data=new Date().
Metodele obiectelor de tip sunt grupate n trei categorii: metode pentru preluare de informaii, metode
pentru setarea anumitor caracteristici i metode pentru conversie.
Principalele metode ale obiectului Date() sunt:
Date()
getDate()
getDay()

returneaza un obiect Date


returneaza data (ziua) din luna (ntre 131)
returneaza ziua dintr un obiect Date (ntre 0 i 6;
0=Duminica, 1=Luni, etc.)
getMonth()
returneaza luna dintr un obiect Date
getFullYear()
returneaza anul cu 4 cifre
getYear()
returneaza anul dintr un obiect Date
getHours()
returneaza ora
getMinutes()
returneaza minutele
getSeconds()
returneaza secunda
setTimeout(funcie,timp) timp se exprim n ms

Obiectul Window
Este plasat la cel mai nalt nivel, fiind printele tuturor obiectelor dintr-o pagin.
Metode fundamentale:
open(), close()

alert(), prompt(), confirm()


blur(), focus()
setTimeout()
Obiectul window este important pentru gestionarea ferestrelor n care sunt ncrcate documentele html.
Folosind metodele open() i close() putem deschide ferestre, putem ncrca anumite documente n
ferestrele respective i le putem stabili anumite proprieti.
Deschiderea unei ferestre
window.open (URL, nume,opiuni)
- URL indic adresa documentului care va fi ncrcat n fereastra respectiv
- nume poate fi folosit pentru a referi fereastra respectiv cu ajutorul atributului target
- opiuni reprezint o list de elemente pentru stabilirea aspectului ferestrei
n cadrul scriptului fereastra deschis poate fi identificat prin variabil:
f=window.open ()
Are sens:
f.document.write() scrie n fereastra f
f.document.title() stabilete titlul ferestrei
f.document.bgColor() stabilete culoare de fond a documentului din fereastra deschis.
<script type=text/javascript>
function fereastra()
{
f=window.open()
f.document.write(<H1>RECLAMA</H1>)
f.document.bgColor(cyan)
}
</script>
<body onload=fereastra()>
Metod open permite specificarea unor parametri legai de aspectul ferestrei deschise. Acetia se introduc
separai prin virgul n cadrul seciunii opiuni din construcia metodei open:
-

width - limea n pixeli a suprafeei ferestrei


height - nlimea n pixeli a suprafeei ferestrei
toolbar = yes/no - afieaz sau nu bara de instrumente
menubar = yes/no - afieaz sau nu bara de meniuri
scrollbars = yes/no - afieaz sau nu bara de scroll
left = nr de pixeli fa de marginea din stnga a ecranului
top = nr de pixeli fa de marginea sus a ecranului

nchiderea ferestrelor se poate realiza prin metod close()


Poate fi apelat prin:
window.close() - pentru fereasta curent
f.close() - pentru un obiect de tip fereastra
Metod moveTo(i,j) mut o fereastr cu i pixeli spre dreapta i j pixeli n jos.
Obiectul document
Este derivat din obiectul window i este folosit ca metod de acces la toate elementele html.
Proprietile obiectului document seteaz n primul rnd proprietile i atributele html incluse n marcajul
HEAD sau n marcajul BODY.
document.title = text n bara de titlu
Principalele proprieti sunt:
document.bgColor = culoarea fundalului
document.fgColor = culoarea textului
document.alinkColor = culoarea legturilor active
document.vlinkColor = culoarea legturilor vizitate
document.linkColor = culoarea legturilor nevizitate
document.cookie = fisier cookie asociat cu documentul

Metodele obiectului document permit generarea paginilor html n mod dinamic. Principalele
metode sunt:

close() - inchide fluxul datelor de iesire spre document


contextual() - permite s aplicam in mod selectiv un stil unui element HTML care apare
ntr-un anumit context specific
getSelection() - intoarce textul selectat
handleEvent() - apeleaza handlerul pentru evenimentul specificat
open() - deschide fluxul datelor de iesire spre document
write() - adauga text in document
writeln() - adauga text i un caracter linie noua in document (textul pe linia lui)

Gestionarea cadrelor
Atunci cnd introducem cadre este creat automat un obiect parent, care include un ir de obiecte, fiecare
nglobnd un cadru din interiorul ferestrei:
parent.frames[0] refer primul cadru
parent.frames[1] refer al doilea cadru s.a.m.d.
De exemplu, parent.frames[0].document.write() - scrie n primul cadru.
Dac atunci cnd au fost introduse cadrele acestea au primit i un nume putem referi un cadru prin
construcia: parent.numecadru
De exemplu, parent.cadru.document.write() - scrie n cadrul cu numele cadru.
Obiectul location
ncapsuleaz adresa URL a paginii curente. Permite deplasarea la o alt adres URL sau permite
extragerea unor elemente din cadrul URL curent. Cea mai folosit proprietate este href - specific
ntreaga adres URL De exemplu, ncrcarea unei alte pagini web se poate face prin construcia:
window.location.href = URL
Exemplu de buton cu funcie de legtur:
<input type=button value=Student
onclick=window.location.href=http://www.microsoft.com>
ncrcarea unui fiier ntr-un cadru se poate face prin parent.cadru.location.href=URL

Construirea unui banner


La ncrcarea unui pagini se deschide o fereastr nou n care, din 2 n 2 secunde se succed 3 imagini.
<script type=text/javascript>
imagini=new Array();
imagini[0]=x.gif;
imagini[1]=y.gif;
imagini[2]=z.gif;
function deschide() {

f=window.open(,,width=200, height=100, scrollbars=no, menubar=no,


toolbar=no) }
i=-1;
function banner()
{
i++;
f.location.href=imagini[i]
if(i==2)
i=-1;
setTimeout(banner(),2000)
}
</script>
<body onload=deschide();banner()>

Obiectul Image
Cuprinde proprietile i metodele necesare pentru lucrul cu imagini. Se creeaz cu new Image()
poza=new Image()
Proprieti: poza.src=sursa imaginii; poza.width=limea imaginii n pixeli;
poza.height=nlimea imaginii n pixeli; poza.border=grosimea chenarului n pixeli;
poza.name=numele imaginii;
La introducerea imaginilor ntr-o pagin web se creeaz n mod automat un ir de obiecte
imagine. Fiecrui obiect de tip imagine i se pot aplica toate proprietile imaginilor. Este
identificat prin document.images[i], unde i este numrul de ordine al imaginii din cadrul
documentului.
Realizarea unui efect RollOver
Un efect RollOver nseamn schimbarea fiierului surs al imaginii de fiecare dat cnd se plaseaz
mouse-ul deasupra imaginii. Se revine la imaginea iniial atunci cnd mouse-ul este scos de pe imagine.

Exemplu: Pagin care afieaz 2 imagini. Cnd se plaseaz mouse-ul pe o imagine aceasta s
apar cu chenar iar cnd se executa clic s apar mai jos redimensioant:
<table>
<tr><td>
<img src=x.gif width=50 height=40
onmouseover=document.images[0].border=2
onmouseout=document.images[0].border=0
onclick=document.images[2].src='x.gif'>
<td><img src=y.gif width=50 height=40
onmouseover=document.images[1].border=2
onmouseout=document.images[1].border=0
onclick=document.images[2].src='y.GIF'>
</table>
<br><br><br><br>
<img src= width=200 height=100 alt=Afiseaza poza>

Intrebari de control
Explicati motodele obiectului document;
Explicati instructiunile de ciclare;
Funcii i evenimente n Java Script
Explicati evenimentele care se folosesc in JavaScript
Enumerati principalele metode ale obiectului string, window si date.

Teme propuse
S se introduc 3 numere de la tastatur i s se afieze n pagin unul dup cellalt;
S se realizeze un buton care schimb culorile fundalului unei pagini.
Script care s deschid o fereastr ce se deplaseaz n partea de sus pna la mijlocul
ecranului. Un buton va nchide fereastra.
Script ce deruleaz n pagin trei imagini, din 3 n 3 secunde

UNITATEA DE INVATARE III.


PHP i MySQL
Aceasta unitate are ca scop cunoasterea limbajului PHP, care este un acronim ce provine
din "Hypertext Preprocessor" care este un limbaj de scripting, realizat i distribuit n sistem Open
Source, special realizat pentru a dezvolta aplicaii web, prin integrarea codului PHP n documente
HTML. Scopul principal al limbajului este acela de a scrie rapid pagini web dinamice i ofer
suport pentru manipularea bazelor de date de tip SQL (dBase, Informix, MySQL, mSQL, Oracle,
PostgreSQL, Solid, Sybase, ODBC etc.) ct i acces la sisteme hipermedia.

Dup parcurgerea si nsusirea acestei unitati, studentul va fi capabil:


- sa construiasca inteleaga modelul client-server;
- sa utilizeze variabilele PHP;
- sa creze scripturi PHP;
- sa utilizeze functiile specifice lui MySql in PHP;
- sa realizeze o aplicatie dinamica

Mater
ialul
trebui
e
parcur
s n
ordine
a sa
fireas
c prezentat n continuare, inclusiv n zona referitoare la aplicatii. Se recomand testarea
functiilor PHP si instructiunilor MySql cat si consultarea Internetului pentru detalii si
informatii suplimentare
(http://www.wampserver.com/en/,
http://www.mysql.com/,
http://www.apache.org/,
http://www.php.net/).
Timpul minim pe care trebuie s-l acordati acestui modul este de 8 ore.
Cuprins:
3. PHP i MySQL
3.1. Modelul client-server.Pagini Web interactive (dinamice)
3.2. Tipuri de variabile utilizate n limbajul PHP
3.3. Crearea scripturilor PHP
3.4. Folosirea PHP-ului cu formulare HTML
3.5. Funcii n PHP
3.6. Programarea orientat pe obiecte (POO) n PHP
3.7 Utilizarea MySQL
Cuvinte cheie: PHP, MySQL, apache, server web.
3.1 Modelul client-server. Pagini web interactive (dinamice)
PHP suport ncrcarea fiierelor de pe calculatorul client, operaie cunoscut sub numele de
upload (standard propus de E. Nebel i L. Masinter de la Xerox) i ofer suport pentru cookies

(mecanism de stocare a datelor n navigatorul client pentru identificarea utilizatorilor, propus de


Netscape).

Limbajul PHP are deasemenea suport pentru diverse servicii server, utiliznd protocoale
precum IMAP, SNMP, NNTP, POP3 i HTTP.
Paginile HTML sunt de tip static, adic informaiile prezentate n aceste pagini sunt identice
pentru toi vizitatorii, fiind simple pagini de prezentare. Web-ul este ns dinamic, adic pentru
unel pagini este nevoie s fie actualizate n timp real. Dac doi vizitatori, aflai n locuri
diferite, acceseaz acelai site de joburi n acelai timpasrefel nct unul dorete afiarea joburilor
din domeniul economic, iar al doilea dorete afiarea joburilor din domeniul securitii i sntii
n munc, atunci serverul web va afia pentru fiecare vizitator al site-ului pagina corespunztoare
cerinelor specificate. Acest lucru este posibil datorit tehnologiilor de tip client-server. Acest
tip de tehnologii presupun stocarea datelor pe un server web i apoi afiarea acestora la cererea
fiecrui vizitator, n forma dorit de acesta.
Un server web reprezint un calculator conectat permanent la Internet, care trimite ctre client
(care este un calculator pe care ruleaz un browser) pagini n format HTML. La un server se pot
conecta simultan mai muli clieni, care pot avea acces la aceleai informaii. Diferena este
esenial comparativ cu paginile simple HTML, care sunt afiate n browserul vizitatorului aa
cum au fost construite. Web-ul este dinamic, iar programele care fac posibil acest lucru sunt
numite scripturi CGI sau scripturi server-side, ntruct acestea folosesc o interfa standard
numit Common Gateway. Scripturile sunt scrise n limbajul C sau cu ajutorul unui limbaj
specializat, numit i limbaj de scripting (cele mai utilizate fiind PHP, ASP i Perl) i sunt stocate
pe serverul web pe care i ruleaz.
Diferena dintre limbaj de scripting pe partea de client (ex. JavaScript) i unul server-side este
esenial doarece JavaScript ruleaz n browserul clientului, pe cnd un script server-side ruleaz
pe server, avnd acces la unele informaii stocate pe server la care un script client-side nu are
acces. Un exemplu sugestiv este un contor de pagina web. De cte ori cineva acceseaz pagina,
scriptul server-side va contoriza vizitarea paginii ntr-o baz de date stocat pe server.
ntr-o sesiune client-server care conine i interogarea unei baze de date au loc urmtoarele etape:

introducerea adresei n bara de adrese a browserului;


serverul web primete cererea i determin execuia unui script de pe server;
scriptul extrage unele date dintr-o baz de date;
datele extrase sunt prelucrate i convertite n format HTML;
pagina n format HTML este transmis serverului web;
serverul web transmite pagina browserului care a trimis cererea;
browserul afieaz informaiile utilizatorului.

n practic pentru a crea aplicaii web interactive, avem nevoie de:


un server web (software),
un limbaj de scripting pe partea de server,
un server de baze de date.

Aceste elemente se pot descrca gratuit din Internet de la adresele:


serverul web Apache ( http://www.apache.org/ ) avnd variante Apache pentru Linux
ct i pentru Windows i este gratis, stabil i rapid.
limbajul PHP ( http://www.php.net/ ) este folosit de peste 45% din site-urile interactive
i este gratis, uor de nvat (sintaxa asemntoare cu C), ofer foarte multe funcii,
ofer suport pentru multe tipuri de baze de date (nici un alt limbaj nu ofer asemenea
suport).
serverul de baze de date MySQL ( http://www.mysql.com/) este gratis i rapid .
Combinaia PHP i MySQL este folosit preponderent.

Dac se lucreaz local, atunci vizualizarea (testarea aplicaiilor php) se realizeaza in cadrul unui
browser, cu condiia ca, n bara de adrese, s se editeze http://localhost/eventual numele
folderului ce contine sursele php .

3.2 Tipuri de variabile utilizate n limbajul PHP


PHP este un limbaj de programare la fel ca i BASIC, Pascal, C, C++, Visual Basic, Java etc i
are caracteristicile specifice unui limbaj de programare. n cadrul acestuia se lucreaz cu variabile
care reprezint zon de memorie, creia i se atribuie un nume pentru a putea fi recunoscut i
apelat ulterior. Variabilele se compun din simbolul $ urmat de numele variabilei $variabilphp.
Numele variabilei poate ncepe cu o liter sau un underscore, urmat de litere, cifre sau caractere
underscore. Principalele tipuri de date sunt cele din tabelul urmtor.
Tipuri Scalare

Integer este o valoare din mulimea nuinformaticalor ntregi

Float - o astfel de variabil poate fi specificat fie prin forma


zecimal, fie prin cea tiinific (cu exponent)
String - este un ir de caractere i poate fi specificat n 2 moduri:
o folosind ghilimele simple
o folosing ghilimele duble

Tipuri compuse

Array
Object

Tipuri speciale

Resource - variabil de tip Resource este o variabil special,


folosit pentru pstrarea unor referine ctre anumite resurse externe
NULL - valoarea special NULL este atribuit oricrei variabile
care nu a fost iniializat. Aceasta este singura valoare pe care o pot
avea variabilele de tip NULL. Se consider c o variabil este de tip
NULL n urmtoarele situaii: i s-a atribuit constanta NULL; nu a
fost iniializat; a fost deziniializat (prin intermediul funciei
unset() ).

(a) Tipul
BOO
LEA
N

False - se poate converti o variabil de orice tip la tipul Boolean.


Valorile care n urma conversiei se transform n FALSE sunt:

Nr ntreg 0
Nr real 0.0
irul vid
irul 0
Un vector fr nici un element
Un obiect fr nici o variabil membru
O variabil de tipul NULL
O variabil nedefinit

True - orice alt valoare se convertete n TRUE

Tipul ARRAY (vectori) pot fi considerate mulimi formate din chei. Fiecrei chei i se ataeaz o
valoare. Acest tip este optimizat, astfel nct s poat fi folosit n locul urmtoarelor structuri de
date: liste, tabele de dispersie, colecii, stive, cozi etc. Vectori pot fi :
o vectori numerici
o vectori asociativi
o vectori multidimensionali
VARIABILE GLOBALE sunt disponibile n orice zona a codului surs. Exemple:
$GLOBALS
$_SERVER
$_GET i
$_POST

$_COOKIE

$_FILES
$_ENV
$_REQUEST
$_SESSION

cuprinde referine spre orice variabil global care este accesibil


scriptului PHP curent;
conine o serie de variabile ale cror valori sunt setate de server-ul
web. (majoritatea depind de mediul de execuie al script-ului curent);
sunt variabile array globale. $_GET poate fi folosit pentru a trimite
variabile cu valori prin intermediul link-urilor. $_POST poate fi
folosit pentru a trimite variabile cu valori prin intermediul
formularelor.
conine valorile variabilelor care cuprind informaii referitoare la
cookie-urile pstrate pe calculatorul utilizatorului ce acceseaz pagina
web.
conine variabile primite de script prin intermediul ncrcrilor de
fiiere prin metoda post.
conine variabile disponibile prin intermediul mediului n care este
executat.
variabile disponibile prin intermediul oricrui tip de mecanism cu
ajutorul cruia utilizatorul poate introduce date.
variabile care corespund sesiunii curente a script-ului.

Article IV.

3.3 Crearea scripturilor PHP


Fiecare script PHP arata ca in figurile de mai jos si indic serverului c textul cuprins ntre
acestea este format din instruciuni PHP.
<?php
// continutul scriptului
?>

sau, echivalent:
<?
// continutul scriptului
?>

Scripturile PHP execut urmtoarele de operaii elementare:


- preluarea datelor de la utilizator,
- prelucrarea acestor date,
- obinerea accesului la datele stocate pe server,
- prelucrarea datelor stocate pe server i
- afiarea datelor.
Scripturile PHP sunt formate din instruciuni iar cea mai simpl instruciune PHP este cea de
afiare a unui text n browser.
echo Informaii afiate n browser;

Tag-urile HTML se introduc n codul PHP astfel:


echo <b> <i> Introducerea codului HTML ntr-un script </i> </b>;
Un comentariu se introduce ntr-un script PHP cu ajutorul marcajului // (cnd comentariul este
scris pe o singur linie) sau /* coninutul comentariului */ (atunci cnd comentariul este scris pe
mai multe linii).
<?php
// comentariu pe o linie
//continutul scriptului
?>
<?php
/* comentariu pe mai
multe linii */
// continutul scriptului
?>

Article V.
Article VI.
Article VII. Structuri de control ntlnite n PHP sunt:
Alternative
o IF
o Else
o Elseif
o Switch
Repetitive
o While
o For

o Do while
Break
Continue
Declare
Instruciunea continue este utilizat ntr-o bucl iar execuia iteraiei curente este ntrerup i se
trece la execuia iteraiei urmtoare. Instruciunea continue accept un argument numeric opional
care va indic cte bucle imbricate vor fi ignorate.
Instruciunea foreach versiunea PHP4 (nu i PHP3) dispune de comanda foreach, ca Perl sau
alte limbaje. Instruciunea ofer un mod simplu de a parcurge un tablou.

3.4 Folosirea PHP-ului cu formulare HTML


Caracterizarea formularelor HTML
Permit introducerea datelor de ctre vizitatorul paginii web.
Crearea se face ncepnd cu matematicachea de etichete <form></form>.
Atributele lui <form> sunt: action i method.
Action precizeaz ce se va ntmpla cu datele introduse n formular. n general i se asociaz
adresa unui script aflat pe server (n cazul nostru numele fiierului PHP) care va prelucra datele.
Method se refer la modul n care vor fi trimise datele spre scriptul de pe server. Valorile
posibile sunt: GET i POST.
GET permite trimiterea cantiti restrnse de date prin adugarea lor la URL
POST permite trimiterea cantitilor mari de date iar acestea sunt expediate separat.
O regul empiric privind alegerea ntre GET i POST ar fi urmtoare: muli programatori
utilizeaz GET pentru formularele care execut o cutare sau interogare i POST pentru
formularele care actualizeaz o baz de date sau un fiier. Astfel, datele trimise prin metoda GET
pot fi vizualizate de catre utilizator.
Pentru a realiza un formular se utilizeaz eticheta FORM exemplificat n capitolul HTML:
<FORM name =numeformular METHOD=metoda ACTION=url >
Atributul ACTION specific adresa URL a scriptului PHP care prelucreaz datele transmise prin
intermediul formularului. Adresa URL poate fi o adresa complet, care include protocolul,
numele gazdei i calea de acces, respectiv o adres parial, care specific o locaie relativ la
locaia paginii curente.
Exemplu: <FORM method=POST action=test1.php>
Pricipalele controale care pot fi incluse n formular (vezi capitolul de HTML) ct i principalele
evenimente ataate acestora sunt:
List controale

textbox (text), password textbox (password), butoane radio (radio), casete de validare
(checkbox), butoane (button, submit, reset), lista derulant (select), editbox (textarea), caseta
de fiier (file).
List evenimente
onclick, ondblclick, onmousedown, onmouseup, onmouseover onmousemove, onmouseout,
onkeypress, onkeydown, onkeyup
Section 7.01 Prin intermediul formularului se trimite la server un fiier astfel:
<input type=file accept=tip_mime name=nume value=text>
unde:
accept este un atribut care specific tipul fiierului,
name este numele casetei,
value se folosete pentru un nume prestabilit de fiier,
MIME (Multipurpose Internet Mail Extensions).
n eticheta form trebuie adugat i atributul enctype=multipart/form-data .
Formatele cele mai frecvent folosite pt MIME sunt:
TIP MIME

TIP DATE

application/msexcel

Microsoft Excel

EXTENSII DE
FIIER
xls

application/msword

Microsoft Word

doc, dot

application/octet-stream Binara

exe

application/pdf

Adobe Acrobat

pdf

application/ppt

Microsoft PowerPoint

ppt

application/zip

Date comprimate n format ZIP

zip

audio/midi
audio/x-wav
image/gif

Musical Instrument Digital Interface


(MIDI)
Windows Audio Format (WAV)

image/jpeg

Compuserve Graphics Interchange


Format (GIF)
Joint Photographics Expert Group (JPEG)

image/TIFF

Tagged Image Format (TIF)

text/HTML

HTML

text/plain

mid,midi
wav
gif
jpeg, jpg, jpe
tif, tiff
htm, html

Text simplu

txt

text/richtext

Rich Text Format (RTF)

rtf

video/mpeg

Secventa video

mpg, mpv, mpe,


mpeg

video/quicktime

Secventa video

qt, mov

video/x-msvideo

Secventa video

avi

n general prelucrarea datelor transmise la server se face ntr-un fiier distinct dect cel care
conine formularul, caz n care action=nume_fiier.php.
O variabil se preia dintr-un formular prin una din modalitile :
$_POST[nume_variabil] sau cu $_GET[nume_variabil] (n funcie de atributul method al
formului, acesta poate fi post sau get),

3.5 Funcii n PHP


Definirea unei funcii se realizeaz
function nume_funcie(param1, param2,,paramN){ instruciuni; }
Apelarea unei funcii se realizeaz:
$var_returnat=nume_funcie(param1,param2,..,paramN);
O funcie poate fi definit oriunde n cadrul script-ului, iar n interiorul unei funcii poate s apar
orice secven valid de cod (poate cuprinde definirea altor funcii, clase etc.). Pentru ca funcia
s returneze un rezultat se folosete construcia return urmat de un parametru ce reprezint
valoarea funciei.
Funcii de afiare
PHP include doua functii utile pentru generarea datelor de iesire formatate.
printf() si sprintf().
Functia printf() afiseaza datele sale de iesire, iar sprintf() returneaza datele sale de iesire sub forma unei
valori sir.
n general, fiecare functie preia doua sau mai multe argumente. Primul argument este un sir, denumit sir
de formatare, care specifica formatul datelor de iesire, iar celelalte argumente specifica valorile care vor
constitui datele de iesire.

string sprintf ( string $format [, mixed $args [, mixed $... ]] )


Returns a string produced according to the formatting string format.
(a) Parametri
format

The format string is composed of zero or more directives: ordinary characters (excluding %) that
are copied directly to the result, and conversion specifications, each of which results in fetching its
own parameter. This applies to both sprintf() and printf().
Each conversion specification consists of a percent sign (%), followed by one or more of these
elements, in order:
1. An optional sign specifier that forces a sign (- or +) to be used on a number. By default,
only the - sign is used on a number if it's negative. This specifier forces positive numbers
to have the + sign attached as well, and was added in PHP 4.3.0.
2. An optional padding specifier that says what character will be used for padding the results
to the right string size. This may be a space character or a 0 (zero character). The default is
to pad with spaces. An alternate padding character can be specified by prefixing it with a
single quote ('). See the examples below.
3. An optional alignment specifier that says if the result should be left-justified or rightjustified. The default is right-justified; a - character here will make it left-justified.
4. An optional number, a width specifier that says how many characters (minimum) this
conversion should result in.
5. An optional precision specifier in the form of a period (`.') followed by an optional
decimal digit string that says how many decimal digits should be displayed for floatingpoint numbers. When using this specifier on a string, it acts as a cutoff point, setting a
maximum character limit to the string.
6. A type specifier that says what type the argument data should be treated as. Possible types:
o % - a literal percent character. No argument is required.
o b - the argument is treated as an integer, and presented as a binary number.
o c - the argument is treated as an integer, and presented as the character with that
ASCII value.
o d - the argument is treated as an integer, and presented as a (signed) decimal
number.
o e - the argument is treated as scientific notation (e.g. 1.2e+2). The precision
specifier stands for the number of digits after the decimal point since PHP 5.2.1. In
earlier versions, it was taken as number of significant digits (one less).
o E - like %e but uses uppercase letter (e.g. 1.2E+2).
o u - the argument is treated as an integer, and presented as an unsigned decimal
number.
o f - the argument is treated as a float, and presented as a floating-point number
(locale aware).
o F - the argument is treated as a float, and presented as a floating-point number
(non-locale aware). Available since PHP 4.3.10 and PHP 5.0.3.
o g - shorter of %e and %f.
o G - shorter of %E and %f.
o o - the argument is treated as an integer, and presented as an octal number.
o s - the argument is treated as and presented as a string.
o x - the argument is treated as an integer and presented as a hexadecimal number
(with lowercase letters).
o X - the argument is treated as an integer and presented as a hexadecimal number
(with uppercase letters).
Exemple:

<?php
$num = 5.7;
echo $num;

$num = sprintf("%05.2f", $num);


echo '<br>'. $num;
?>
Rezultatul afisat va fi: 5.7 05.70
Cu ajutorul expresiei "%05.2f", sprintf() formateaza numarul din $num astfel incat acesta
sa fie format din 5 caractere dintre care unul punct (.) si 2 zecimale.
exemplu cu printf():

<?php
$n = 8;
printf("Valoarea lui n este: %d", $n);
?> Va afisa "Valoarea lui n este: 8".

Funcii pentru iruri


str_repeat($ir, $n) repet irul $ir de un numr de n ori.
strrchr($ir, $caracter) returneaz parte a unui $ir, ncepnd cu ultima apariie a
caracterului $caracter n irul $ir.
trim($ir) elimin spaiile din stnga i din dreapta unui ir.
explode($separator, $ir) rupe valorile dintr-un ir n care ele sunt delimitate de un
separator, i le plaseaz ntr-un vector
implode($ir, $vector) - preia valorile dintr-un vector i le reunete ntr-un ir
number_format($numr) afieaz valoarea numeric folosind separatorul de mii.
strpos($sir_princip,$sir_cutat) - returneaz poziia n care se regsete irul cutat n irul
principal.
substr($ir,$start,$end) extrage parte dintr-un ir ncepnd din poziia $start i pn n
poziia $end.
int strlen(string str) returneaz lungimea unui ir de caractere;
string strstr(sirul de baza, sirul cautat) returneaz subirul din irul de baz care ncepe cu
irul cutat (exemplu: $email = 'abc@utm.com'; $domain = strstr($email, '@'); print
$domain; // tipareste @utm.com.).
string strtolower( string str) convertete un ir la litere mici.
string strtoupper(string str) convertete un ir la litere mari.
string ucwords(string str) convertete un ir astfel ncat va avea fiecare iniiala a fiecarui
cuvant scris cu majuscul. Restul literelor rmn neschimbate.
string ucfirst(string str) convertete un ir astfel nct va fi scris cu iniiala majuscula. Restul
literelor ramn neschimbate.
int strcmp(string str1, string str2) compar irul str1 cu irul str2 din punct de vedere al
codului ASCII, i returneaz urmatoarele valori ntregi:<0 dac str1 este mai mic decat
str2, > 0 dac str1 este mai mare decat str2 i 0 dac sirurile sunt egale.
trim() - funcie care elimina spatiile goale de al inceputul i sfarsitul unui sir de caractere
specificat ca parametru (asemanator funcie standard n C);

Unele funcii PHP au argumente opionale, care pot fi specificate sau omise, n conformitate cu
inteniile programatorului.
Cnd se produce o eroare n timpul execuiei unei funcii, PHP genereaz mesaje de eroare.
Uneori, asemenea mesaje de eroare sunt nedorite. n acest caz, puteti suprima generarea
mesajelor de eroare prin prefixarea numelui funcie invocate cu ajutorul caracterului @. De
exemplu, pentru a suprima mesajele de eroare care pot aparea n timpul execuiei funcie f( ),
invocati aceasta funcie dupa cum urmeaz: Y = @f(x);
Funcii utilizator
Pentru a defini o funcie rebuie s se respecte suntaxa:
function nume_funcie(list argumente)
{
// corpul funcie;
}

Section 7.02 Definirea argumentelor prestabilite


PHP va permite s definii funcii cu argumente prestabilite. Dac invocati o funcie care are un
argument prestabilit, dar nu furnizai nici o valoare pentru argumentul respectiv, argumentul ia o
valoare prestabilit specificat. Exemplu:
function calcul($cant , $rata = 0.011)
{
echo "<BR>cant=$cant";
echo "<BR>rata=$rata";
return $suma * $rata;
}
$cumparaturi = 123.45;
echo "<BR>cumparaturi = $cumparaturi";
$impozit = calcul($cumparaturi,0.16);
echo "<BR>impozit = $impozit";
$cumparaturi = 123.45;
echo "<BR>cumparaturi = $cumparaturi";
$impozit = calcul($cumparaturi);
echo "<BR>impozit = $impozit";

functia isset() preia ca argument de obicei o variabila si arata daca aceasta a fost sau nu gasita. De
exemplu: isset($nr) returneaza TRUE daca variabila "$nr" are setata o valoare (diferita de NULL), in caz
contrar returneaza FALSE.
Aceasta functie este foarte utila in determinarea caror comenzi sa fie executate in functie daca o anumita
variabila a fost setata sau nu. Previne aparitia unor erori care apar in cazuri de variabile nule si ajuta si la
securitate.

Funcia calcul preia doua argumente: un argument obligatoriu, denumit $cant, i un argument
prestabilit, numit $rata. Dac apelati funcia i furnizati un singur argument, valoarea
argumentului respectiv se considera ca fiind valoarea argumentului $cant, iar valoarea 0.011 se
foloseste ca valoare a argumentului $rata. Astfel, la prima invocare a funcie, $rata are valoarea

0.16, specificat drept al doilea argument al funcie. Cu toate acestea, la a doua invocare a
funcie, $rata are valoarea 0.011 deoarece este specificata valoarea unui singur argument.
Funcii pentru lucru cu fiiere
rol
primete ca parametru un ir reprezentnd
un nume de cale i returneaz numele
fiierului din calea respectiv
schimb grupul fiierului filename n group
i nu este diponibil pe Windows

sintax
string basename( string
path)

chown

schimb proprietarul fiierului filename cu


user group i nu este diponibil pe Windows

int chown( string


filename, mixed user)

copy

funcia copie un fiier surs ntr-un fiier


destinaie. Returneaz TRUE dac copierea
s-a realizat cu succes i FALSE n caz
contrar.
funcia returneaz numele directorului din
calea path.

int copy( string source,


string dest)

nchide fiierul referit prin fp. ntoarce


TRUE n caz de succes i FALSE n caz
contrar. Variabila fp trebuie s indice un
fiier valid, adic un fiier deschis cu
fopen() sau fsockopen().
Returneaz TRUE dac pointerul de fiier
este poziionat pe EOF sau n caz de eroare,
altfel returneaz FALSE.

int fclose( int fp)

funcie
basename

chgrp

dirname

fclose

feof

int chgrp( string


filename, mixed group)

string dirname( string


path)

int feof( int fp)


Variabila fp trebuie s
indice un fiier valid,
adic un fiier deschis
cu fopen(), popen() sau
fsockopen().
int fflush( int fp)

ffush

foreaz scrierea tuturor bufferelor de ieire


n fiierul indicat de fp. Returneaz TRUE
n caz de succes i FALSE n caz contrar.
Variabila fp trebuie s indice un fiier valid,
adic un fiier deschis cu fopen() sau
fsockopen().

fgetc

returneaz un caracter citit din fiierul fp.


Returneaz FALSE n cazul n care
caracterul citit este EOF.

string fgetc( int fp)

fgets

returneaz un ir de maxim length-1 octei


citii din fiierul indicat de fp. Citirea se
ncheie cnd au fost citii length-1 octei,
cnd se citete new line (este inclus n
valoarea returnat) sau EOF. Dac apare o
eroare la citire returneaz FALSE.

string fgets( int fp, int


length)

file_exists

ntoarce TRUE dac fiierul specificat prin


filename exist i FALSE n caz contrar.

int file_exists( string


filename)

funcie

rol

sintax

filesize

ntoarce dimensiunea fiierului specificat


prin filename dac acesta exist i FALSE
n caz de eroare.

int filesize( string


filename)

fopen

funcia deschide un fiier sau un URL. n


cazul deschiderii unui URL se stabilete o
conexiune ctre serverul Web specificat.
n cazul unui fiier obinuit acesta este
cutat n sistemul propriu de fiiere i
deschis.
funcia scrie irul string n fiierul fp n
ntregime (dac argumentul length lipsete)
sau numai length octei din acesta. fputs()
este un alias pentru fwrite() i este identic cu
aceasta.

int fopen( string


filename, string mode
[, int
use_include_path])

fread

funcia citete cel mult length octei din


fiierul binar fp. Citirea se ncheie cnd s-au
citit length octei sau EOF.

string fread( int fp, int


length)

fwrite

funcia scrie coninutul argumentului string


n fiierul indicat de fp. Dac argumentul
length este precizat scrierea se oprete dup
length octei sau dac irul string s-a
terminat.
ntoarce TRUE dac filename exist i este
un fiier obinuit.

int fwrite( int fp, string


string [, int length])

is_writeable

ntoarce TRUE dac filename exist i poate


fi scris.

boolean is_writeable (
string filename)

pclose

nchide fiierul indicat de fp. Variabila fp


trebuie s indice un fiier valid care a fost
deschis cu popen() .
citete coninutul fiierului filename i l
tiprete la ieirea standard. n caz de succes
ntoarce numrul de octei citii din fiier i
FALSE n caz de eec.
terge directorul dirname numai dac acesta
este gol, iar n caz de eroare ntoarce 0.

int pclose(int fp)

terge fiierul filename i returneaz 0 sau


FALSE n caz de eroare.

int unlink( string


filename)

fputs

is_file

readfile

rmdir

unlink

int fputs( int fp, string


str [, int length])

boolean is_file( string


filename)

int readfile( string


filename [, int
use_include_path])
int rmdir( string
dirname)

Funcii pentru lucru cu tablori (array)


funcie

rol

sintax

array

creaz i ntoarce un tablou de valori. array array( [mixed... ])


Array() este un constructor de limbaj
utilizat pentru a reprezenta tablouri i
nu o funcie obinuit.

array_count_val
ues

funcia returneaz un tablou folosind


valorile din tabloul de intrare, input,
drept chei i frecvena lor drept valori.
funcia returneaz un tablou coninnd
toate valorile lui array1 care sunt
prezente n toate celelalte argumente;
cheile sunt pstrate.
funcia returneaz cheile (numerice
sau iruri de caractere) ale tabloului
input.

array array_count_values(
array input)

funcia concateneaz elementele a


dou sau mai multe tablouri astfel
nct elementele unui tablou se adaug
la sfritul tabloului precedent.
funcia trateaz tabloul ca pe o coad
i introduce valorile primite ca
argumente la sfritul tabloului.
funcia returneaz un nou tablou care
conine elementele tabloului array n
ordine invers

array array_merge( array


array1, array array2 [, array
...])

array_sum

funcia calculeaz i returneaz suma


elementelor din tabloul arr ca un
numr ntreg sau float.

mixed array_sum( array


arr)

array_unique

array array_unique( array


funcia elimin valorile duplicate din
array)
tablou; returneaz un tablou nou care
nu conine valori duplicate; cheile nu
se modific.

arsort

funcia sorteaz descresctor tabloul


array astfel nct legturile dintre
indicii asociativi i valorile indicate de
ctre acetia s se menin. Vei folosi
aceast funcie pentru a sorta tablouri
asociative n care ordinea actual a
elementelor este important.
funcia sorteaz cresctor tabloul
array astfel nct legturile dintre
indicii asociativi i valorile indicate de
ctre acetia s se menin. Vei folosi
aceast funcie pentru a sorta tablouri
asociative n care ordinea actual a
elementelor este important.

array_intersect

array_keys

array_merge

array_push

array_revers

asort

array array_intersect( array


array1, array array2 [, array
...])
array array_keys( array
input [, mixed
search_value])

int array_push( array array,


mixed var [, mixed ...])
array array_revers( array
array [, bool
preserve_keys])

void arsort( array array [,


int sort_flags])

void asort( array array [, int


sort_flags]))

count

funcia returneaz numrul de


elemente din argumentul var, care este
de obicei un tablou. ntoarce 1 dac
variabila nu este un tablou i 0 dac
variabila nu a fost iniializat.

int count( mixed var)

each

funcia returneaz cheia curent i


valoarea corespunztoare din tabloul
array i avanseaz pointerul tabloului.
Aceast pereche de valori este
returnat ntr-un tablou cu 4 elemente,
cu cheile 0, 1, key i value. Elementele
0 i key conin numele elementului din
tablou, iar 1 i value conin valoarea.
funcia sorteaz un tablou n ordine
descresctoare.

array each( array array)

sort

funcia sorteaz elementele unuii


tablou n ordine cresctoare.

sizeof

funcia returneaz numrul


elemente dintr-un tablou.

void sort( array array [, int


sort_flags])])
int sizeof( array array)

rsort

de

void rsort( array array [, int


sort_flags])

Section 7.03 Utilizarea variabilelor globale


Variabilele globale sunt declarate n afara oricarei funcii. Variabilele de formular reprezinta un
tip important de variabile globale. Cu toate acestea, puteti crea o variabil globala atribuindu-i
acesteia o valoare, atata timp cat instructiunea de atribuire respectiva nu se afla n interiorul
corpului unei funcii. Totalitatea locurilor unde este accesibil o variabil se numeste domeniu de
existenta al variabilei. n mod prestabilit, variabilele globale nu pot fi accesibile din interiorul
corpului unei funcii; cu alte cuvinte, domeniul de existenta al unei variabile globale, nu include
corpurile funciilor. Dac dorii sa obinei accesul la o variabil globala n cadrul unei funcii,
putei extinde domeniul de existen al variabilei prin specificarea numelui acesteia n interiorul
unei instructiuni global. Instructiunea global are urmatoarea forma:
global variabil1, variabil2, variabil3;
Dup cuvntul cheie global pot urma una sau mai multe variabile; fiecare variabil este separat
prin virgul. Exemplu de utilizare a instruciunii global:
function not_global()
{
echo "<BR>nuglobal: x=$x";
}
function yes_global()
{
global $x;
echo "<BR>global: x=$x";
}
$x = 1;
not_global();

yes_global;

Utilizarea variabilelor locale i a variabilelor statice


Variabilele globale sunt create atunci cand li se atribuie o valoare i exist pe toat durata
programului. Variabilele locale sunt create la apelarea funcie asociate i sunt distruse la
incheierea apelului acesteia. Variabilele locale sunt disponibile doar pe durata execuiei funcie
asociate. Exemplu de script care definete o variabil locala $x i o variabil globala cu acelai
nume.
function este_local()
{
$x = 2;
echo "<BR>corpul funcie: x = $x";
}
$x = 1;
echo "<BR> corpul scriptutlui: x = $x";
este_local();
echo "<BR> corpul scriptului: x = $x";

Utilizarea variabilelor cookie


Variabilele cookie sunt utile pentru stocarea preferinelor utilizatorilor i a altor informaii care
trebuiesc reinute atunci cnd utilizatorul trece la o nou pagin web. Valorile variabilelor dispar
atunci cnd scriptul PHP care le conine i ncheie execuia.
Valoarea variabilei cookie este automat pus la dispoziie ca variabil PHP avnd acelai nume
cu acela al variabilei cookie. De exemplu, s presupunem c ai creat o variabil cookie denumit
"cursuri" i c i atribuii valoarea "informatica". Aceast pereche cursuri-informatica este apoi
pus la dispoziia fiecrui script PHP asociat paginilor web. Valoarea variabilei cookie se poate
afia folosind instruciunea
echo "Valoarea variabilei cookie este $cursuri";
care va afia: Valoarea variabilei cookie este cursuri.
Accesul la o variabil cookie
Funcia setcookie() are maxim ase argumente cu semnificaia:
setcookie(nume, valoare, expirare, cale, domeniu, sigur)
unde:
Nume - numele variabilei:
Valoare valoarea variabilei
Expirare timpul dupa care variabila expira
Cale specifica calea URL asociat variabilei cookie. n mod prestabilit, variabila cookie
este disponibil pentru scripturile din directorul care conine scriptul n care a fost
configurat variabila respectiv, precum i pentru scripturile din sub-directoarele aferente
directorului respectiv. n particular, scripturilor din directoarele printe ale directorului
care conine scriptul nu li se permite accesul prestabilit la variabila cookie.

Domeniu - permite s specificai numele de domeniu asociat unei variabile cookie.


Variabila cookie va fi disponibil numai pentru paginile web din cadrul domeniului
specificat.
Sigur - este o valoare ntreag, care specific dac o variabil cookie trebuie trimis prin
intermediul unei conexiuni sigure (HTTPS). Specificai valoarea 1 pentru a mpiedica
transmiterea variabilei cookie n cazul n care conexiunea nu este sigur; pentru a permite
transmiterea variabilei cookie prin conexiuni HTTP obinuite, specificai valoarea 0.

Sesiuni n PHP
O sesiune reprezint o metod de a stoca informaii (sub form de variabile) pentru a fi folosite
pe mai multe pagini. Spre deosebire de cookie-uri, informaia nu este stocat n calculatorul
utilizatorului. Este, de asemenea, diferit de celelalte variabile, n sensul c nu este transmis
individual ctre fiecare pagin n parte ci este obinut din sesiunea deschis la accesarea fiecrei
pagini.
Crearea i accesarea sesiunilor. Exemple.
Fiierul sesiune.php
<?php
// aici este pornita sesiunea
session_start();
//aici sunt stabilite variabilele sesiunii
$_SESSION['cursuri'] = 'cursuri';
$_SESSION['facultate'] = 'facultate';
print 'sfarsit';
?>

Iniializarea sesiunii se face folosind funcia session_start(), dup care se creaz perechi de chei valori pe care le stocm n sesiune. Majoritatea sesiunilor seteaz un cookie n calculatorul
utilizatorului, iar cnd o sesiune este deschis n alt pagin, se scaneaz calculatorul dup acea
cheie. Dac cele dou chei se potrivesc, atunci sesiunea este accesat, dac nu, o nou sesiune
este iniializat.
Modificarea i distrugerea sesiunilor
Implicit, o sesiune este activ att timp ct este browserul deschis. Acest lucru poate fi modificat
editnd fiierul php.ini i setnd opiunea session.cookie_lifetime = 0 (timpul este in secunde) sau
utilizand functia session_set_cookie_params().
Exemplu
<?php
// pornire sesiunea
session_start();
$_SESSION['cursuri']='cursuri';
// eliminarea unei variabile din tablou
unset($_SESSION['facultate']);
// eliminarea tuturor valorilor din tablou fara a distruge sesiunea in
sine
session_unset();
// aici distrugem toata sesiunea
session_destroy();
?>

3.6 Programarea orientat pe obiecte (POO) n PHP


n programarea orientat-obiect un sistem informatic este privit ca un model fizic de simulare a
comportamentului unei pri din lumea real sau conceptual. Acest model fizic este definit prin
intermediul unui limbaj de programare i el se concretizeaz ntr-o aplicaie ce poate fi executat
pe un sistem de calcul.
Printre avantajele programarii pe obiecte sunt:
cod mai structurat i mai lizibil,
lucrul organizat,
depanarea mai usoara a programelor,
refolosirea codului,
Dezavantajele principale sunt:
ruleaz mai ncet,
timpii de dezvoltare sunt mai mari.

n PHP 4.x nu sunt implementate toate facilitile POO. Pentru programarea pe obiecte n PHP,
este recomandata utilizarea PHP5.
O clasa este o colectie de variabile i funcii care opereaz asupra variabilelor respective.
Implementarea unei clase conine att variabile, ct i funcii, ea reprezentnd un ablon
(template) cu ajutorul cruia pot fi create instane specifice. Sintaxa folosit pentru declararea
unei clase n PHP este:
class nume_clasa {
// date membre
var nume_variabil_1
...
var nume_variabil_m
// metode
function nume_funcie_1 (parametri) {
... // definitia funcie
}...
function nume_funcie_n (parametri) {
... // definirea funcie
}
}

Pentru numele unei clase poate fi utilizat orice identificator permis n PHP cu o singura exceptie:
sdtclass; acest identificator este folosit de PHP n scopuri interne. Pentru a initializa variabilele cu
valori care nu sunt constante trebuie folosit un constructor.
Obiecte
Un obiect reprezinta o variabil de tipul clasei. Fiecare obiect are o serie de caracteristici, sau
proprieti ct i anumite funcii predefinite numite metode. Aceste proprieti i metode ale unui
obiect corespund variabilelor i funciilor din definiia clasei.
Operaia de initializare a unui obiect se numete instaniere. Clasele pot fi folosite pentru
a genera instane multiple. Instanierea (trecerea de la clasa la obiect) reprezint, atribuirea unor

proprieti specifice clasei, astfel nct aceasta s indice un obiect anume, care se difereniaz de
toate celelalte obiecte din clasa printr-o serie de atribute.
Proprieti
n corpul unei clase, se pot declara variabile speciale, numite proprieti. n PHP 4.x
acestea se declar cu cuvantul cheie var n fata.
/**
* PHP versiunea 4
*/
class Dictionar {
var $traduceri = array();
var $tip = Ro;
}

Aceasta sintaxa este n continuare acceptata (n PHP 5), dar doar pentru a asigura
compatibilitate cu versiuni anterioare de PHP.
In PHP 5, codul arata astfel:
/**
* PHP versiunea 5
*/
class Dictionar {
public $traduceri = array();
public $tip = Ro;}

Proprietile obiectelor se pot accesa folosind operatorul "->".


Section 7.04 Metode
Metodele sunt funcii cu ajutorul carora se poate opera asupra variabilelor clasei. ntr-o form
simpl, metodele sunt funcii declarate n interiorul unei clase.
$this este o pseudo variabil ce reine adresa obiectului curent (referina ctre obiectul
curent). Exemplu:
class operatori {
var $x = 5;
var $y = 4;
function Suma ( ) {
return $this -> x + $this -> y;
}
function Produs ( ) {
return $this -> x * $this -> y;
}
}

Pentru a crea un obiect de tipul operatori vom utiliza o instructiune $oper = new
operatori; Metodele clasei se pot apela
echo "suma este ".$operatori -> Suma ( )."<br>";
echo "produsul este ".$operatori -> Produs ( );

Section 7.05 Constructori

Un constructor este o metoda (funcie) a unei clase care este apelata automat n momentul n care
este creata o noua instanta a clasei (cu ajutorul operatorului new). n PHP este considerata ca
fiind un constructor orice funcie care are acelasi nume cu clasa n interiorul careia este definita.
Constructorii pot fi folosii pentru initializarea datelor membre cu valori care nu sunt constante.
Ei pot avea argumente, iar acestea pot fi optionale. Pentru a putea utiliza clasa fara a specific
nici un parametru n momentul crearii unui obiect, se recomanda stabilirea unor valori implicite
pentru toate argumentele constructorului. n cazul n care nu este definit un constructor pentru o
anumita clasa, se utilizeaz constructorul clasei de baz, dac aceasta exist.
Section 7.06 Destructori
n cadrul claselor definite n limbajul PHP 5 pot fi declarati destructori de clase. Destructorii sunt
utilizati n momentul distrugerii (eliberrii memoriei alocate) unui obiect. Un obiect este distrus
(eliminat din memorie) n momentul n care nu mai exist referinte ctre el. Necesitatea
destructorilor a aprut n momentul n care s-a pus problema transmiterii obiectelor prin referint
i nu prin valoare cum se efectua transmiterea obiectelor n versiunile anterioare ale
interpretorului.
Un destructor este dat de o metod al crui nume este __destruct() i care nu are parametri.
La fel ca i n cazul constructorilor, n momentul apelului unui destructor pentru o clas, nu este
apelat automat destructorul printelui, acesta trebuie apelat cu instructiunea:
parent::__destruct().

3.7 Utilizarea MySQL


MySQL este un server de baze de date disponibil gratuit, cu sursa deschis (open-source) care
ofer fiabilitate i avantaje reale. A fost dezvoltat de firma suedez MySQL AB. Administrarea
bazei de date se realizez folosind utilitare care lucreaz n linia de comand. Cel mai important
utilitar este mysql, un shell interactiv pentru controlul i interogarea bazei de date. Utilitarele
ruleaz cel mai bine pe sistemul Linux, platform pe care MySQL a fost dezvoltat iniial. Alte
dou utilitare cu surs deschis, oferite pe platform Windows, care ofer un set de comenzi de
administrare sunt MySqlManager, un utilitar de interogare n mod grafic similar cu mysql i
WinMySQL admin, o consol pentru administrarea detaliilor configurrii lui MySQL. Recent cea
mai utilizat metod pentru serverele care au instalat panoul de comand CPANEL este
PHPMyAdmin, care ofer o interfat grafic pentru manipularea datelor din MySQL.
MySQL opereaz n baz unui model client/server. Orice main care dorete sa
proceseze interogri asupra unei baze de date MySQL trebuie s ruleze MySQL server(mysqld),
care este responsabil de tot traficul de tip intrri/ieiri (incoming/outgoing) cu baz de date.
Modelul de securitate folosit de MySQL se bazeaz pe nume de utilizator, parol, nume server
(hostname) sau adres de IP i privilegii, fiind similar celui generic folosit de sistemele Unix. Prin
privilegii se neleg n cazul MySQL operaiunile ce vor fi permise asupra bazei/bazelor de date,
tabelelor sau indecilor, cum sunt de exemplu SELECT, INSERT, UPDATE, DELETE,
CREATE, DROP.
Datele sunt obiectul celor mai multe operaii de prelucrare, iar sistemele de gestiune a
bazelor de date furnizeaz cele mai complexe i puternice faciliti pentru lucrul cu datele. PHP
include o bibliotec de funcii care furnizeaz o interfa cu sistemul MySQL de gestiune a
bazelor de date. Folosind aceste funcii, un program PHP poate obine accesul la datele rezidene
ntr-o baz de date MySQL i le poate modifica.

O baza de date (n cazul nostru MySQL) este un program ce poate stoca o cantitate foarte mare de
informaii i o poate organiza ntr-un format accesibil n mod direct sau de ctre un alt program
(in cazul nostru PHP).
ntr-o baz de date, informaia este organizat sub form tabelar, n care coloanele se numesc
cmpuri iar liniile se numesc nregistrri. Capul de tabel determin structura bazei de date. Un
sistem de gestionare a bazelor de date (SGBD) este un program care permite utilizatorilor
interaciunea cu baza de date. Un SGBD asigur:
crearea bazei de date
introducerea informaiilor n baza de date
actualizarea informaiilor
extragerea datelor
controlul accesului la date
Obiectivul esenial, al unui SGBD este furnizarea unui mediu eficient, adaptat utilizatorilor care
doresc s consulte sau s actualizeze informaiile coninute n baza de date.O baza de date poate
conine mai multe tabele, ce pot fi legate intre ele.
Un cmp se caracterizeaz prin:
numele cmpului (reprezint un nume simbolic prin care cmpul se poate identifica),
tipul cmpului (pentru identificarea tipului de date care pot fi stocate n cmpul respectiv),
lungimea cmpului (numrul maxim de caractere care pot fi stocate n cmpul respectiv).
MySQL a fost creat n anul 1996 de ctre o compania suedez i este un SGBD foarte rapid, care
poate lucra cu baze de date de mari dimensiuni. MySQL permite lucru cu cmpuri numerice,
dat i ir.
Caracteristicile MySQL-ului sunt:
este o platform deosebit de stabil;
este independent de sistemul de operare pe care ruleaza (Windows, Linux,
Unix, etc);
este gratuit n anumite condiii de liceniere (Open Source Software) .
Afiarea interogrii n execuie i rularea ei pe baza de date se face cu ajutorul unor aplicaii
separate. Cele mai bune dou instrumente sunt:
Monitorul MySQL un instrument cu linie de comand pentru interactionarea cu
serverul MySQL;
phpMyAdmin, o interfa MySQL bazat pe PHP.
Cmpuri numerice
Unul dintre cele mai utilizate tipuri de cmpuri n MySQL este Int (integer), care poate stoca
valori cuprinse ntre 2.143.483.648 i 2.143.483.643. Acest tip de cmp poate fi folosit cu
opiunea auto_increment, pentru a defini cheia primar a unei tabele. Cheia primara este un cmp
care face posibil identificarea unica a fiecrei nregistrri. De obicei este vorba de un cmp
numeric, care va fi incrementat la fiecare operaie de adugare.
Tipuri de cmpuri dat/or

Exist n MySQL cinci tipuri de cmpuri folosite pentru stocarea datei calendaristice i a orei care
sunt:
Date
Datetime
Timestamp
Time
Year
Cmpul de tip date stocheaz valori n format AAAA-LL-ZZ i permite introducerea valorilor
cuprinse ntre 1000-01-01 i 9999-12-31.
Cmpul de tip datetime stocheaz valori n format AAAA-LL-ZZ HH:MM:SS, cuprinse ntre
1000-01-01 00:00:00 i 9999-12-31 23:59:59.
Cmpul de tip timestamp stocheaz automat timpul atunci cnd se modific valoarea unei
nregistrri (printr-o operaie de introducere sau actualizare).
Cmpul de tip time stocheaz timpul n format HH:MM:SS.
Cmpul de tip year poate stoca date cuprinse ntre 1901 i 2155.
Cmpuri de tip ir sunt:
Char
Varchar
Tinytext
Text
Mediumtext
Longtext
Enum
Cmpul de tip char are lungimea maxim de 255 caractere. Este de lungime fix (atunci cnd
introducem o valoare cu lungimea mai mic dect lungimea maxim a cmpului, cmpul va fi
completat n partea dreapt cu spaii).
Cmpul de tip varchar are lungimea maxim de 255 caractere, dar este de lungime variabil
(cmpurile nu vor mai fi completate cu spaii ca la tipul char).
Cmpurile de tip blob i text pot stoca o cantitate variabil de date.
Cmpurile de tip enum permit stocarea unei valori dintr-o mulime de valori specificat.
Principalele comenzi MySQL
Cele mai uzuale operaii cu bazele de date sunt:
Co

Semnificatie

manda

creaz o baza de date sau un

CR
EATE

tabel
DR

OP
INS
ERT
DE
LETE
UP
DATE

sterge o baza de date sau un tabel


adauga inregistrari intr-un tabel
sterge inregistrari dintr-un tabel
actualizeazninregistrarile dintrun tabel

SE

selecteaz un tabel

AL

modific structura unui tabel

SH

Afiare baze de date, tabele

US

Deschide o baz de date

LECT
TER
OW
E

1. Crearea unei baze de date se face cu comanda:


CREATE DATABASE nume_baz;
De exemplu, crearea bazei de date, numit student se realizeaz cu comanda
CREATE DATABASE student;
Caracterul ; este obligatoriu la sfritul oricrei comenzi..
2. Afiarea bazelor de date existente pe server se face cu comanda:
SHOW DATABASES;
3. Accesarea (deschiderea) unei baze de date pentru a putea fi folosit se face cu comanda:
USE nume_baz;
4. Crearea unei tabele ntr-o baz de date presupune mai nti deschiderea bazei de date i apoi
crearea propriu-zis a tabelei:
USE biblioteca;
CREATE TABLE carti (
codc int(4) NOT NULL auto_increment,
numecarte varchar(40) default NULL,
autor varchar(30) default NULL,
data date default NULL,
pret int(3) NOT NULL default '0',
stoc int(5) default NULL,
valoare int(5) default NULL,
PRIMARY KEY (codc)
) TYPE=MyISAM;

Explicaii:
o AUTO_INCREMENT funcioneaz cu orice tip intreg. La fiecare rnd nou adugat
n baza de date, numarul asociat va fi incrementat;
o NULL nseamn fr valoare (diferit de spaiu sau zero);
o NOT NULL nseamn c orice nregistrare completat cu
ceva;
PRIMARY KEY reprezint elementul de referin pentru fiecare linie.
5. Afiarea tabelelor coninute de o baz de date presupune deschiderea bazei de date i apoi
folosirea comenzii

SHOW TABLES;
6. Afiarea structurii unei tabele se face cu comanda
DESC nume_tabel;
n acest caz, vor fi afiate numele cmpurilor, tipul i lungimea lor.
7. Pentru a modifica structura unei tabele se folosete comanda ALTER TABLE.
De exemplu, pentru a modifica lungimea cmpului pret de la int(3) la int(4) se folosete comanda
ALTER TABLE carti MODIFY pret int(4);
Pentru a aduga un nou cmp, numit observatii, comanda este:
ALTER TABLE `cursuri`.`carti` ADD `observatii` VARCHAR(40) NOT NULL;
Pentru a schimba denumirea cmpului observatii n obs, comanda este:
ALTER TABLE `cursuri`.`carti` CHANGE `observatii` `obs` VARCHAR(40) NOT NULL;
8. tergerea unei tabele se face cu comanda
DROP TABLE;
De exemplu, pentru tergerea tabelei numit diverse, vom folosi comanda
DROP TABLE diverse;
Comanda DROP TABLE trebuie folosit cu mare grij, ntruct, n urma executrii ei, att
structura ct i datele coninute n tabele sunt terse.
9. Comanda INSERT introduce nregistrri ntr-o tabel existent.
Forma general a comenzii este:
INSERT INTO nume_tabel [(cmp1,camp2,,cmp n)] VALUES (valoare1,valoare2,,
valoare n);
10. Comanda SELECT este utilizat pentru a extrage nregistrrile din una sau mai multe tabele.
Sintaxa general este:
SELECT [DISTINCT] cmp1, cmp2,, cmp n
FROM nume_tabel
WHERE condiie
GROUP BY nume_cmp
ORDER BY nume_cmp [ASC | DESC]
LIMIT [numrul_primei_nregistrri_dorite, numrul_de_nregistrri_returnat]

PHP permite lucrul cu un numr mare de funcii MySQL. n PHP exista funcii pentru toate
operatiile executate asupra bazelor de date MySQL. Cele mai importante funcii sunt:
mysql_connect() stabilete o conexiune la serverul de baze de date MySQL.
Conectarea la MySQL se face astfel:
<?php
$link = mysql_connect("mysql_host","mysql_user","mysql_password") or

die("Nu se poate conecta");


?>

Dac MySQL este instalat pe staia de lucru atunci conexiunea la baza de date se
realizeaz:
<?php
$link = mysql_connect("localhost", "root", "")
or die("Nu se poate conecta");
?>

Funcia die nu face altceva decat s afiseze mesajul i s nu mai execute nici un cod dup.
Variabil $link reprezint un identificator pentru aceasta conxiune.
mysql_select_db() selecteaz o baz de date.
Sintaxa este: mysql_select_db(nume baz) or die (baza de date nu poate fi selectata!).
Dup conectarea, trebuie s-i spunem serverului MySQL ce baza de date dorim sa folosim,
operaie ce se realizeaz:
<?php
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password
")
or die("Nu se poate conecta");
mysql_select_db("cursuri", $link) or die("nu se poate alege baza
de date");
?>

Funcia mysql_select_db este cea care i transmite serverului MySQL ce baz de date vrem sa
folosim.
mysql_query() interogheaz o baz de date aflat pe server.
Sintaxa este: $resultat=mysql_query(Interogare SQL)
Exemplu: $resultat=mysql_query("select * from utizatori")
mysql_fetch_array() returneaz un array (matrice) corespunztor interogrii efectuate.
mysql_num_rows() returneaz numrul nregistrrilor (rndurilor) rezultate dintr-o interogare.
mysql_affected_rows() returneaz numrul de nregistrri(rnduri) afectate de o interogare
INSERT, DELETE SAU UPDATE. Aceast funcie nu opereaz i cu comanda SELECT.
mysql_free_result() elibereaz zona de memorie folosit de o interogare. Aceast funcie este
util n cazul n care interogarea returneaz un numr mare de rezultate, dup care scriptul
continu s execute operaii.
mysql_close() nchide o conexiune MySQL.
Cnd o conexiune este nchis (fie folosind aceast funcie, fie la terminarea scriptului), PHP
elibereaz memoria folosit de interogare.
mysql_create_db() creaz o baz de date MySQL.

mysql_drop_db() terge o baz de date MySQL.


mysql_list_dbs() returneaz bazele de date aflate pe un server MySQL.
mysql_list_tables() returneaz tabelele dintr-o baz de date MySQL. Aceast funcie trebuie
folosit mpreun cu funcia mysql_tablename().
mail($to, $subject, $message, $headers) funcie folosit pentru a trimite un email (de la $to,
cu subiectul $subiect, avnd ca mesaj $message cu headerele adiionale $header);
mysql_error() returneaz mesajul de eroare sub forma de ir de caractere generat de baza de
date MySQL dac este cazul;
session_start() - initializeaz o seciune de date bazata pe ID-ul de sesiune trimis printr-o cerere
GET sau POST;
session_destroy()- distruge toate datele asociate cu sesiunea curent;
ob_start()- oprete afiarea bufferului pn la terminarea execuiei scriptului;
print() - initializeaza listarea la imprimanta a unei pagini web;
require() - funcie care include n scriptul curent coninutul unui fiier cu verificarea de a fi
introdus o singura dat (spre deosebire de funcia include() - care permite includerea fiierului de
mai multe ori);
crypt($pass, "BB") funcie care cripteaz un ir de caractere ($pass) dup o cheie de criptare
(BB);

Section 7.07 Lista functii php pentru lucru cu baze de date MySql

mysql_affected_rows Numarul de randuri afectate de ultima operatie MySQL


mysql_change_user Schimba utilizatorul pentru conexiunea curenta
mysql_client_encoding Intoarce numele setului de caractere curent
mysql_close Inchide conexiunea la MySQL
mysql_connect Creeaza o conexiune la MySQL
mysql_create_db Creaza o noua baza de date MySQL
mysql_data_seek Move internal result pointer
mysql_db_name Get result data
mysql_db_query Send a MySQL query
mysql_drop_db Drop (delete) a MySQL database
mysql_errno Returns the numerical value of the error message from previous MySQL operation
mysql_error Returns the text of the error message from previous MySQL operation
mysql_escape_string Escapes a string for use in a mysql_query
mysql_fetch_array Fetch a result row as an associative array, a numeric array, or both
mysql_fetch_assoc Fetch a result row as an associative array
mysql_fetch_field Get column information from a result and return as an object
mysql_fetch_lengths Get the length of each output in a result
mysql_fetch_object Fetch a result row as an object
mysql_fetch_row Get a result row as an enumerated array
mysql_field_flags Get the flags associated with the specified field in a result
mysql_field_len Returns the length of the specified field
mysql_field_name Get the name of the specified field in a result

mysql_field_seek Muta pointerul rezultatului la un camp specificat


mysql_field_table Get name of the table the specified field is in
mysql_field_type Get the type of the specified field in a result
mysql_free_result Free result memory
mysql_get_client_info Aflare informatii client MySQL
mysql_get_host_info Get MySQL host info
mysql_get_proto_info Get MySQL protocol info
mysql_get_server_info Get MySQL server info
mysql_info Get information about the most recent query
mysql_insert_id Get the ID generated from the previous INSERT operation
mysql_list_dbs List databases available on a MySQL server
mysql_list_fields List MySQL table fields
mysql_list_processes List MySQL processes
mysql_list_tables List tables in a MySQL database
mysql_num_fields Get number of fields in result
mysql_num_rows Get number of rows in result
mysql_pconnect Open a persistent connection to a MySQL server
mysql_ping Ping a server connection or reconnect if there is no connection
mysql_query Send a MySQL query
mysql_real_escape_string Escapes special characters in a string for use in a SQL statement
mysql_result Get result data
mysql_select_db Select a MySQL database
mysql_set_charset Sets the client character set
mysql_stat Get current system status
mysql_tablename Get table name of field
mysql_thread_id Return the current thread ID
mysql_unbuffered_query Send an SQL query to MySQL, without fetching and buffering the result rows

Tema propusa
S se creeze n baza de date agenda, tabela prieteni, care va avea structuta:
CREATE TABLE prieteni (
id int(3) NOT NULL auto_increment,
nume varchar(15) default NULL,
prenume varchar(15) default NULL,
virsta tinyint(3) default NULL,
telefon varchar(10) default NULL,
adresa text,
poze varchar(20) default NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
S se realizeze o interfaa cu ajutorul creia s se populeze tabela, s se actualizeze numarul de
telefon, s se terg nregistrri pe baz de id i eventual s se afieze coninutul tabelei. Interfaa
va arta ca n figura de mai jos.

Exemplu de script care utilizeaz funciile print_r i implode.


<?php
$t=array("ianuarie", "februarie","martie","aprilie", "mai","iunie","iulie","august"
,"septembrie","octombrie","noiembrie","decembrie");
echo $t[4]."<br><br><br><br>";
for ($i=0;$i<12;$i++)
echo $t[$i]."<br>";
sort ($t);
echo"<br>";
for ($i=0;$i<12;$i++)
echo $t[$i]."<br>";
echo "<br><br><br><br><br>";
//for ($i=0;$i<12;$i++)
//echo $t[$i]."<br>";
print_r($t);
echo "<br>";

echo "<br>";
echo "<br>";
$tab=array
("primul"=>"luni",
"al doilea"=>"marti",
"al treilea"=>"miercuri");
echo $tab["primul"];
echo "<br>";
echo "<br>";
echo "<br>";
print_r($tab);
echo "<br>";
echo "<br>";
echo "<br>";
$sir=implode($tab,", ");
echo $sir;
?>

Aplicatie: introducem date intr-un formular cu 2 campuri nume i prenume i apoi cu ajutorul
scriptul insert.php datele se introduc n baza de date.
/* fisierul adaugare.html */
<html>
<head>
<title>Formular</title>
</head>
<body>
<b>Adaugare inregistrari</b>
<form method="POST" action="insert.php">
Nume: <input type="text" name="nume"><br>
Prenume: <input type="text" name="prenume"><br>
<input type="submit" value="Trimite">
</form>
</body>
</html>
/* fisierul insert.php */
<?php
include "conexiune.php";
$nume=$_POST['nume'];
$prenume=$_POST['prenume'];
$query="INSERT INTO proba (nume, prenume) VALUES
'$nume','$prenume')";
if (!mysql_query($query)) {
die(mysql_error());
} else {
echo "datele au fost introduse";
}
mysql_close($conexiune);
?>

Pentru a afia fiecare rnd din tabel se folosete o bucla while i comanda mysql_fetch_row, ca n
exemplu:
<?php

include "conexiune.php";
$sql=mysql_query("SELECT * FROM carti");
echo "<table border=1>";
echo "<tr><td>ID</td><td>titlu</td><td>Autor</td></tr>";
while ($row=mysql_fetch_row($sql)) {
echo "<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td></tr>";
}
echo "</table>";
mysql_close($conexiune);
?>

Datele au fost afisate fiecare intr-o celula a unui tabel.


Folosind funcia mysql_num_rows($sql) putem afla numarul de linii continute de baza de
date. Exemplu precedent la care se adaug numarul de linii al tabelei din baza de date.
/* urmeaz fisierul select.php */
<?php
include "conexiune.php";
$sql=mysql_query("SELECT * FROM carti");
$rows=$mysql_num_rows($sql);
echo "<b>$rows</b> inregistrari n baza de date<p>";
echo "<table border=1>";
echo "<tr><td>ID</td><td>titlu</td><td>autor</td></tr>";
while ($row=mysql_fetch_row($sql)) {
echo "<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td></tr>";
}
echo "</table>";
mysql_close($conexiune);
?>

Exemplu: cautarea n baza de date dupa o anumita inregistrare folosind conditia WHERE.
/* urmeaz fisierul cautare.html */
<html>
<head><title>Cautare</title>
</head>
<body>
<b>Cautare inregistrari</b>
<form method="POST" action="where.php">
Numele cautat: <input type="text" name="nume1"><br>
<input type="submit" value="Trimite">
</form>
</body>
</html>
/* urmeaz fisierul where.php */
<?php
include "conexiune.php";
$nume1=$_POST['nume1'];
$sql=mysql_query("SELECT * FROM proba WHERE nume='$nume1'");
echo "<table border=1>";
echo "<tr><td>ID</td><td>Nume</td><td>Prenume</td></tr>";
while ($row=mysql_fetch_row($sql)) {
echo "<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td></tr>";
}
echo "</table>";

mysql_close($conexiune);
?>

Unitatea de invatare IV.


CONSTRUIREA DOCUMENTELOR XML
Aceasta unitate are ca scop cunoasterea regulilor pe care trebuie s le respecte documentele
XML. Regulile sunt simple, multe dintre ele fiind cunoscute de la HTML. Regulile XML pot fi
clasificate n dou categorii: reguli de sintax XML si reguli de validitate a documentelor XML

Dup parcurgerea si nsusirea acestei teme, studentul va fi capabil:


- sa construiasca documente XML
- sa construiasca prologul unui document XML
- sa utilizez XML ca baza de date
- sa cunoasca modul de stocare a documentelor in BLOB-uri
- sa cunoasca importanta sistemelor de management al continuturilor

Materialul trebuie parcurs n ordinea sa fireasc prezentat n continuare, inclusiv n zona


referitoare la aplicatii. Se recomand testarea tagurilor XML si consultarea Internetului
pentru detalii si informatii suplimentare (www.w3schools.com). Timpul minim pe care
trebuie s-l acordati acestui modul este de 8 ore.
Cuprins:

4.1. Construcia documentelor XML i importana acestora


4.2. Caracteristicile lui XML
4.3. Construcia prologului unui document XML
4.4. XML-ul ca baz de date
4.5. Date, documente i baze de date
4.6. Stocarea documentelor n BLOB-uri
4.7. Sisteme de management ale coninuturilor

Cuvinte cheie: XML, DTD-ul, DOCTYPE, Date, documente, baze de date, RSS, Blob-uri
Article VIII.

4.1 Construirea documentelor XML i importana acestora

XML (Extensible Markup Language ) este o form condensat a Standard Generalized


Markup Language (SGML) care permite dezvoltatorilor s creeze etichete particularizate,
care ofer flexibilitate n organizarea i prezenarea informaiilor. XML este format de fapt
din dou metalimbaje, ambele descrise n acelai document. Primul este un set de reguli
pentru realizarea de documente XML construite corect, n timp ce al doilea este un set de
reguli pentru realizarea unei definiii a tipului documentului XML, sau DTD (Document
Type Definition), care permite ca structura documentului XML s se supun unor
constrngeri i s fie validat fa de acele constrngeri.
XML are o natur dual fiind:
un metalimbaj care permite descrierea de noi structuri de documente i vocabulare;
un limbaj utilizat ca s exprime acea structur i acel vocabular n cazul unui
document.
Section 8.01
Section 8.02 Definiiile tipului documentului XML (DTD-urile) descriu instane ale
limbajului XML, numite uneori vocabulare XML. Dcumentele XML sunt create utiliznd
acele limbaje.
XML este un limbaj cu etichete i atribute asemntor cu HTML, dar un HTML
transformat att de mult, nct nu mai poate fi recunoscut. XML este mult mai structurat
dect HTML. n timp ce procesoarele HTML accept n mod curent cod incorect i diform
i ncearc s i dea sens pe ecran, XML trebuie s se opreasc atunci cnd gsete o
eroare fatal, care poate fi aproape orice tip de eroare.
Dac n HTML avem un numr relativ mic de etichete, XML are un numr de
etichete aproape infinit, structurate n aproape orice fel se dorete. Oricum, fundamentele
au rmas aceleai, XML reprezentnd un pas evolutiv al HTML. Cu toate c orice
procesor XML poate spune despre o poriune de cod dac este sau nu construit corect, iar
un manual poate ajuta la construirea unui document valid, DTD-ul permite verificarea fr
ambiguiti a codului. Totui, n funcie de tipul de creare utilizat, acesta poate fi un pas
diferit de procesul de editare.
Codul ndeplinete acest ideal n funcie de utilizarea dat numelor etichetelor, totui ntre
anumite limite:
Numele de etichete care ncep cu irul xml, indiferent de tipul literelor, sunt
rezervate; adic, indiferent de situaie, nu este permisa crearea lor;
Numele de etichete care conin caracterul dou puncte pot fi interpretate ca
identificatori avnd asociat o zon de nume, deci utilizarea celor dou puncte n
numele etichetelor este puternic combtut i poate fi chiar interzis;
Un nume de etichet trebuie s nceap cu o liter, care n acest context este orice
liter sau ideogram Unicode/ISO/IEC 10646, sau cu o liniu de subliniere.
4.2 Caracteristicile lui XML

XML este sensibil la tipul literelor deoarece majusculele nu reprezint un


concept universal Dac s-ar trata literele mari i mici ca fiind echivalente, ar
trebui s se fac la fel pentru mii de alte variante de litere n alte limbi, o operaie
mpovrtoare. Unele limbi nici nu au tipuri de litere. De exemplu, n limba ebraic
nu exist litere mici, iar limba arab nu face distincie ntre forma iniial, de mijloc
i final a literelor. Pentru cei care prefer s scrie etichetele cu majuscule i
atributele cu litere mici, pentru a le evidenia, aceasta este o tire teribil. Dar
editoarele de cod moderne nu mai acord o importan aa de mare acestui lucru ca
nainte. De exemplu, precizarea anumitor culori pentru a marca etichete este un
lucru obinuit, deci utilizarea majusculelor este ntructva un anacronism istoric,
asemenea numerelor de linii n COBOL.
XML este foarte precis cu privire la imbricarea corect a etichetelor .
Etichetele nu se pot ncheia ntr-un context diferit de cel de nceput. Deci, dac se
dorete <bold> <italics>, fraza evideniat trebuie nchis cu </italics></bold>,
pentru a evita o eroare fatal. Deoarece XML poate referi i include documente
XML i fragmente de documente oriunde pe Web, fiecare document XML trebuie
s se supun acelorai reguli pentru a nu strica documentele altora.
XML nu este bine protejat mpotriva recursivitii Cu toate c este posibil
stabilirea excluderilor explicite la un anumit nivel, la o structur complex a unui
document este dificil meninerea acelor excluderi la un nivel redus, mai ales atunci
cnd se utilizeaz etichete care pot fi aplicate la orice nivel. Deci, interdicia HTML
referitoare la includerea unei etichete ancor <a> n interiorul altei etichete ancor
exist i n XML, dar nu este impus dincolo de includerea direct.
XML oblig la nchiderea fiecrei etichete, chiar i a etichetelor vide Deoarece
este posibila crearea unui document XML care s nu utilizeze un DTD, un procesor
XML nu are de unde s tie dac o etichet este sau nu vid. Deoarece toate
documentele XML trebuie s fie construite corect, etichetele vide trebuie marcate
cu o sintax special care spune unui procesor XML c eticheta este vid i nchis.
Acest lucru se realizeaz plasnd un spaiu i un caracter slash la sfritul etichetei,
astfel: <break />
XML necesit ncadrarea valorilor atributelor fie ntre apostrofuri, fie ntre
ghilimele Acolo unde HTML este indulgent, mai ales n ceea ce privete numerele
i aproape orice ir fr spaii n interior, XML trateaz totul ca ir de caractere i
las aplicaia s i dea seama singur de toate acestea.
XML recunoate mai multe limbi Spre deosebire de HTML, seturile de
caractere extinse utilizate n multe limbi europene nu sunt pe deplin recunoscute n
mod prestabilit. Exist un mecanism simplu pentru includerea acestora, precum i a
ntregului set de caractere Unicode (cunoscut, de asemenea, i ca ISO/IEC 10646)

care are peste un milion de caractere, deci suportul pentru chinez, arab i multe
alte limbi mai exotice ale lumii este un lucru uor. n afar de diferenele menionate
n aceast list, XML este foarte asemntor cu HTML din punctul de vedere al
marcrii etichetelor, al argumentrii atributelor i al trecerii coninutului ntre
perechi de etichete.

Limbajul XML a fost proiectat astfel nct s fie transparent la utilizare pentru a putea fi
neles i utilizat cu uurin. Descrierile XML succinte sau complicate din majoritatea
documentelor sunt greu de neles n efortul de a fi explicit ntr-un mod n care
programatorii s l poat translata cu uurin n aplicaii care s funcioneze.

Un document XML este o colecie de entiti care pot fi sau nu analizate. Datele
care nu sunt nelese de un procesor XML, date binare sau date care au sens numai
pentru alte aplicaii, reprezint date neanalizate. Datele nelese de XML, fie ca i
caractere fie ca marcaje, sunt date analizate. Un document XML trebuie s fie construit
corect.

4.3 Construirea prologului unui document XML


Prologul unui document XML conine mai multe instruciuni. Prima, declaraia XML,
afirm c documentul urmtor este XML. Cea de a doua, declaraia tipului documentului
(Document Type Declaration), este metod utilizata pentru a identifica definiia tipului
documentului (Document Type Definition - DTD) folosit de un anumit document. Faptul
c acronimul DTD poate fi aplicat la Document Type Declaration este o coinciden
nefericit. DTD se refer numai la Document Type Definition. ntr-un document XML
poate exista o singur declaraie a tipului documentului, deci este introdus chiar n
instana documentului. Deoarece pot fi combinate mai multe DTD-uri pentru a forma un
singur document, aceasta permite controlul ncrcrii DTD-urilor n fiecare document.
Declaraia tipului documentului (DOCTYPE) are dou pri, ambele opionale.
Prima se refer la un DTD extern, i utilizeaz cuvinte cheie PUBLIC sau SYSTEM pentru
a identifica o intrare dintr-un catalog, respectiv un URI. n cazul n care cataloagele nu
sunt implementate n procesorul XML, se pot specifica ambele pri deodat, fr cel de al
doilea cuvnt cheie:

<!DOCTYPE nume-document PUBLIC {catalog id}>


<!DOCTYPE nume-document PUBLIC {catalog id} {uri}>
<!DOCTYPE nume-document SYSTEM {uri}>

Cea de a doua parte opional a declaraiei DOCTYPE permite introducerea submulimii


interne a unui DTD direct n document. Exist restricii severe cu privire la genul de
informaie care poate fi introdus n DTD-ul intern, dar oricum se pot face destul de multe.
Submulimea intern a unui DTD este ncadrat ntre paranteze drepte, astfel:

<!DOCTYPE nume-document [ {declaraiile DTD-ului intern} ]>

De asemenea, cele dou pot fi combinate, permind adugarea anumitor tipuri de


declaraii i entiti aproape n orice mod:
<!DOCTYPE nume-document PUBLIC {catalog id} {uri} [ {declaraiile DTD-ului
intern} ]>

Pentru claritate, submulimea intern este evideniat ca mai jos:


<!DOCTYPE nume-document PUBLIC {catalog id} {uri} [
{declaraiile DTD-ului intern}
]>

(a)

(b)
(c) Definirea corpului documentului
Un document XML este alctuit din text, care de obicei este format din mai multe marcaje
i date caracter. Prologul conine numai marcaje, dar nu aceasta este partea interesant,
deoarece este nevoie de date care s nsoeasc marcajele care, altfel, nu ar fi dect nite
cutii goale. Corpul documentului conine aproape tot ceea ce conteaz din perspectiva unei
aplicaii mprtiate generos n cadrul marcajelor.
Un DTD poate declara multe tipuri de date care s poat fi utilizate ntr-un document, dar
tipul de date prestabilit este ntotdeauna CDATA, pentru date obinuite de tip caracter.
Foaia sau manualul de codare indic ce tip de dat poate fi introdus n fiecare atribut sau
cmp cu coninut element. Presupunnd c tipul de date este CDATA, n cmp se poate
pune aproape orice se dorete att timp ct nu conine un marcaj n afara unei secvene
escape. Marcajul este format din ansamblu de date non-caracter dintr-un fiier XML.
Diversele forme pe care le poate lua un marcaj sunt prezenate n tabelul urmtor:

Tabel cu sintaxa marcajului XML


Eticheta de pornire
Eticheta de terminare
Eticheta definire element vid
Referina entitate
Referina caracter
comentariu
Delimitatoare
sectiune
CDATA
Declaratiile
tipului
documentului
Instructiuni de prelucrare
Declaratia XML

<numeElement [atribute]>....
...</numeElement>
<numeElement [atribute]/>
&numeEntitate; sau%parametru_nume_entitate
&#numarzecimal;
<!comentariu - ->
<![CDATA[ informatii cdata]]>
<!DICTYPE nume idextermen? [informatii
DTP]>
<?Idprocesor date?>
<?xml version encoding standalone?>

Marcajul ncepe ntotdeauna fie cu caracterul <, caz n care se ncheie ntotdeauna cu
caracterul >, fie cu caracterul &, caz n care se ncheie ntotdeauna cu caracterul ;.
(d) Formarea structurilor logice n XML
Imbricarea elementelor este singurul mecanism utilizat pentru a arta structura logic
dintr-un document XML. Etichetele de pornire i ncheiere din fluxul de text spun
procesorului XML c a fost ntlnit un nod. Dac procesorul XML ntlnete o alt
etichet de pornire nainte de eticheta de ncheiere corespunztoare, atunci procesorul tie
c acesta este fie un nod nou n arbore, fie o frunz. Dac nu gsete o nou etichet de
pornire i ntlnete o etichet de ncheiere, atunci procesorul tie c aceasta este o frunz
i c poate aciona iterativ la acel nivel al arborelui pn cnd ntlnete o alt etichet de
pornire sau de ncheiere. Prelucrarea acioneaz treptat, bazndu-se pe aceast regul
simpl. Dac procesorul valideaz documentul, atunci fiecrui nod i se poate asocia o
regul care s determine ce tip de coninut poate aprea n el. O etichet vid este, prin
definiie, o frunz, deoarece nu poate avea nici un coninut.

n XML sunt utilizate dou tipuri de etichete, etichete cu coninut i etichete vide.

Etichetele cu coninut trebuie s aib o etichet de pornire i o etichet de ncheiere.


Eticheta de pornire conine numele elementului ncadrat ntre paranteze unghiulare, avnd
opional atribute ca argumente. Eticheta de ncheiere conine numele elementului precedat
de caracterul slash, totul fiind ncadrat ntre paranteze unghiulare. n eticheta de ncheiere
nu putei trece atribute.
Codul urmtor reprezint o etichet cu coninut:

<titlu subtitlu=o excursie >dus-ntors</titlu>

Seamn mult cu etichetele HTML standard i nu ar trebui s ridice alte probleme n afara
celei de construire corect, care cere ca ele s se imbrice ntr-adevr una n cealalt. Nu
pot exista etichete care s alterneze ntre ele ca n acest exemplu greit construit:

<bold><italic>text ingrosat i inclinat</bold></italic>


Cu toate c este o eroare obinuit n HTML, XML este cu mult mai pretenios i nu
va permite aceast construcie. Etichetele trebuie imbricate corect, dup cum se vede n
exemplul urmtor:
<bold><italic> text ingrosat i inclinat </italic></bold>
Acum etichetele sunt imbricate corect. Trebuie nchis fiecare etichet care ncepe
n contextul unei anumite etichete (sau a mai multor etichete) nainte de nchiderea
contextului etichetei respective.
Etichetele vide au disponibil un format special, cu toate c aceeai schem, etichet
de pornire/ etichet de ncheiere, poate fi utilizat atta timp ct se ine cont de faptul c nu
trebuie pus nici un fel de coninut ntre eticheta de pornire a elementului vid i eticheta de
ncheiere care urmeaz imediat dup ea. De asemenea, poate exista preocuparea c este
posibil ca documentul XML s fie vizualizat cu un browser Web obinuit, deoarece
etichetele de ncheiere pentru elementele care arat ca etichete HTML vide pot duce la
blocarea browserului sau la un comportament ciudat al acestuia. Totui, pentru utilizare
general, formatul special este mnemonic n sine, un avantaj deoarece se poate vedea c
eticheta este vid i nu blocheaz aproape nici un browser. De obicei, etichetele vide sunt
pornite i ncheiate n cadrul aceleiai perechi de paranteze unghiulare, plasnd dup
numele elementului i toate atributele sale posibile un spaiu, un caracter slash i apoi
paranteza unghiular nchis:

<image source=imagine.jpeg type=JPEG />


Fiecare element dintr-un document XML valid a fost definit n DTD-ul asociat acelui
document prin declaraia DOCTYPE. DTD-ul declar urmtoarele:

numele efective ale elementelor,


regulile utilizate pentru a determina care elemente se pot imbrica n alte elemente
i n ce ordine,
atributele posibile i valorile lor prestabilite sau constante,
valorile caracter ale tipurilor enumerate,
entitile neanalizate utilizate n document i modul n care sunt referite prin
nume,
codificrile de limb utilizate n document,
alte informaii importante pentru prelucrarea i redarea documentului.
(e) Entiti neanalizate
O entitate neanalizat este orice lucru care nu poate fi recunoscut de un procesor XML, fie
date binare, cum ar fi un fiier imagine sau audio, fie text care trebuie s fie transferat unei
aplicaii fr a fi prelucrat n vreun fel. HTML utilizeaz comentarii pentru a ascunde un
astfel de text de browserul HTML, dar XML are cteva mecanisme care funcioneaz mult
mai sigur.
O entitate neanalizat trebuie mai nti s fie declarat ca NOTATION, o declaraie
special care numete o aplicaie de asisten care tie cum s lucreze cu entiti de un
anumit tip. Notaiei i este dat un nume, un identificator public opional i apoi numele mai
puin opional al aplicaiei de asisten, ca n una din variantele urmtoare:

<! NOTATION nume-mnemonic PUBLIC identificator-public>


<!
NOTATION nume-mnemonic PUBLIC
identificator-public
aplicaie.exe>
<! NOTATION nume-mnemonic SYSTEM nume-aplicaie.exe>

nume-

Prima opiune funcioneaz numai dac exist un catalog. Nu se poate pune baza pe un
catalog deoarece acesta funcioneaz indiferent dac exist sau nu catalog. Nu se poate
baza pe un catalog deoarece acesta este un instrument SGML pe care multe procesoare
XML actuale l-au motenit implicit de la predecesoarele lor SGML. Studierea catalogului
nu este specificat n recomandarea W3C i nu se poate conta niciodat pe ea. Dac este
posibil, se recomand utilizarea ultimele dou versiuni. Pe de alt parte, codarea hard a
informaiilor despre locaia i identitatea aplicaiei de asisten n absolut fiecare DTD este
un anacronism predispus la erori pe Web.
Section 8.03 4.4 XML-ul ca baz de date

Un document XML este o baz de date n sensul cel mai strict al cuvntului i anume
este o colecie de date. Se poate considera c aceste documente nu sunt diferite de orice
alt tip de fiiere n fond, toate fiierele conin anumite tipuri de date.
Avnd formatul unei baze de date documentele XML prezint anumite avantaje. De
exemplu, este auto-descris (tag-urile descriu structura i numele tipurilor de date, dar nu i
semantica), este portabil (Unicode), i poate descrie date n structuri de arbori sau grafuri.
De asemenea are i dezavantaje. De exemplu, este prolixs(neclar) i accesul la date este
greoi datorit analizrii i conversiei textului.

Putem considera i c XML i tehnologiile asociate constituie o baz de date n


sensul mai larg al cuvntului adic, un sistem de gestiune a bazelor de date (SGBD).
XML ofer multe din avantajele bazelor de date: stocare (documente XML), scheme
(DTD-uri, scheme XML, RELAX NG, .a,), limbaje de interogare (XQuery, XPath,
XQL, XML-QL, QUILT, etc.), interfee de programare (SAX, DOM, JDOM). Totui
multe componente ale bazelor de date convenionale: stocare eficient, indeci,
securitate, tranzacii i integritatea datelor, accesul multi-user, triggere, interogri fcute
pe mai multe documente .a.

Astfel, se pot folosi documente XML ca o baz de date ntr-un mediu cu cerine
modeste i date puine, dar aceast soluie nu este viabil ntr-un mediu pentru producie n
mas, unde exist muli utilizatori, cerine stricte de integritate a datelor i nevoia de o
performan bun.
Cel mai important factor n alegerea unei baze de date este ce va stoca aceasta: date sau
documente?. XML-ul poate fi folosit doar pentru a transporta date ntre baza de date i o
aplicaie sau poate fi folosit integral ca n cazul documentelor XHTML i DocBook.
Scopul utilizrii XML este important deoarece toate documentele centrate pe date au
anumite caracteristici comune, la fel se ntmpla i n cazul informaiilor centrate pe
documente, i aceste caracteristici influeneaz felul cum XML-ul este stocat n baza de
date. Documentele centrate pe date sunt documente care folosesc XML-ul pentru
transportul datelor. Aceste documente sunt folosite de ctre aplicaii i nu are nici o
importan faptul c informaiile folosite au fost reinute pentru o perioad de timp n
documente XML. Exemple de documente centrate pe date sunt ordine de plat,
programarea zborurilor, date tiinifice.

Documente centrate pe date au o structur regulat, datele sunt atomice (cea mai
mic unitate independenta de date este un element sau un atribut). Ordinea elementelor
care apar n document nu este important, dect n momentul validrii documentului.
Informaiile care exist n documentele centrate pe date pot proveni din baza de date (caz
n care se dorete extragerea lor n fiiere XML), dar i din afara bazei de date (caz n care
se dorete stocarea acestora n baza de date). Un exemplu de informaii care provin dintr-o
baz de date sunt cantitile de date stocare n bazele de date relaionale, iar un exemplu de
informaii care se doresc a fi introduse ntr-o baz de date pot fi considerate datele
tiinifice obinute de un sistem de msurtori i convertite n XML.

Urmtorul model este un document centrat pe date:


<OrdinVanzari NumarOV=35442>
<Client NumarClient=423>
<NumeClient>Alfa 123</NumeClient>
<Strada>Calea Vacaresti.</Strada>
<Oras>Bucuresti</Oras>
<Sector>IL</Sector>
<CodPostal>0040</CodPostal>
</Client>
<DataOrdin>20032009</DataOrdin>
<Item NumarItem=1>
<Parte NumarParte=123>
<Descriere>
<p><b>caiet cu sina:</b><br />
Hartie alba,
garantie</p>
</Descriere>
<Pret>122</Pret>
</Parte>
<Cantitate>110</Cantitate>
</Item>
<Item NumarItem=2>
<Parte NumarParte=4516>
<Descriere>
<p><i>Separator:</i><br />
Aluminiup>
</Descriere>
<Pret>533</Pret>
</Parte>
<Cantitate>130</Cantitate>
</Item>
</OrdinVanzari>

Pe lng documentele centrate pe date, cu structura asemntoare cu documentul din


exemplul anterior, multe documente care conin i text adiional sunt centrate pe date. Spre
exemplu, s considerm o pagin web care conine informaii despre o carte. Dei pagina
conine n mare parte text, structura acelui text este regulat, i o parte din acel text este
comun tuturor paginilor care descriu cri, fiecare poriune de text specific avnd
dimensiuni limitate. Astfel pagina ar putea fi construit dintr-un document XML simplu,
centrat pe date care conine informaii despre o singur carte i este obinut dintr-o baz de
date i un stylesheet XSL care adaug textul care leag informaiile din XML. n general
orice site web care construiete documente HTML dinamic prin completarea unui template
cu informaii dintr-o baz de date poate fi nlocuit cu mai multe documente XML centrate
pe date i unul sau mai multe stylesheet-uri XSL.
4.5Date, documente i baze de date

De obicei, datele sunt stocate ntr-o baz de date tradiional cum sunt cele
relaionale sau orientate-obiect. Documentele sunt stocate ntr-o baz de date nativ
XML (o baz de date destinat stocrii XML) sau un sistem de gestionare a
coninuturilor (content management system) o aplicaie destinat administrrii
documentelor i construit peste o baz de date nativ XML.
Totui, aceste reguli nu sunt stricte. Datele, n special datele semistructurate, pot fi
stocate n baze de date native XML i documentele pot fi stocate n baze de date
tradiionale, atunci cnd nu sunt necesare foarte multe caracteristici specifice XML. n
plus, graniele dintre bazele de date tradiionale i cele native XML devin din ce n ce mai
neclare, deoarece la bazele de date tradiionale se adaug facilitai native XML i bazele
de date native XML suport stocarea fragmentelor de documente n baze de date, de obicei
relaionale, externe.
Pentru transferarea datelor ntre documente XML i o baz de date, este necesar
maparea schemei documentului XML (DTD, Scheme XML, RELAX NG, etc.) pe schema
bazei de date. Software-ul pentru transferul de date este construit peste aceast mapare.
Software-ul poate folosi un limbaj de interogare XML (cum ar fi XPath, XQuery) sau
poate transfera direct date conform cu maparea (echivalentul n XML al interogrii
SELECT * FROM Tabel).
n al doilea caz, structura documentului i structura necesar pentru mapare trebuie
s fie identice. Deoarece acest lucru se ntmpl destul de rar, produsele care folosesc
aceast strategie sunt adesea folosite mpreun cu XSLT. Astfel, nainte de transferarea
datelor n baza de date, documentul este nti adus la structura necesar maprii i apoi
datele sunt transferate. Similar, dup transferarea datelor din baza de date, documentul
obinut este adus la structura folosit de ctre aplicaie.

Maprile ntre schemele documentelor i schemele bazelor de date sunt efectuate


pe tipurile elementelor, atribute, i text. Aproape ntotdeauna, se omit structurile fizice
(cum ar fi entitile i informaia codificat) i unele structuri logice (cum ar fi
instruciunile de procesare, comentariile). Aceste omiteri nu au o influen prea mare,
deoarece baza de date i aplicaia sunt interesate numai de datele din documentul XML.

urmtor.
<bazadedate>
<tabela>
<linie>
<coloana1>...</coloana1>
<coloana2>...</coloana2>
...
</linie>
<linie>
...
</linie>
...
</tabela>
<tabela>
...
</tabela>
...
</bazadedate>

Maparea, bazat pe tabele, este folosit de multe produse care efectueaz transferul de date
ntre un document XML i o baz de date relaional. Aceasta modeleaz un document
XML ca o singur tabel sau ca un set de tabele. Structura documentului XML este artat
n exemplul

n funcie de software datele din coloane pot fi stocate ca elemente descendente sau ca
atribute. n plus, produsele care folosesc mapri bazate pe tabele de multe ori includ
metadate fie la nceputul documentului fie ca atribute asociate fiecrui element din tabel
sau coloan. Maparea, bazat pe tabele, este utilizat pentru serializarea datelor
relaionale, ca n cazul transferrii datelor ntre dou baze de date relaionale. Dezavantajul
acestei mapri este c nu poate fi folosit pentru un document XML care nu respect
formatul din exemplu. Instanierea obiectelor din model depinde de produsul folosit. Unele
produse dau posibilitatea generrii claselor n model i apoi, folosirea obiectelor din aceste
clase n aplicaii. n cazul folosirii acestor produse, datele sunt transferate ntre documentul
XML i aceste obiecte, i ntre aceste obiecte i baza de date. Alte produse folosesc aceste
obiecte numai pentru a vizualiza maparea i transferul de date direct ntre documentul
XML i baza de date.
Modul n care maparea obiectual-relaional este suportat variaz de la produs la
produs. De exemplu:
toate produsele suport maparea tipurilor complexe de elemente pe clase i a
tipurilor simple de elemente i atribute pe proprieti.
toate produsele dau posibilitatea desemnrii unui element rdcin care nu este
mapat pe modelul obiect sau pe baza de date. Acest element este folositor atunci
cnd se dorete stocarea obiectelor cu mai multe nivele n acelai document XML.
majoritatea produselor ofer posibilitatea specificrii dac proprietile sunt mapate
pe atribute sau pe elemente descendente n documentul XML. Unele produse permit
combinarea atributelor cu elementele descendente; altele cer folosirea numai a
elementelor descendente sau a atributelor.
majoritatea produselor permit folosirea numelor diferite n documentul XML i baza
de date, dar sunt anumite produse care necesit folosirea acelorai nume att n
documentul XML ct i n baza de date.
majoritatea produselor permit specificarea ordinii n care elementele descendente
apar n printele lor, dar care face imposibil construirea mai multor modele pentru
coninut. Din fericire, modelele pentru coninut suportate sunt suficiente pentru
majoritatea documentelor centrate pe date (ordinea este important numai dac se
face validarea documentului).
multe produse transfer date direct conform cu modelul pe care sunt construite.

O schema XML se genereaz dintr-o schem relaional astfel:


pentru fiecare tabel se genereaz un tip de element
pentru fiecare coloan care nu este cheie n acea tabel, dar i pentru coloanele
chei primare, se adaug la model un atribut la tipul elementului sau un element
descendent ce conine numai PCDATA.

La fiecare tabel pentru care cheia primar este exportat, se adaug un element
descendent la model i se proceseaz tabela recursiv.

Pentru fiecare cheie strina, se adaug un element descendent la model i se proceseaz


tabela cu cheie strin recursiv. Exist cteva dezavantaje la aceste procedee. Multe dintre
acestea se pot corecta uor de ctre programator, cum ar fi coliziuni de nume i
specificarea lungimilor i tipurilor de date ale coloanelor. DTD-urile nu conin informaii
despre tipurile de date, deci nu este posibil cunoaterea tipurilor de date care ar trebui
folosite n baza de date. Tipurile de date i lungimile pot fi prevzute dintr-o schem
XML.
O problem mai important este aceea c modelul de date folosit de documentul
XML este adesea diferit i de obicei mai complex dect cel mai eficient model pentru
stocarea datelor n baza de date. De exemplu, se consider urmtorul fragment XML:

<Client>
<Nume>ABC </Nume>
<Adresa>
<Strada>Calea Vacaresti.</Strada>
<Sector>1</Sector>
<Tara>Romania</Tara>
<CodPostal>0040</CodPostal>
</Adresa>
</Client>

Procedura pentru generarea unei scheme relaionale dintr-o schem XML ar crea
dou tabele: una pentru clieni i una pentru adrese. Totui, n majoritatea cazurilor, ar fi
mai bine s se rein adresa n tabela de clieni, i nu ntr-o tabel separat.
Elementul <Adresa> este un bun exemplu pentru un element wrapper. Elementele
wrapper sunt n general folosite din dou motive. n primul rnd, ele ofer structuri
adiionale ceea ce face documentul mai uor de neles. n al doilea rnd, ele sunt de obicei
folosite ca o form de redactare a datelor. De exemplu, elementul <Adresa> ar putea fi
trimis la o rutin care transform toate adresele n obiecte Adresa, indiferent unde apar
acestea.
Daca elementele wrapper sunt folositoare n XML, n general ele cauzeaz probleme
atunci cnd sunt mapate la baza de date dac acestea se gsesc sub forma extra-

structurilor. Din aceast cauz, ele ar trebui eliminate din schema XML naintea generrii
schemei relaionale. Din moment ce este puin probabil c modificarea schemei XML ar
trebui s fie permanent, acest lucru duce la o neconcordan ntre documentul existent i
documentele presupuse de ctre soft-ul de transfer de date, din moment ce elementele
wrapper nu sunt incluse n mapare. Acest lucru poate fi rezolvat prin transformarea
documentelor la rulare cu XSLT: elementele wrapper sunt eliminate naintea transferrii
datelor n baza de date i sunt inserate dup transferul datelor din baza de date.
Cu toate aceste dezavantaje, procedurile de mai sus ofer n continuare un punct de
pornire folositor pentru generarea schemelor XML din scheme relaionale i invers, n
special n sisteme mari.
Pentru stocarea documentelor XML exist dou strategii de baz: stocarea lor n sistemul
de fiiere sau ca un BLOB ntr-o baz de date relaional i acceptarea funcionalitilor
XML limitate, sau stocarea lor ntr-o baz de date nativ XML.
Dac se lucreaz cu un set simplu de documente, cum ar fi un set mic de documentaie,
cea mai uoara cale de stocare este n sistemul de fiiere. Se pot folosi instrumente cum ar
fi grep pentru interogarea lor, i sed pentru modificarea lor. Cutrile complete de
text n documentele XML sunt inexacte, pentru c ele nu pot distinge marcajul de text i
nu pot nelege folosirea entitilor. Totui, ntr-un sistem mic, aceste inexactiti ar putea
fi acceptabile. Dac se dorete un simplu control al tranzaciilor, documentele pot fi
ntreinute cu o versiune de control a sistemului cum ar fi CVS sau RCS.
(a)
(b) 4.6 Stocarea documentelor n BLOB-uri
O opiune puin mai sofisticat este stocarea documentelor ca BLOB-uri ntr-o baz de
date relaional. Aceast modalitate ofer un numr de avantaje a bazelor de date:
controlul tranzaciilor, securitate, acces multiuser. n plus, multe baze de date au
instrumente pentru cutri de text i pot face cutri complete de text, cutri
aproximative, cutri sinonime i cutri fuzzy. Unele dintre aceste instrumente sunt
construite pentru a recunoate XML, ceea ce va elimina problemele care apar la cutrile
documentelor XML ca simplu text.
Atunci cnd se stocheaz documente XML ca BLOB-uri, se pot implementa uor
indexri simple care recunosc XML, chiar dac baza de date nu poate indexa XML. O
modalitate de a face acest lucru este crearea a dou tabele, o tabel index i o tabel
document. Tabela document conine o cheie primar i o coloan BLOB n care este
reinut documentul. Tabela index conine o coloan n care se gsete valoarea ce va fi
indexat i o cheie strin care duce la cheia primar a tabelei document.

Atunci cnd documentul este stocat n baza de date, el este cutat pentru toate
instanele elementului sau atributului care este indexat. Fiecare instana este stocat n
tabela index, mpreuna cu cheia primara a documentului. Coloana de valori este apoi
indexat, i permite unei aplicaii s efectueze o cutare rapid a unei anumite valori a
unui element sau atribut i s recupereze documentul corespunztor.

De exemplu, se consider un set de documente cu urmtorul DTD i se dorete


construirea unui index de autori:
<!ELEMENT Brosura (Titlu, Autor, Continut)>
<!ELEMENT Titlu (#PCDATA)>
<!ELEMENT Autor (#PCDATA)>
<!ELEMENT Continut (%Inline;)> <!-- Inline entity from XHTML -->
Acestea ar putea fi stocate n urmtoarele tabele:
Autori
Brosuri
---------------------- --------Autor VARCHAR(50) BrosurID INTEGER
BrosuraID INTEGER
Brosura LONGVARCHAR
Cnd se insereaz o brour n baza de date, aplicaia insereaz broura n tabela Brouri,
apoi caut elementele <Autor>, reinnd valorile acestora i ID-ul brourii din tabela
Autori. Aplicaia poate recupera brourile n funcie de autor cu o simpl fraza SELECT.
De exemplu, pentru a recupera toate brourile scrise de autorul ION, aplicaia execut
urmtoarea interogare:

SELECT Brosura
FROM Brosuri
WHERE BrosuraID IN (SELECT BrosuraID FROM Autori WHERE Autor= 'ION')

Unele baze de date native XML pot include date aflate la distan n documente stocate n
baza de date.

De obicei, aceste date sunt recuperate dintr-o baz de date relaional cu ODBC, OLE
DB, sau JDBC i sunt modelate folosind maparea bazat pe tabele sau maparea
relaional-obiectual. Daca aceste date sunt live, adic dac actualizrile
documentului din baza de date nativ XML sunt reflectate n baza de date aflat la
distan depinde de baza de date nativ XML. n viitor, majoritatea bazelor de date
native XML vor suporta date live aflate la distan.
(c) Sisteme de management ale coninuturilor
Sistemele de management ale coninuturilor sunt un alt tip specializat de baze de date
native XML. Acestea sunt proiectate pentru operarea cu documente scrise de oameni, cum
ar fi manualele de utilizare, i sunt construite peste baze de date native XML. Baza de
date, este n general, ascuns de utilizator n spatele unui front end care ofer
caracteristici, precum:

control al versiunilor i al accesului;


motoare de cutare;
editoare XML/SGML;
motoare de publicare pe hrtie, CD sau pe Web;
separarea coninuturilor i a stilurilor;
extinderea n scripturi i programare;
integrarea datelor din baza de date.

Termenul de sistem de management al coninuturilor, spre deosebire de sistem de


management al documentelor, reflect faptul c asemenea sisteme permit, n general,
mprirea documentelor n fragmente cu coninut discret, cum ar fi exemple, proceduri,
capitole, dar i metadate cum ar fi numele autorilor, datele reviziilor, i numerele
documentelor, dect s opereze cu fiecare document ca un ntreg. Nu numai c, astfel se
simplific coordonarea lucrului mai multor scriitori la acelai document, dar permite i
asamblarea unor documente noi din componente care exist deja.

Ce este RSS?

Feed-urile RSS sunt de obicei folosite pentru a oferi coninut sau poriuni de coninut
(articole, mesaje, tiri, anunuri, etc) ntr-un format standard, care poate fi preluat de
aplicaii specializate (gen browsere, editoare de tiri, roboi de cutare, etc) i afiate apoi
destinatarului. Dect s verificm n fiecare or ce a mai aprut nou pe paginile preferate,

folosii o aplicaie care va afia noutile direct cnd apar. Un fiier RSS este scris n metalimbajul de marcare XML (eXtensible Markup Language), extensia fiierului este .rss sau
.xml (dar poate fi i .html sau .php, dar atunci nu este nestandard) iar tipul MIME al
fiierului trebuie s fie application/rss+xml. Pentru a introduce un fiier RSS n paginile
unui site trebuie specificat n partea de HEAD a documentului web urmtoarea linie,

<link rel="alternate" type="application/rss+xml" title="RSS"

unde pentru href trebuie specificat calea ctre fiierul RSS. Astfel spunem browserului sau
aplicaiei (client) de unde s citesc informaiile.Se poate face referire la un feed RSS i
printr-un link direct (de obicei se folosete o poz standard pentru RSS) iar n acest caz
vizitatorul este invitat s dea click pe acea imagine pentru a prelua feed-urile oferite de
acea pagin web. n interiorul unui feed-RSS se gsesc itemuri (obiecte). Orice fiier RSS
trebuie s conin cel puin un item. Item-urile sunt n general paginile web care dorim s
le dm ctre ali vizitatori. De exemplu, dorii s informm cititorii de apariia unui nou
articol pe site. Informaia despre acea pagin va forma un item. Pentru a introduce un item
n fiierul RSS va trebui s completm elementele: Titlul- Descrierea- LinkTitlul. Fiierele
XML utilizeaz taguri pentru a specifica titlul, descrierea i linkul.

Exemplu pentru descrierea unui item:


<item>
<title>Titlul articol1</title>
<description>Descrierea articolului 1 </description>
<link>http://www.legatura_catre_pagina_articolului1.ro</lin
k>
</item>
<item>
<title>Titlu2 articol </title>
<description> Descrierea articolului 2 </description>
<link>http:/www.legatura_catre_pagina_articolului2.ro
</link>
</item>

Deci, un feed-RSS este format dintr-o serie de iteme, iar acestea sunt legate mpreun
pentru a crea un "Canal". Canalul apare la nceputul fiierului i la fel ca itemurile,
canalele utilizeaz titlul, descrierea i linkul pentru a descrie coninutul. De asemenea
trebuie s indicai ce tip de document este, introducnd pentru aceasta tagurile pentru
document de tip XML i RSS. Sfritul fiierului va arta ca n exemplul urmtor:

<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>Titlul canalului </title>
<description>Explicatia</description>
<link>http://www.legatura_catre_pagina_articolului</link>
<item>
<title>Primul titlu</title>
<description>Descriere</description>
<link>http://www.legatura_catre_pagina_articolului</link>
</item><item>
<title>Titlul 2 </title>
<description>Descrierea</description>
<link>http://www.legatura_catre_pagina_articolului</link>
</item></channel>
</rss>

Tema de casa.
-

Creai un document XML cu structur minimal, pornind de la secvena de cod


(X)HTML data.
Creai o schem n care s reglementai scrierea unui document XML care s
nregistreze informaii despre clienii unei firme.
Creai o schem n care s reglementai scrierea unui document XML, care s
nregistreze informaii despre conturile de useri i calculatoare dintr-o reea de
calculatoare.

STUDIU INDIVIDUAL.
Dezvoltarea si apelarea servleturilor
Un servlet este un cod de program Java care poate fi accesat printr-o interfa standard ntr-un
serviciu de reea, asemenea programelor CGI aflate pe un site Web. Servleturile permit unui serviciu de
reea, cum ar fi un server Web sau un server Ftp, s fie extins dinamic pentru a furniza noi faciliti.
Unul din scopurile uzuale n care sunt folosite servleturile este de a crea o punte ntre un browser
Web i o baz de date ncorporat; browserul Web se conecteaz la un server Web, care execut un
servlet care se conecteaz la baza de date i execut cererea browserului. Serverul Web nu trebuie s aib
suport intern pentru accesul la baza de date; n schimb el poate fi dinamic extins cu servleturi care vor
executa aceste funcii. De fapt, servleturile sunt un mecanism potrivit pentru a implementa aproape orice
serviciu de acces n reea.
Servleturile au mecanism curat pentru implemetarea unor funcii variate. Servleturile pot fi folosite n
locul tradiionalelor aplicaii CGI, dar binenteles cu mbuntirile aduse de limbajul de programare
Java. Servleturile ntrec tradiionalul CGI, prin colaborarea ntre aplicaii i prin mbuntirea
perfomanelor. Servleturile pot de asemenea s fie folosite pentru a genera dinamic pagini HTML.
API-ul servlet-urilor
Toate servleturile trebuie s implementeze interfaa Servlet. Aceast interfa descrie mecanismul
exact prin care serverul reea va interaciona cu servleturile, incluznd iniializrile, finalizarea i
rspunsul procesului.
Detalii despre rspunsul fiecrui client sunt date de servlet prin intermediul interfeei
ServletRequest (figura 1). Aceast interfa descrie proprietile generale ale cererii care a fost fcut
ctre servlet. Servletul rezolv cererea i apoi rspunde clientului prin intermediul interfeei
ServletResponse. Aceast interfa are un mecanism pentru ca servletul s seteze tipurile de date pentru
rspuns i s scrie n fiierul de ieire acest rspuns.

Figura1. Model de servlet cerere/rspuns


Ciclul de via al servlet-ului
Servletul API specificat definete ciclul de via al servletului. Ciclul de via ncepe cnd un
servlet este iniializat, dup care cererea este prelucrat, i se termin atunci cnd servletul este distrus. n
general, un servlet este creat o singur dat, prima dat cnd clientul o cere. nainte ca aceast prim
cerere s fie preluat, servletul este automat iniializat de serviciul de reea cu diferii parametrii
predefinii. Cnd serviciul de reea decide s dezinstaleze servletul, este apelat un destructor, astfel nct
servletul s elibereze resursele pe care le-a ocupat (figura2).

Figura2. Ciclul de via al servlet-ului


Parametrii Servlet-urilor
Sunt dou mecanisme importante pentru a transmite informaiile de configurare ntr-un
servlet. Parametrii de iniializare sunt transmii servletului atunci cnd acesta este ncrcat prima
dat; ei sunt specificai ntr-o configuraie suplimentar, separat de cea a servletului. Aceti
parametrii sunt folosii pentru configurarea de informaii generale, care se aplic tuturor cererilor.
Ei sunt de obicei configurai static de instrumentul de admistrare grafic, altfel pentru servleturile
SSI pot de asemenea s fie declarate ntr-un tag servlet in-line. Depiznd de metoda folosit pentru
a invoca servletul, parametrii cerui pot fi de asemenea specificai ntr-o cerere. Dac parametrii
sunt dai n timpul execuiei, spre deosebire de parametrii dai n momentul iniializrii, pot fi
folosii pentru furniza informaii particulare unei anumite cereri.
Din momentul n care serverele creeaz o instan a unui servlet pentru a prelua cereri distincte i
uneori concurente, programatorul trebuie s se concentreze asupra siguranei firelelor de execuie pentru
ca tehnicile de sincronizare standard s fie folosite ca s se asigure c servletul preia cererile n siguran.
Toate potenialele accesri concurente ale unui servlet vor face apelri concurente ctre metoda service(
). Blocurile de cod din aceast metod ar trebui s nu fie executate concurent, ele ar trebui sincronizate
cu lactele respective.
Servlet Beans
Servlet beans sunt servleturi adugate la specificaiile JavaBeans. Un servlet bean are mai multe
avantaje fa de servleturile standard. n primul rnd, un servlet bean poate fi distribuit ntr-un fisier JAR
care conine toate clasele i resursele servletului. Fiierul servlet JAR este instalat deobicei n
subdirectorul servletbeans al serverului. Un al doilea avantaj este c serverul gazd poate folosi
introspecia pentru a accesa proprietile servletului n stilul JavaBean. Acest lucru permite ca servletul s
primeasc informaii noi fr s fie rencrcat. Serverele, cum ar fi Java Web Server, permit administrarea
grafic a proprietilor servlet bean prin intermediul acestui mecanism. Alt avantaj al servleturilor bean
este c serverul gazd poate s le serializeze automat. Odat ce o proprietate a fost modificat, noul bean
poate fi automat serializat astfel nct schimbarea s fie efectuat. Urmtoarea dat cnd server-ul va
ncrca servletul, el poate fi ncrcat din fiierul .ser n loc s-l ncarce din fiierul original JAR.
Aciuni i componente JavaBeans
Aciunile sunt tag-uri JSP predefinite care folosesc varianta XML. Spaiul de nume utilizat este
http://java.sun.com/JSP/Page i de regul se utilizeaz prefixul jsp.
Componente JavaBeans
Java, prin intermediul componentelor JavaBeans, ofer posibilitatea utilizrii acestora de ctre
instrumente de editare a aplicaiilor fr ca programatorul s intervin direct n codul acestora. Este
oferit i facilitatea de reflexie, prin care putem determina atributele i metodele unei clase.
ns n cazul aplicaiilor Web nu avem nevoie de toate facilitile i restriciile dictate de JavaBeans.
Cele mai importante lucruri pe care trebuie s le cunoatem despre componentele JavaBeans, n contextul
aplicaiilor Web, sunt:

Constructor fr parametri. Dintre toi constructorii clasei, trebuie s existe unul fr


parametri sau s nu definim niciunul, caz n care va fi creat automat constructorul implicit.
Nici un membru nestatic nu va fi public. Atributele nestatice vor fi declarate protected sau
private. Eventual se poate utiliza modificatorul de acces implicit (package). Pentru modificarea valorilor
se vor utiliza metode care s efectueze i validri asupra datelor (de exemplu, atributul vrst nu poate
avea o valoare negativ).
Utilizarea de metode setter i getter pentru accesarea membrilor nestatici. De exemplu,
dac avem atributul vrst de tip int, pentru modificarea valorii vom avea o metod cu prototipul void set
varsta int varstaNoua, iar pentru obinerea valorii, int get Varsta(). Pentru obinerea valorilor atributelor
de tip boolean se vor utiliza metode cu prefixul is, de exemplu, boolean is Batran() pentru atributul
batran.
Pentru a utiliza o component JavaBeans n aplicaiile Web vom utiliza aciunea
jsp: useBean. Aceasta posed atributele din tabelul urmator:
Atribut
Descriere
Stabilete un identificator pentru a putea fi referit ulterior. Se va crea o
Id
variabil cu acest nume.
Scope

Stabilete domeniul de vizibilitate pentru componente. Valorile posibile


sunt page, request, session i application. Implicit este page.

Class
beanName

Numele complet al clasei (inclusiv numele pachetului).


Numele componentei JavaBeans.

Type

Tipul variabilei care va fi creat. Poate coincide cu numele clasei (dat de


atributul class sau beanName), poate fi numele unei superclase a acesteia
sau numele unei interfee implementate.

n cazul n care o component cu acelai identificator exist deja n domeniul de vizibilitate


specificat, se va utiliza respectiva component i nu se va mai crea una nou.
Nu vom utiliza niciodat simultan atributele class i beanName. Acestea se exclud unul pe cellalt.
Declararea componentei: <jsp:useBean id="categ" class="ro.mag.Categorie" />
este similar cu: <% ro.mag.Categorie categ = new ro.mag.Categorie(); %>
Pentru setare, avem la dispoziie aciunea jsp:setProperty. Aceasta prezint atributele din tabelul de
mai jos.
Atribut
name
property
param
value

Descriere
Numele componentei asupra creia se opereaz.
Numele proprietii (datei membre) pentru care se dorete
actualizarea valorii.
Valoarea datei membre va fi dat ca parametru paginii JSP cu
numele specificat de acest atribut.
Indic valoarea care va fi atribuit datei membre specificate.

Componentele JavaBeans pot fi accesate i n expresiile cuprinse ntre $ { i }. Acestea vor fi


evaluate n momentul execuiei i se vor nlocui cu valorile rezultate.
<h3>$ {categ.denumire} </h3> <p style="color: ${opiuni.culoare}">
Bine ai venit ${param.utilizator}!</p>
Expresiile de acest tip se pot utiliza i n interiorul tag-urilor, dar i la valoarea atributelor.
Interfaa Servlet
Interfaa Servlet defineste modurile standard prin care un server de reea poate accesa un servlet.
Toate servleturile funcioneaz sub paradigma cerere/raspuns; totui, des, servleturile menin date
individuale despre clieni deci nu sunt chiar aa de statice cum sugereaz interfaa de baz.

Dei toate servleturile trebuie numaidect s implementeze aceast interfa, multe vor profita de
facilitile date de mai multe implementri specifice a acestei clase cum ar fi GenericServlet ori
HttpServlet, i astfel vor respecta API-ul acestor clase specifice.
Metode
Urmtoarele metode definesc interfaa de baz a unui servlet:
void init(ServletConfig config) throws ServletException . Aceast metod d unui servlet o ans
pentru a executa orice operaii de startup cerute, nainte de a servi cererea. Exemple pot fi alocarea
memoriei, stabilirea conexiunii prin reea, si altele. Aceast metod este apelat o dat i numai o dat i
este terminat atunci cnd prima cerere este preluat. Cererile care sunt primite nainte ca metoda init() s
fie terminat vor fi blocate pn cnd se va termina cu aceast metod.
Parametrii ServletConfig conin informaii de iniializare pentru servlet. Chiar dac nu sunt folosii,
acest parametru ar trebui inut pentru a fi returnat de metoda getServletConfig(). Multe implementri
standard a interfeei Servlet, cum ar fi GenericServlet, au grij de acest lucru automat.
void service (ServletRequest request, ServletResponse) throws ServletException,
IOException. Metoda service() este apelat de ctre serviciul de reea care gzduiete servletul de
fiecare dat cnd clientul face o cerere ctre servlet. Servletul poate citi din cerere date i parametrii prin
intermediul parametrului de tip ServletRequest, request, i ar trebui s trimit rspunsul su napoi prin
intermediul parametrului response de tip ServletResponse.
void destroy(). La un moment dat dup ce un servlet a terminat de servit cererea, gazda poate
decide s descarce servletul. Pentru acest lucru se apeleaz metoda destroy().
Cnd un servlet este distrus, el trebuie s elibereze toate resursele pe care le deine i s salveze
orice informaie care trebuie s fie inut permanent. Multe servleturi menin conexiunile deschise cu
resurse cum ar fi baze de date, servere RMI, ori fiiere. Aceste resurse ar trebuie nchise i eliberate cnd
metoda destroy() este apelat.
ServletConfig getServletConfig(). Aceast metod trebuie s ntoarc un obiect ServletConfig care
ar fi trebuit salvat de metoda init().
String getServletInfo(). Aceast metod ar trebui s returneze informaii generale despre
servleturi cum ar fi autor, versiune, si copyright.
Interfaa SingleThreadModel
Implicit, o singur instan a unui servlet poate fi apelat pentru a prelua cereri multiple
concureniale. Asta nseamn c n general, autorii de servleturi trebuie s aib grij de sigurana firelor
de execuie. Dac se implementeaz interfaa SingleThreadModel, API-ul servletului garanteaz c dou
fire de execuie nu vor executa concurenial metoda service() n aceai instanta a unui servlet. Aceast
interfa nu are metode.
Intefaa ServletConfig
Aceast interfa este folosit de un serviciu de reea pentru a transmite informaii de configurare
unui servlet atunci cnd este iniializat. ServletConfig este transmis ntr-un servlet n metoda init() i
poate fi accesat n timpul unei cereri cu metoda getServletConfig().
Interfaa ServletRequest
Interfaa ServletRequest descrie informaiile cerute care sunt transmise ctre metoda service().
O cerere este alctuit formal din trei pri: Cererea URL, care se identific cu obiectul cerut;
parametrii cererii, care au detalii despre cerere; i corpul cererii, care este alctuit din datele specifice
aplicaiei cererii.

Interfaa ServletResponse
Interfaa ServletResponse descrie cum un rspuns poate fi ntors clientului. Toate rspunsurile sunt
de tip MIME; un tip MIME este asociat cu un volum de date. Acest tip indic cum vor trebui interpretate
datele de ctre client.
Interfaa ServletContext
Interfaa definete un set de metode pe care un servlet le poate folosi pentru a comunica cu
containerul su. Prin aceast interfa, servletul poate nregistra evenimente importante i poate accesa
informaii specifice reelei de care aparine serverului.
Un context al unui servlet poate fi obinut prin apelarea metodei getServletContext() n configuraia
iniial a servletului.
void log(String message). Aceast metod nregistreaz un eveniment servlet ntr-un fiier de
nregistrari a servletului.
void log(Exception ex, String message). Aceasta este o metod folositoare pentru a nregistra
urma unei erori i mesajele de eroare n fiierul de nregistrri al servletului.
void log(String message, Throwable throwable). Aceasta este varianta din JSDK.
Enumeration getServletName(). Aceast metod ntoarce o enumeraie a numelor servleturilor
gzduite de server. n general nu trebuie folosit aceast metod.
Servlet getServlet(String name) throws ServletException. Aceast metod ntoarce servletul cu
respectivul nume, ori null dac nu este gsit. n general nu trebuie folosit aceast metod.
String getRealPath(String Path). Aceast metod transform o cale virtual folosind reguli
locale, i ntoarce calea fiierului dependent de platform.
String getMimeType(String file). Aceast metod ntoarce tipul MIME al fiierului specificat, ori
null dac nu este cunoscut.
String getServletInfo(). Aceast metod ntoarce informaii despre serverul care gzduiete
servletul, incluznd numele su, i numarul versiunii.
Object getAttribute(String name). Aceast metod ntoarce un nume, un atribut dependent de
server. Aceast metod poate fi folosit pentru ca s se obin servicii specifice serverului.
Clasa HttpServlet
Atunci cnd se scrie un servlet care va fi invocat printr-o cerere Http, se va extinde aproape
ntotdeauna clasa HttpServlet. Aceast clas implementeaz multe detalii folositoare de preluare a
cererilor Http, i are multe clase utilitare pentru primirea de cereri HTTP i pentru trimiterea rspunsurilor
HTTP formatate corespunztor.
Clasa HttpServlet este o subclas a clasei GenericServlet, i c are toate facilitile clasei respective.
Definirea metodelor HTTP
Cererea clientului HTTP poate fi de dou feluri : cerere simpl sau complet.
n general, programul trebuie s utilizeze cereri complete, n afara cazului n care se lucreaz cu
HTTP, versiunea 0.9. Singura metod care utilizeaz cererea simpl este GET, utilizat pentru a regsi o
resurs. Sintaxa este : GET URI <CR/LF>
n schimb, o cerere complet ncepe cu o linie de cerere, <CR/LF>, apoi informaia codificat sub
forma unui antet (optional), <CR/LF> i corpul entitii (optional). Linia de cerere are sintaxa :
Metoda Cerere-URI versiune-HTTP <CR/LF>
Diferena ntre o cerere simpl i una complet este prezent cmpului versiune HTTP i
posibilitatea de a specifica mai multe cereri HTTP (nu numai GET, ci i HEAD, POST, ...).
Metoda GET cere serverului Web s regseasc informaia identificat de URI. Serverul obine
resursa cerut de client utiliznd adresa resursei. Metoda GET devine GET condiional dac mesajul
cerere trimis de client include un cmp antet If-Modified-Since. O metod GET condiional cere ca

serverul s transfere resursa specificat numai dac a fost modificat de la data specificat n cmpul IfModified-Since. n cazul n care clientul a transferat deja obiectul i a ascuns entitatea GET condiional
reduce gradul de utilizare al reelei pentru c nu mai este nevoie de un transfer inutil.
Metoda HEAD este similar lui GET, cu excepia faptului c serverul nu returneaz un corp de
entitate n rspuns. Aplicaiile utilizeaz HEAD pentru a obine informaii (n special de antet) despre
resursa identificat de URI, fr a transfera corpul entitii. Informaia de antet (metainformatie) trebuie
s fie aceeai cu informaia trimis de server ca rspuns la o cerere cu metoda GET. Aplicaiile utilizeaz
metoda HEAD pentru a testa validitatea, accesibilitatea i modificrile legturilor hipertext.
Metoda POST cere serverului Web s utilizeze obiectul din cerere ca resurs identificat de URI n
linia de cerere. Deci clientul spune serverului Web aceasta este noua surs pe care o utilizai cu URI-ul
pe care vi l-am furnizat. n majoritatea cazurilor, POST creaz sau nlocuiete o resurs asociat cu URIul trimis cu metoda POST. Totui, un POST completat cu succes nu cere ca entitatea s fie resursa pe
serverul de origine (serverul care recepioneaz cererea complet) sau s fie accesibil pentru o viitoare
referin. Deci, e posibil ca aciunea realizat de metoda HTTP POST s nu furnizeze o resurs
identificabil prin URI. n acest caz, serverul va returna un cod de stare 200 (OK) sau 204 (fara continut),
depinznd de includerea (sau nu) n rspuns a unui obiect care s descrie rezultatul.
Dac un client creaz o resurs pe un server de origine, clientul trebuie s creeze un cod de stare
201 care conine un obiect (text, HTML, ...) care descrie starea cererii.
Toate cererile HTTP POST necesit un cmp Content Length valid. Un server HTTP trebuie s
corespund cu un cod de stare 400 (cerere eronata) dac nu poate determina lungimea coninutului
mesajului cerere.
Alte metode HTTP : CHECKIN, CHECKOUT, DELETE, LINK, PUT, SEARCH,
SHOWMETHOD, SPACEJUMP, TEXTSEARCH i UNLINK. Acestea sunt mai puin utilizate i nu
toate serverele permit aceste metode.
Pentru furnizorii de servicii Web care ofer servicii bazate pe aplicaii Web dinamice, aplicaia este
cheia afacerii i tehnologia folosit n serverul de aplicaie poate avea un impact major asupra rezultatelor
obinute n afacere.
Containerul Web este parte a unui server care gestioneaz servlets, Java Server Pages (JSP) pecum
i alte componente Web. Aceast tehnologie a containerului Web joac un rol vital n determinarea
performanelor si capacitii de adaptare a componentelor aplicaiei Web. Exist o legtur direct ntre
aceast tehnologie folosit de ctre dezvoltatori i performana i agilitatea aplicaiilor. Compania Sun
susine c serverul GlassFish este de departe mult mai extensibil, mai modular, mai uor de folosit i mai
adaptabil dect serverul de aplicaii Apache Tomcat oferind n acelai timp performane foarte bune. Cu
suport pentru clustering, mesaje, servicii enterprise, precum i alte caracteristici cheie care lipsesc n
Tomcat, i cu suportul companiei Sun i sprijinul unei mari i nfloritoare comuniti, GlassFish este o
alternativ superioar pentru cei care dezvolt aplicaii Web.
GlassFish este un server open source, dezvoltat de ctre Comunitatea GlassFish, care a fost lansat
de ctre compania Sun n anul 2005. n anul 2008 versiunea a doua a serverului (GlassFish v2) a atins
aproape 9 milioane de descrcri i 300.000 de nregistrri. Versiunea actual, GlassFish v3 Prelude,
ofer o arhitectur modular n mod implicit, care permite dezvoltarea aplicaiilor Web in mod rapid i cu
suport pentru limbaje dinamice. Este o platform excelent pentru implementarea aplicaiilor Web
susinut de Java sau de limbaje dinamice, cum ar fi JRuby.
GlassFish Enterprise Server v2 mpreun cu Java Enterprise Edition (EE) 5 adaug un plus de
calitate opiunilor disponibile pentru comunitatea open source ridicndu-se totodat la standardele impuse
de ctre compania Sun.
Tomcat a fost dezvoltat la Apache, de ctre un grup de dezvoltatori de la Sun i Jserv, iar codul
iniial a venit de la Sun. A devenit implementare de referin pentru primele versiuni de servlets i pentru
specificaii JSP. Tomcat a jucat un rol vital n nceputul dezvoltrii aplicaiilor de server oferite de Java.
A fost disponibil sub licen open source nc de la nceput i a contribuit la sporirea popularitii sale n
cadrul organizaiilor de tip Enterprise.
n general, aplicaiile care ruleaz pe Tomcat, vor rula neschimbate i pe GlassFish. Cu toate
acestea exist diferene importante care afecteaz n mod direct performanele, scalabilitatea i
productivitatea aplicaiilor.

La toate nivelurile, GlassFish este pur i simplu o opiune mult mai bun dect Tomcat att pentru
dezvoltatori ct i pentru companii:
GlassFish este o colectie de containere Java EE, nu doar un Container Web.
GlassFish este mult mai extensibil i mai modular dect Tomcat i dezvoltatorii pot profita mult
mai uor de capabilitile acestuia, cum ar fi: mesaje, clustering, failover, gestionare de sesiuni, EJB,
JMS, JSR, etc.

Model bilet examen


1. S se realizeze un script care contine un grup cu 2 butoane radio, care
schimb culorile textului din pagina, prin selectarea succesiva a acestora
(1 pct).
2. Realizati un fisier css care contine minim 3 stiluri, fiecare cu minim 3
proprietati diferite (1 pct);
3. Realizati un fisier html, care contine un formular cu 2 casete de text, 3
checkbox-uri, 2 grupuri de butoane radio si o lista de selectie. Prin
apasarea butonului de tip button cu value=afiseaza datele introduse,
datele preluate din formular vor fi afisate in caseta rezultat, care va fi
de tip textarea. Se vor utiliza si stilurile din fisierul definit la punctul 2
(3 pct).
4. Creai un fiier php care preia toate datele din formularul precedent, cu
ajutorul butonului submit si le adauga in tabela text din baza de date
aplicatie (2 pct).
5. Realizai un script care utilizeaza obiectele document, window i Date (2
pct).

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