Veb-Programiranje - Usmeni.v1.0 PDF

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 46

Veb-programiranje

skripta za usmeni ispit (v1.0)

Lazar Ljubenovi
lazar.ljubenovic.1995@gmail.com

2016-06-16
Zapisnik promena

v1.0 Inicijalna verzija. Sadri bar delimian odgovor na svako pitanje.


Datum: 2016-06-16.

Predloge, komentare i uoene greke (bilo u kucanju ili u informacijama) slati


na lazar.ljubenovic.1995@gmail.com.

2
Lista pitanja

Najea pitanja:

1. Veb-aplikacije. 22. JSON i XML.


2. Arhitektura veb-aplikacija. 23. JSON.
3. HTML, opte. Struktura strane. 24. AJAX.
4. HTML5 i HTML4. 25. CGI.
5. HTML5, semantiki elementi. 26. PHP, opte.
6. CSS, opte. 27. PHP, superglobalne promenljive.
7. CSS selektori. 28. Prenos podataka sa klijenta na ser-
8. JavaScript, opte. ver.
9. JS objekti. 29. PHP, klase i objekti.
10. DOM, definicija i najee funkcije 30. PHP, nasleivanje.
API-ja. 31. ORM alati.
11. Progresivno poboljanje. 32. Veb-servisi.
12. Tipovi dizajna strane. 33. RESTful servisi.
13. Responzivni dizajn. 34. SOAP servisi.
14. XML tehnologije. 35. RPC.
15. XML nejmspejs. 36. Java, opte.
16. DTD. 37. Java virtuelna maina.
17. DTD, konkretan primer. 38. Java biblioteke.
18. XML Schema. 39. Java Beans.
19. XPath. 40. JSP.
20. XML i HTML. 41. Java apleti.
21. XSL. 42. Model 2.

3
Odgovori

Frontend tehnologije
Pitanje 1 Veb-aplikacije.

Odgovor. Veb-aplikacija je aplikacija kojoj se pristupa preko veb-itaa


korienjem interneta ili intranet mree.
Veb-aplikacija je softverska aplikacija bazirana na klijent-server modelu kod
koje se klijent (ili korisniki interfejs) izvrava u veb-itau. Veb-aplikacije
su popularne zbog sveprisutnosti veb-itaa. Jednostavnost korienja veb-
itaa kao klijenta koji aurira i odrava veb-aplikaciju bez distribuiranja i
potencijalnog instaliranja softvera na velikom broju raunara, kao i kompati-
blnost meu platformama, predstavljaju kljuni razlog njihove popularnosti.
Neki esti primeri veb-aplikacija su veb-mejl, onlajn aukcije, viki, servisi za
razmenu trenutnih poruka, itd.
Optu razliku izmeu veb-sajta i bilo kog tipa veb-aplikacije nije mo-
gue precizno definisati. Veb-sajtovi za koje e se ee govoriti kao o veb-
aplikacijama su oni koji po funkcionalnost ili izgledu podseaju na desktop
softverske aplikacije ili mobilne aplikacije.
Jednostranine aplikacije (SPA, Single Page Applications) vie podse-
aju na aplikacije jer odbacuju tipinu veb-paradigmu navigacije kroz vie
razliih stranica preko razliitih URL-ova. Postoji vie frejmvorka, kao to
je Angular, koji se mogu koristiti da bi se bre razlive ovakve aplikacije.
Veb-aplikacije se najee organizuju u takozvane rangove (tier), i obino ih
ima tri: prezentacija, aplikacija i skladite, redom. Veb-ita je prvi rang
(prezentacija). Endin koji koristi neku veb-tehnologiju (npr. ASP, CGI,
Dart, Node.js, PHP, Pajton) je srednji rang (aplikaciona logika). Baza po-
dataka je trei rang (skladite). Veb-ita alje zahteve srednjem rangu, koji

4
Lazar Ljubenovi 5

ih servira tako to alje zahteve i naredbe bazi podataka i generie korisniki


interfejs.

Pitanje 2 Arhitektura veb-aplikacija.

Odgovor. MVC (Model View Controller) je softverski arhitekturni obrazac


koji se esto koristi za implementiranje korisnikih interfejsa; stoga pred-
stavlja popularan izbor za kreiranje arhitekture veb-aplikacija. Najoptije
reeno, MVC deli aplikacioni logiku na tri odvojena dela, promoviui modu-
larnost, jednostavnu meusobnu saradnju i mogunost ponovnog korienja.
Sem toga, aplikacije koje koriste ovaj model postaju fleksiblnije.
Moemo posmatrati aplikaciju za kupovinu. Ona moe biti vrlo jednostavna:
treba da sadri listu imena, kvantita i cene za svaki proizvod koji treba kupiti
ove nedelje.
Model definie ta aplikacija treba da sadri. Ako se stanje ovih podatka
promeni, onda model uglavnom treba da obavesti pogled (kako bi se prikazala
nastala promena), a ponekad kontroler (za sluaj da je potreba drugaija
logika da bi se kontrolisao pogled koji se aurira). U primeru aplikacije za
kupovinu, model bi odredio koje podatke sadri lista (proizvod, cena, itd) i
koje proizvode ve sadri.
Pogled definie kako se prikazuju podaci aplikacije i prima podatke koje
treba da prikae od modela. U primeru aplikacije za kupovinu, pogled bi
definisao kako se lista prezentuje koristinu.
Kontroler sadri logiku koja aurira model i/ili pogled kao odgovor na pro-
mene koje korisnik unosi u aplikaciju. Na primer, aplikacija za kupovina
bi imala polja za unos novih proizvoda i dugmad koja nam doputaju da
dodamo nove proizvode ili obriemo postojee. Ove akcije zahtevaju da se
model aurira. Zato se unos alje do kontrolera, koji zatim manipulie mo-
delom na odgovarajui nain, i zatim alje aurirane podatke nazad pogledu.
Pored toga, aplikacija moe pruati i mogunost jednostavnog auriranja po-
gleda u smislu drugaije prezentacije podataka. Na primer, listu proizvoda
za kupovinu treba sortirati po nekom drugom kriterijumu, kontroler moe
direktno da obavi ovu operaciju bez auriranja modela.
Kod veb-aplikacija, model podataka je najee sadran u nekoj bazi poda-
taka (to moe biti tradicionalna baza podataka kao to je MySQL, ili reenje
na klijentskoj strani kao to je IndexedDB). Kod koji kontrolie aplikaciju
je uglavnom napisan korienjem HTML-a i JavaScripta, dok je korisniki
interfejs (pogled) definisan HTML-om, CSS-om i moda JavaScriptom.
6 Lazar Ljubenovi

U ranim fazama razvoja veba, MVC arhitektura je najee bila implementi-


rana na strani servera, pri emu je klijent zahtevao auriranje podataka kori-
enjem formi ili putem linkova, a primao je aurirane podatke kao stranice
koje su se prikazivale u brauzeru. Meutim, u moderno doba, sve vie logike
se prebacuje na stranu klijenata zahvaljujui napretku skladita podataka
na klijenata. Pored toga, objekti tipa XMLHttpRequest doputaju auriranje
samo dela stranice.
Popularni veb frejmvorci kao to su AngularJS, Ember.js i Backbone imple-
mentiraju MVC arhitekturu, mada svaki na malo drugaiji nain.

Pitanje 3 Opte o HTML-u. Struktura stranice.

Odgovor. HTML (HyperText Markup Language) je standardni jezik za


obeleavanje koji se koristi za kreiranje veb-stranica. Uz CSS i JavaScript,
predstavlja temeljnu tehnologiju za izgradnju veb-stranica, kao i korisni-
kih interfejsa za mobilne i veb-aplikacije. Veb-itai itaju HTML fajlove
i renderuju ih, to ga ini jezikom za obeleavanje (markup), a ne pro-
gramskim jezikom. HTML semantiki opisuje strukturu veb-stranice, a pre
pojave CSS-a sadrao je i opis izgleda stranice.
Gradivni elementi HTML stranice su HTML elementi. Pomou njih je
mogue kreiranje strukturnih dokumenata obeleavanjem naslova, paragrafa,
listi, linkova, citata, itd. HTML elementi su omeeni tagovima, koji se piu u
uglasnim zagradama. Na primer, tekst primer je omeen parom tagova (tag
i anti-tag) na sledei nain: <p>primer</p> . Postoje i tagovi koji nemaju svoj
anti-tag, ve zatvaraju sami sebe, kao to je <img /> (slika) ili <input />
(polje za unos).
Primer minamalne HTML stranice dat je u nastavku.
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>Naslov</title>
5 </head>
6 <body>
7 <p>Hello world!</p>
8 </body>
9 </html>

Tekst izmeu <html> i </html> opisuje veb-stranicu, a tekst izmeu <body>


i </body> opisuje vidljivi deo stranice. Zaglavlje HTML dokumenta nalazi
se izmeu para tagova <head> i </head> i u njemu se izme ostalog moe
Lazar Ljubenovi 7

nai naslov stranice (u ovom primeru <title>Naslov</title> ).

Pitanje 4 HTML5 vs HTML4.

Odgovor.

Novi semantiki elementi: <header> , <footer> , <article> , <section> ,


<menu> , <figure> , <figcaption> , <audio> , <video> , <canvas> . Tu su
i <mathml> i <svg> elementi.

Izbaeni nesemantiki elementi: <frame> , <center> , <big> .

Izbaeni mnogi nesemantiki atributi, npr. bgcolor i marginleft na


body .

Favorizuje se korienje semantikih elemenata spram nesemantikih


kada za tim postoji potreba, npr. <strong> umesto <b> ; <emph> ume-
sto <i> ; ubaeni i drugi kao <code> , <mark> , itd.

Nova pravila za parsiranje. HTML4 namerno dozvoljava tzv. supu


tagova (npr. nekorektno <p>Ovo je <strong>tekst.</p></strong> ), a
brauzeri se staraju o tome da ga ipak prikau ispravno. Meutim, za
ovo nigde nisu bila jasno definisana pravila, pa je svaki tim koji razvija
novi veb-brauzer morao da pokree testove u starijim veb-itaima (po-
gotovo u IE), i da primeni tehniku obnutog inenjerstva kako bi imao
istu detekciju greaka. U suprotnom, mnoge stranice se ne bi prikazi-
vale ispravno u itau. Procenjuje se da je oko 90% veb-stranica bar u
neku ruku loe formatirano.

HTML5 pokuava da ovo traenje greka pretoi u kod kako bi svi itai
mogli da preuzmu ovaj standard i tako vie ne ulau vreme i novac u
konzistentnost prikaza stranica.

Parser vie ne ignorie zadnje blanko znake u id atributu vie nisu


uopte dozvoljeni; ali sada postoje manje restrikcije: jedini uslovi su
da mora da postoji bar jedan karakter i da ne smeju da postoje blanko
znaci. Dozvoljeni su i znaci kao #, ali se ne preporuuje njihovo ko-
rienje jer se onda oni moraju eskejpovati u CSS selektorima (#\#).
Takoe, u HTML4 id nije smeo da pone cifrom, ve iskljuivo velikim
ili malim slovom.

Prua mogunost za jednostavnijim DOCTYPE-om.


8 Lazar Ljubenovi

1 <!-- HTML4 -->


2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
3 "http://www.w3.org/TR/html4/strict.dtd">
4
5 <!-- HTML5 -->
6 <!DOCTYPE html>
Doktajp iz ranijih verzija HTML-a je bio dui jer je tada HTML bio
baziran na SGML-u1 i zato je morao da ima referencu na DTD.
Naime, HTML u verzijama HTML+, HTML 2.0, HTML 3.2 i HTML
4.01 je zvanino bio definisan kao SGML aplikacija. Meutim, ni-
kad nije bio implementiran tako; ne postoji objavljena aplikacija koja
HTML interpretira kao SGML aplikaciju. Razlog za ovo navodi i sama
HTML 4.01 specifikacija (odeljak B.3.3).
Od SGML sistema [...] se oekuje da prepoznaju odreeni
broj odlika koje nisu iroko podrane od strane HTML kori-
snikih agenata. Preporuujemo da autori izbegavaju njihovo
korienje.
HTML+, HTML 2.0, HTML 3.2 su pisani korienjem SGML sintak-
snih pravila. HTML 4 je imao dve sintakse: SGML (HTML 4.01) i
XML (XHTML 1.0).
S druge strane, HTML5 je apstraktni jezik. ini ga opis vokabulara koji
se moe pisati koristei dve razliite sintakse: html i XML. HTML 5
definie novu serijalizaciju koju prosto naziva html, koja namerno dosta
podsea na SGML iz ranijih verzija.
Drugim reima, HTML5, kao apstraktni jezik, ima dva parsera (odno-
sno dve serijalizacije): html i XML, koje redom imaju internet medija
tipove text/html i application/xhtml+xml.
1 <!-- text/html -->
2 <!DOCTYPE html>
3 <html lang="en">
4 <!-- ... -->
5 </html>

1 <!-- application/xhtml+xml -->


2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3 <!-- ... -->
4 </html>

1
SGML (Stanrd General Markup Language je ISO specifikacija napravljena radi de-
finisanja deklarativnih jezika za obeleavanje. Na vebu, HTML4, XHTML i XML su
popularni jezici bazirani na SGML-u.
Lazar Ljubenovi 9

Malo ljudi u praksi koristi XHTML. Ako se sadraj sauva kao internet
medija tip application/xhtml+xml, sem toga to nee raditi u starijim
verzijama Internet Explorera, i najmanja greka e kao posledicu imati
neprikazivanje stranice ak i u brauzerima koji podravaju XHTML.
Zato, ono to ponekad izgleda kao XHTML ( <br/> je XHTML, <br>
je html) se zapravo servira i interpretira kao HTML.

Pitanje 5 HTML5, semantiki elementi.

Odgovor. Semantiki elementi jasno opisuju svoje znaenje, kako veb-itau,


tako i programeru. Pored bolje itljivosti koda, vani su zbog pristupanosti
(npr. za audio-itae veb-stranica za slepe) i za SEO (optimizacija za veb-
pretraivae).
Dva najee koriena nesemantika taga su <div> i <span> .
HTML Document Division Element ( <div> ) je generiki kontejner za sa-
draj, koji nema posebno znaenje i ne predstavlja nita. Moe da se koristi
za grupisanje elemenata radi stilizovanja (koristei atribute id i class ), ili
za elemente koji dele zajednike atribute, kao to je lang . Treba se koristiti
samo kada nijedan drugi semantiki element ne odgovara svrsi.
HTML Document Span Element ( <span> ) je generiki kontejer koji se
prostire u okviru linije teksta (inlajn element), i ne predstavlja nita. Koristi
se kao i <div> , s tim to je <div> element na nivou bloka, dok je <span> na
nivou linije.
Prema MDN-u, semantiki elementi se dele na osnovne elemente, metapo-
datke, elemente za izdvajanje sadraja, elemente koji sadre tekst, inlajn
elemente, elemente za slike i druge multimedijalne sadraje, elemente za
ugraeni (embedd) sadraj, elemente za skripte, elemente za demarkaciju,
elemente za tabelarne podatke, elemente za forme, interaktivne elemente i
veb-komponente.

Osnovni elementi Jedini osnovni element koji svaka stranica mora da ima
da bi se mogla smatrati HTML stranicom jeste <html> . Ovaj element pred-
stavlja koren HTML dokumenta. Svi elementi moraju biti njegovi potomci.

Metapodaci o dokumentu Element <base> specificira osnovni URL koji


treba da koriste svi relativni URL-ovi iz dokumenta.
10 Lazar Ljubenovi

Element <head> daje opte informacije o dokumentu, ukljuujui naslov i


linkove do skirpti i stajlitova.
Element <link> specificira vezu izmeu trenutnog dokumenta i eksternog
izvora; koristi se najee za povezivanje sa stajlitovima.
Element <style> koristi se za specifikaciju stilova koje treba primeniti na
trenutni dokument. Podrazumevano se radi o CSS jeziku.
Element <title> govori o naslovu stranice koja e biti prikazana u veb-
itau.
Element <meta> koristi se za podatke koji se ne mogu svrstati u gorenavedene
metapodatke.

Izdvajanje sadraja Ovi elementi organizuju dokument u logike celine.


Pomou njih se brzo kreira opta kontura stranice.
Element <article> predstavlja celinu koja moe postojati sama za sebe i
moe se ponovo koristiti u drugom kontekstu. To moe biti poruka na fo-
rumu, lanak u asopisu, post na blogu, objekat, ili bilo koji drugi nezavistan
sadraj. Svaki <article> treba da bude identifikovan, obino dodavnjem ele-
menata za naslov (npr. <h1> ) kao deteta artikla.
Element <section> predstavlja generiku sekciju dokumenta, npr. tematsko
grupisanje sadraja, najee sa naslovom. Kao i <article> , svaki <section>
treba da bude identifikovan.
Elementi od <h1> do <h6> predstavljaju est nivoa naslova u dokumentu, pri
emu manji redni broj oznaava veu vanost. Ovaj element kratko opisuje
temu sekcije koju predstavlja. Ove informacije agenti mogu da koriste da bi
automatski napravili sadraj. Svaki <section> ima svoju hijerarhiju naslova,
tako da sledei iseak HTML stranice predstavlja hijerarhiju u kome je Opet
naslov podnaslov naslova Naslov, iako su oba sa istim rednim brojem.
1 <section>
2 <h1>Naslov</h1>
3 <section>
4 <h1>Opet naslov</h1>
5 </section>
6 </section>

Element <header> predstavlja grupu sadraja uvodnog ili navigacionog ka-


raktera. Moe sadrati nasove, ali i druge elemente koji predstavljaju npr.
logo, formu za pretragu, itd.
Lazar Ljubenovi 11

Element <footer> predstavlja futer za najbliu roditeljsku sekciju (ili za


ceo dokument, ako je najblia sekcija predstavljena <body> tagom). Futer
najee sadri podatke o autoru sekcije, informacije o zatiti autorskih prava
i slino.

Element <nav> koristi se za deo stranice koji sadri linkove do drugih stra-
nica ili do raznih delova iste stranice. Dakle, to je sekcija sa navigacionim
linkovima.

Element <address> dostavlja kontakt-inforamcije u vezi sa najbliim <article>


roditeljem. Ako takav ne postoji, podaci se tiu celog dokumenta.

Tekst sadraj Ovi elementi se koriste radi organizacije blokova ili sekcija.
Vani su zbog pristupanosti i SEO jer identifikuju znaaj sadraja koji se u
njima sadri.

Element <ul> predstavlja neureenu listu stavki, odnosno kolekciju stavki


koje nisu ni na koji nain numerisani. Slino, <ol> predstavlja ureenu listu.
Unutar ovih elemanta se mogu nai iskljuivo <li> elementi, i njihov sadraj
predstavlja stavke koje treba nabrojati. Brauzeri stavke najee renderuju
jednu ispod druge, dodajui simbole ispred stavki: bulet u sluaju neureene
liste i redni broj u sluaju ureene liste. Prilagoavanje ovih osobina vri se
putem CSS-a, a ne atributima liste.

Element <main> predstavlja glavni sadraj elementa <body> u dokumentu ili


aplikaciji. Sadraj ovog elementa treba da bude od sutinske vanosti, i da ne
ukljuuje delove koji se ponavljaju kroz stranice. Treba da bude jedinstven
na stranici.

Element <p> predstavlja paragraf u tekstu.

Element <pre> predstavlja ranije formatirani tekst. Obino se renderuje


korienjem neproporcionanog (monospejs) fonta i znaci beline se ne saimaju
kao kod ostalih elemenata.

Element <dl> predstavlja listu opisa i omeuje parove termina i njihovih


opisa. Obino se koristi za implementaciju renika ili za prikaz metapoda-
taka. Elementi <dt> i <dd> mogu da se nau samo u listi opisa i predsta-
vljaju, redom, termin i opis. Moe ih biti vie uzastopno (vie termina ima
isti opis ili jedan termin ima vie opisa). Najpre se navodi termin (ili termini)
pa opis (ili opisi). Brauzeri termine obino renderuju boldirano, a opise u
novom redu, uvueno.
12 Lazar Ljubenovi

Element <figure> pretstavlja sadraj koji moe postojati sam za sebe, naj-
ee uz natpis koji je predstavljen elementom <figcaption> . Mada je usko
vezan za glavni tok, njegova pozicija ne zavisi od glavnog toka. Ovo je obino
slika, ilustracija, dijagram, iseak koda ili ema koja je referencirana u tek-
stu, ali se moe pomeriti na sledeu stranicu ili u apendiks, a da ne narui
glavni tok.
Element <hr> po HTML5 specifikaciji predstavlja tematsku pauzu izmeu
elemanta na nivou paragrafa (na primer, promena scene u prii ili promena
teme u lanku). U ranijim verzijama HTML-a, ovaj element je predstavljao
horizonalnu liniju bez semantikog znaenja. Mada ga veb-itai i dalje naj-
ee predstavljaju na isti nain, on sada ima semantiko znaenje, a ne
prezentaciono.
Itd, itd, itd.

Pitanje 6 CSS, opte.

Odgovor. CSS je jezik za formatiranje koji omoguava da se definie


izgled elemenata prvenstveno veb-stranice, mada se moe koristiti i za bilo
koje druge XML dokumente, ukljuujui npr. SVG. Uz HTML i JavaScript,
predstavlja temeljnu tehnologiju za izgradnju veb-stranica.
Poboljanje mogunosti prezentacije podataka na vebu bile su tema mnogih
onlajn foruma, a devet reenja su izmeu 1993. i 1996. bila dominantna u
www-talk mejling listama. Od ovih devet reenja, dva su imala poseban uticaj
na razvoj CSS-a: CHSS (Cascading HTML Style Sheets) i SSP (Stream-based
Style Sheet Proposal). H je izbaeno iz imena jer se CSS standard mogao
koristiti i za druge jezike za oznaavanje osim HTML-a.
Primer CHSS:
1 font.family = times
2 h1.font.family = helvetica

Primer SSP:
1 HTML.justify: full
2 *H1.justify: center
3 *OL.LI.label: A

CSS je dizajniran kako bi pre svega odvojio sadraj dokumenta od prezen-


tacije istog, pri emu se pod prezentacijom najee podrazumeva raspored
elemenata (lejaut), boje i fontovi. Ovakva struktura omoguuje veu flek-
sibilnost pri specifikaciji karakterisika prezentacije, jer omoguuje da vie
Lazar Ljubenovi 13

stranica dele isti eksterni .css fajl, ime se smanjuje ponavljanje istih poda-
taka u strukturi samih dokumenata. Izmena grafikog izgleda neogranienog
broja stranica svodi se na promenu nekoliko linija CSS koda u jednom fajlu.
Pored toga, mogue je isti sadraj prezentovati na razliite naine, npr. za
prikaz na veb-stranici ili za tampanje, koristei dva razliita CSS-a.

Pitanje 7 CSS selektori.

Odgovor. Selektori slue da se definiu na koje se delove dokumenta odnosi


deklaracioni blok koji sledi. Selektori se mogu odnositi na:
sve elemente istog zadatog tipa (npr. naslov drugog nivoa <h2> )
selektor tipa (npr. h2 {color: red} );
elemente koji imaju zadati atribut ili zadatu vrednost atributa, ili su
odreenom odnosu za zadatom vrednou atributa selektori atri-
buta (npr. [checked] , [lang="en"] , [data-tag~="post"] );
elemente koji imaju specificiran identifikator ili klasu:
identifikator koji je jedinstven u celom dokumentu selektor
identifikatora ( #logo {color: red} )2 ,
identifikator koji moe da se odnosi na vie elemenata u doku-
mentu selektor klase ( .card {color: red} )3 ;
sve elemente ( * ) univerzalni selektor.
U tesnoj vezi sa selektorima su tzv. kombinatori.
Kombinator (spejs) bira vorove koji su naslednici (ne obavezno
direktni naslednici, tj. deca) prethodno specificiranog elementa. Na
primer, div span se odnosi na sve elemente <span> koji se nalaze u
elementu <div> .
Kombinator + selektira vorove koji se nalaze odmah nakon specifici-
ranog elementa (susedna braa). Na primer, img + span se odnosi
na sve elemente <span> koji se nalaze odmah nakon elementa <img>
(pa se tako mogu npr. selektirati opisi slika).
Kombinator ~ selektira vorove koji se nalaze nakon (ne obavezno
odmah nakon) specificiranog elementa (opta braa). Na primer,

2
Oktotrop sa nazivom identifikatora ( ##logo ) je skraen oblik za [id="logo"] .
3
Taka sa nazivom klase ( .card ) je skraen oblik za [class="card"].
14 Lazar Ljubenovi

p ~ span se odnosi na sve elemente <span> koji se nalaze nakon ele-


menta <p> , a imaju zajednikog roditelja.
Kombinator > selektira decu, odnosno direktne potomke prethodno
specificiranog elementa. Na primer, ul > li se odnosi na sve elemente
<li> koji su direktni potomci <ul> (pa se tako npr. mogu definisati
stilovi za razliite dubine ugnjedenih listi).
Od selektora, koriste se jo i pseudo-klase i pseudo-elementi. Pseudo-klase
dozvoljavaju formatiranje u skladu sa informacijama koje nisu dostupne u
stablu dokumenta; na primer, deklaracioni blok selektora :hover e se pri-
meniti na element samo kad korisnik postavi kursor na element. Neke pseudo-
klase mogu imati i argumente, kao to su :nth-child() , pa tako pseudo-klasa
:nth-child(4) selektira samo etvrti element u nizu. Selekciju je mogue na-
ini i pomou posebne promenljive n, :nth-child(3n) . Ovaj selektor selektira
svaki trei element.
Pseudo-elementi, za razliku od pseudo-klasa, ne opisuju posebna stanja,
ve omoguuju stilizovanje samo nekih delova dokumenta. Na primer, pseudo-
element ::first-line gaa samo prvu liniju elementa specificiranog selek-
torom. Zvanino ih je podrano est: ::after , ::before , ::first-letter ,
::first-line , ::selection i ::backdrop .

Pitanje 8 Javascript (JS), opte.

Odgovor. Javascript (javaskript ili davaskript) je skriptni dinamiki neti-


pizirani interpretacioni programski jezik visokog nivoa. Baziran je na pro-
titopovima sa funkcijama prve klase, to znai da podrava vie paradigmi,
tj. objektno-orijentisano, imperativno i funkcionalno programiranje. Ima
API za rad sa tekstom, nizovima, datumima i regularnim ekspresijama, ali
ne podrava nikakvu vrstu ulaza/izlaza i oslanja se na okruenje domaina u
kom je ugraen (najee veb-pregleda, mada to mogu biti i Adobe Acrobat,
Adobe Photoshop, SVG slike, serverska okruenja kao to je Node.js, NoSQL
baze podataka kao Apache CouchDB, itd). Uz HTML i CSS, predstavlja te-
meljnu tehnologiju za izgradnju veb-stranica. Svi moderni veb-pretraivai
ga podravaju bez potrebe za instaliranjem dodatnih programa.
Standardizovan je ECMAScript specifikacijom. Od 2012, svi moderni veb-
pretraivai u potpunosti podravaju ECMAScript 5.1. Sedamnaestog
juna 2015 objavljena je esta verzija ECMAScripta, zvanino nazvana EC-
MAScript 2015, mada se ee sree naziv ES6. Od tada se standard obna-
valja u godinjim ciklusima.
Lazar Ljubenovi 15

Kreirao ga je Brendan Ajk 1995. godine dok je radio kao inenjer u Net-
skejpu. Prvi put je objavljen uz Netscape 2 poetkom 1996. Prvenstveno je
trebalo da se zove LiveScript, ali je preimenovan u JavaScript kao (loa) mar-
ketinka strategija sa namerom da se osloni na tadanju popularnost jezika
Java, i pored toga to jezici imaju malo toga zajednikog.
Nekoliko meseci kasnije, Majkrosoft je izdao JScript uz IE3, koji je po mno-
gim karakteristikama bio kompatibilan sa JavaScriptom. Ubrzo potom, Net-
skejp je JavaScript prosledio evropskoj organizaciji za standrde Ecma In-
ternational, to je kao rezultat iste godine dalo prvu ediciju ECMAScript
standarda. Standard je doiveo znaajno unapreenje 1999. godine objavom
tree edicije, i od tada je ostao manje-vie stabilan. Mada je etvrta edicija
odbaena zbog politikih neslaganja o kompleksnosti jezika, mnogi njeni de-
lovi su posluili kao osnova za petu ediciju (objavljena 2009), kao i za estu
(jun 2015).
JavaScript podrava sledee tipove podataka: Number , String , Boolean ,
Object (gde spadaju Function , Array , Date i RegExp ), kao i jo dva dodatna
tipa, null i undefined .
JavaScript pravi razliku izmeu null i undefined . null je vrednost koja
ukazuje da je programer namerno postavio vrednost na nita (i to se moe
uraditi jedino korienjem kljune rei null ). S druge strane, undefined
je konstanta koja se dodeljuje neinicijalizovanim (ve samo deklarisanim)
promenljivama.
Svaka vrednost se moe kastovati u logiku vrednost, pri emu false , 0 ,
prazni stringovi "" , NaN , null i undefined postaju false , dok sve ostalo
postaje true .

Pitanje 9 JS objekti.

Odgovor. Objekti u JavaScriptu su parovi klju-vrednost. Slini su he-


tablicama iz jezika C i C++ ili asocijativnim nizovima iz PHP-a.
Postoje dva osnovna naina da se napravi prazan objekat.
1 var obj1 = new Object();
2 var obj2 = {};

Ova dva naina su meusobno semantiki ekvivalentna, mada se preporuuje


korienje drugog naina. Ova sintaksa je takoe osnova za JSON format
i uvek se preferira njeno korienje kada je to mogue. Pored toga, druga
verzija omoguuje instanciranje celog objekta izjedna.
16 Lazar Ljubenovi

1 var obj = {
2 name: "Carrot",
3 "for": "Max",
4 details: {
5 color: "orange",
6 size: 12
7 }
8 }

Vrednostima se sada moe pristupiti na dva naina: obj.details.color ili


obj["details"]["color"] . Oba naina su semantiki ekvivalentna. Kod druge
metode, parametar je string pa se to moe iskoristiti kao prednost jer omo-
guuje dinamiki izbor kljua kome se pristupa. Pored toga, moe se koristiti
da se pristupi vrednostima svojstava koje kao klju imaju kljunu re. Na
primer, obj.for je sintaksna greka, dok je obj["for"] validna sintaksa.

Pitanje 10 DOM, definicija i najee funkcije API-ja.

Odgovor. Document Object Model, skraeno DOM, je programski inter-


fejs za HTML, XML i SVG dokumente. Prua struktuiranu reprezentaciju
stabla dokumenta. DOM definie metode za pristup stablu, i na taj nain
omoguuje promenu strukture dokumenta, stilova i sadraja. DOM prua i
reprezentaciju dokumenta kao strukturne grupe vorova i objekata, od kojih
svaki ima razliita svojstva i metode. Za vorove mogu biti vezani i ruko-
vodioci dogaajima (event handlers); kad se dogaaj okine, rukovodioci se
izvravaju. Najkrae reeno, DOM povezuje veb-stranice sa skriptama ili
programskim jezicima.
Mada se DOM najee koristi uz JavaScript, on nije njegov sastavni deo.
Moe mu se pristupiti i drugim jezicima. Na primer, moe se koristiti i uz
Pajton.
1 import xml.dom.minidom as m
2 doc = m.parse("C:\\doc.html");
3 doc.nodeName # DOM property of document object;
4 p_list = doc.getElementsByTagName("para");

Neke od najee korienih funkcija su date u nastavku:


document.getElementById(id) Vraa referencu na element zadat svo-
jim identifikatorom (string). Identifikator se moe postaviti direktno
iz HTML-a kroz atribut id ili kroz skriptu. Ako ne postoji element sa
specificiranim identifikatorom, vraa se null .
Element.getElementsByTagName(name) Vraa tzv. iv niz elemenata
Lazar Ljubenovi 17

tipa HTMLCollection sa zadatim imenom taga. Pretraga se obavlja kroz


sve potomke elementa Element , iskljuujui njega samog. Lista koja
je vraena je iva, to znai da e se automatski aurirati zajedno sa
DOM stablom.
document.createElement(name) Kreira specificirani HTML element ili
HTMLUnknownElement ako je prosleeno ime elementa nepoznato.

Node.appendChild(node) Dodaje vor na kraj liste dece specificiranog


roditeljskog vora. Ako je dato dete referenca na postojei vor u do-
kumentu, ova metoda ga pomera sa trenutne pozicije na novu. Ovo
znai da vor ne moe istovremeno biti na dva mesta u dokumentu.
Prema tome, ako vor ve ima dete, vor se prvo uklanja, a onda se
dodaje na novu poziciju. Metoda Node.cloneNode() se moe iskoristiti
za kreiranje kopije vora pre nego to se on doda pod novog rodite-
lja. Kopije napravljene na ovaj nain nee automatski biti meusobno
sinhronizovane. appendChild() ne podrava prenos vorova meu ra-
zlitim dokumentima; umesto nje se koristi document.importNode() .
Element.innerHTML Slui za postavljanje ili dobavljanje HTML sin-
takse koja opisuje sadraj elementa, odnosno njegove potomke. Spram
toga, postoje i dve sline (mada sa nekim bitnim razliakma) metode
Node.innerText (nije po standardu) i Node.textContent (po standardu),
koje slue za dobavljanje teksta iz vora i njegovih potomaka. Drugim
reima, pokuava da aproksimira ono to bi korisnik dobio kada bi se-
lektirao sadraj kursorom i kopirao sadraj na klipbord.
Element.setAttribute(name, value) i Element.getAttribute(name) slue
za postavljanje i pribavljanje vrednosti postojeeg atributa specificra-
nog elementa.
HTMLElement.stlye Vraa objekat tipa CSSStyleDeclaration koji re-
prezentuje samo inlajn atribut style specificiranog elementa i ignorie
sva druga CSS pravila.
window.onload Rukovodilac dogaajem za dogaaj load nad objek-
tom window . Prosleuje mu se referenca na funkciju. Dogaaj se okida
u trenutku kada se zavri proces uitavanja dokumenta to je trenu-
tak u kome su DOM, sve slike, skripte, linkovi i frejmovi u potpunosti
uitani.

Pitanje 11 Progresivno poboljanje.

Odgovor. Progresivno poboljanje (PE, Progressive Enhancement) je stra-


18 Lazar Ljubenovi

tegija u veb-dizajnu koja u prvi plan stavlja pristupanost, semantiki HTML


i korienje eksternih stajlitova i skripti. PE koristi veb-tehnologije na slo-
jevit nain, odnosno omoguuje svakome da pristupi osnovnom sadraju i
funkcionalnosti veb-stranice, kroz bilo koji veb-pregleda ili sa bilo kakvom
internet-konekcijom, ali i omoguava pristup naprednoj verziji stranice za
korisnike sa naprednijim veb-pregledaima ili sa veim protokom podataka.
Tehnika se oslanja na ranije popularniju strategiju poznatu kao elegantna
degradacija (Graceful Degradation), gde dizajneri kreiraju veb-stranice
namenjene najnovijim veb-pregledaima, ali imaju u vidu i njihove ranije ver-
zije. Elegantna degradacija treba da dopusti stranici da degradira, odnosno
da odri svoju prezentabilnost i pored toga to neke tehnologije koje dizajner
eli da koristi nisu implementirane na korisnikovoj verziji veb-pregledaa.
PE ine sledei osnovni principi:
osnovni sadraj treba da bude dostupan na svim brauzerima,
osnovna funkcionalnost treba da bude dostupna na svim brauzerima,
sadraj je oznaen bez suvinih tagova i na semantiki nain,
napredni izgled stranice se oslanja na eksterno povezani CSS,
napredna funkcionalnost je ugraena koristei nenametljiv (unobtru-
sive) JavaScript,
podrazumevana podeavanja na veb-itaima krajnjih korisnika se po-
tuju.

Pitanje 12 Tipovi dizajna strane.

Odgovor. Za lejaut stranice se esto koriste termini fiksni, statiki, teni,


adaptivni, responzivni, itd. Svako ime opisuje kako se lejaut ponaa kada
se stranica posmatra sa ekrana razliitih veliina: irina stranice se moe
menjati u zavinsoti od rezolucije monitora, ali i od toga na kom ureaju se
stranica posmatra: raunar, lap-top, tablet, mobilni telefon ili pametni sat.
Kod statikih stranica (jo i: fiksne stranice, stranice fiksne irine), irina
veb-stranice je definisana u pikselima i ne menja se zajedno sa irinom
ekrana na kome se posmatra. Ovaj pristup se inetnzivno se koristio do po-
etka 2010, pri emu je najea irina stranice bila 960 px. Ukoliko je irina
ekrana manja od fiksno definisane veliine, ponaanje moe da bude razliitio
od implementacije platforme ili veb-pregledaa. Na raunarima e ivice (ili
samo jedna ivica) stranice najee biti odseena, ali e na Eplovim mobil-
nim ureajima stranica biti smanjenja i korisnik e moi da zumira delove
stranice, i tako navigira kroz sajt.
Lazar Ljubenovi 19

Tene veb-stranice koriste relativne umesto fiksnih veliina. Pored proce-


nata, to mogu biti em-ovi ili (odskora) i rem-ovi. Veb-stranice dizajnirane
ovom tehnikom e se adaptirati bilo kojoj veliini ekrana. Mana kod ovakog
prilaza je to to e na veoma irokim monitorima sadraj biti previe razvu-
en (na primer, itav paragraf moe biti samo jedna linija teksta), dok na
malim ekranima sadraj moe biti previe zbijen i nepregledan.
Adaptivni lejaut stranice koristi CSS medija-kverije kako bi se odredila
irina brauzera i da bi se u skladu s tim promenili stilovi. Kao i kod statikih
lejauta, koriste se fiksne veliine ali izbor veliine zavisi od irine brauzera. Na
primer, kveri moe biti definisan sledeim iskazom: ako je irina stranice do
500 px, postavi glavni kontejner na 400 px; ako je irina stranice do 1000 px,
postavi glavni kontejner na 960 px. Pored irine glavnog kontejnera, mogu
se menjati i drugi parametri, pa i raspored elemenata. Na primer, sajt moe
smanjiti broj kolona na manjim ekranima.
Responzivni lejaut predstavlja kombinaciju statikog i adaptivnog pristupa,
odnosno koristi i duine izraene relativnim jedinicama i medija-kverije.
Najee se ovakvom nainu dizajniranja pristupa polazei od najmanjih ve-
liina ekrana, odnosno takozvanim mobile-first pristupom, jer je najee
lake nai nain da se proiri manji lejaut nego da se smanji postojei. Da-
nas predstavlja najei pristup kreiranju veb-stranica, zbog velikog procenta
korisnika koji sajtovima pristupa preko mobilnih ureaja kao to su pametni
telefoni i tableti (od poetka 2014 preko 50%).

Pitanje 13 Responzivni dizajn.

Odgovor. Responzivni veb-dizajn (RWD) je pristup dizajniranju veb-stranica


koji treba da omogui optimalni doivljaj veb-stranice itljivost i jedno-
stavnu navigaciju bez potrebe za mnogo zumiranja i skrolovanja bez obzira
na ureaj sa kojeg krajnji korisnik pristupa sajtu (od desktop raunara do
mobilnih telefona). U cilju postizanja RWD-a, koriste se razne tehnike, meu
kojima su: fluidna koordinatna mrea, fleksibilne slike, CSS3 medija-kveriji,
odnosno @media pravila, itd.
RWD je postao veoma vaan koncept u dizajniranju veb-stranica otkako su
statistike poele da pokazuju da preko polovine saobraaja na internetu do-
lazi sa mobilnih ureaja. Pored toga, Gugl je 21. aprila 2015. pustio u rad
Mobilegeddon, algoritam koji prilikom sortiranja rezultata pretrage uzima u
obzir i to da li je sajt optimizovan za mobilne ureaje.
Pored promiljenog korienja CSS-a i medija-kverija u njemu, neophodno je
u HTML uvesti odogvarajue meta-podatke koji brauzeri mogu da proitaju
20 Lazar Ljubenovi

o stranici. Na primer, metatag viewport se koristi da bi se kontrolisala i-


rina i skaliranje oblasti prikaza brauzera. Navoenjem width=device-width ,
irina ekrana se usklauje sa pikselima nezavisno od ureaja, a pomou
initial-scale=1 uspostavlja se 1:1 odnos izmeu CSS piksela i piksela neza-
visno od ureaja. Pored initial-scale , mogu se podesiti i drugi parametri
kao to su minimum-scale , maximum-scale i user-scalable .

XML
Pitanje 14 XML tehnologije.

Odgovor. XML (Extensible Markup Language) je jezik za oznaavanje


koji definie skup pravila za ifriranje dokumenata u formatu koji je lako
razumljiv i ljudima i mainama. Definisan je XML 1.0 specifikacijom koju
je objavio W3C. Dizajniran je s namerom da naglasi jednostavnost, general-
nost i upotrebljivost irom interneta. Radi se o formatu u kome se podaci
uvaju u tekstualnom obliku koji dobro podrava Junikod, pa samim tim i
razne ljudske jezike. Mada je fokus na dokumentima, esto se koristi i za re-
prezentaciju proizvoljnih struktura podataka (npr. postupkom serijalizacije
podataka iz programa).
Na stotine formata je bazirano na XML sintaksi, meu kojima su RSS, Atom
i XHTML. XML formati su postali standard i za mnoge alate poput Microsoft
Office ili LibreOffice. Koristi se i kao osnova za neke komunikacione protokle,
kao to je XMPP. Aplikacije iz Majkrosoftovog .NET frejmvorka koriste XML
sintaksu za konfiguracione fajlove.
Po definiciji, XML dokument je string karakter a. Skoro svaki legalni Ju-
nikod karakter se moe pojaviti u XML dokumentu. Preprocesor analizira
sadraj dokumenta i predaje struktuiranu informaciju aplikaciji. Specifi-
kacija nalae pravila o tome ta preprocesor mora ili ne sme da uradi, ali
aplikacija je van njenog opsega. Dokumentacija aplikaciju naziva procesor,
a esto se kolokvijalno kae da je ona XML parser.
Karakteri koji ine XML dokument se dele na znake za obeleavenje i
sadraj. Razlika izmeu njih se moe veoma lako odrediti pomou nekoliko
jednostavnih sintaksnih pravila. U optem sluaju, znak za obeleavanje ili
poinje znakom < i zavrava se znakom > (tagovi), ili poinje znakom &
i zavrava se znakom ; (glifovi). Stringovi koji nisu znaci za obeleavanje
predstavljaju sadraj.
Lazar Ljubenovi 21

Postoje tri vrste tagova: otvoren tag (na primer, <section> ), zatvoren tag
(na primer, </section> ), tag praznog elementa (na primer, <line-break /> ).
Logika reprezentacija komponente koja se sastoji od otvorenog taga, sa-
draja i zatvorenog taga naziva se element. Ukoliko sadraj sadri druge
tagove koji ine jedan ili vie elemenata, takvi elementi se nazivaju elementi-
deca. U optem sluaju, i deca mogu imati svoju decu, pa se svi oni jednim
imenom nazivaju potomci. Deca se jo nazivaju direktni potomci.
Konstrukcija u okviru taga koja se sastoji od para ime-vrednost naziva se
atribut. U primeru <step number="3">Connect A to B.</step> izdvaja se atri-
but number sa vrednou 3 .
XML dokumenti mogu poinjati i nekim meta-podacima, odnosno informa-
cijama o sebi samima.
<?xml version="1.0" encoding="UTF-8"?>

XML je format koji se koristi za asinhronu razmenu podataka izmeu brau-


zera i servera i naziva se AJAX.

Pitanje 15 XML namespace.

Odgovor. XML nejmspejsovi se koriste kako bi XML dokumentu obezbedili


elemente sa jedinstvenim imenom. XML instanca moe da sadri element
ili imena atributa iz vie od jednog XML renika. Ako se svakom reniku
dodeli nejmspejs, dvosmislenost izmeu elemenata sa istim imenom se moe
reiti. Jednostavan primer je XML instanca koja ima podatke o kupcu i
naruenom proizvodu. I element koji predstavlja kupca i element koji pred-
stavlja proizvod bi mogli da imaju element-dete sa imenom id. Reference na
element id bi stoga bile dvosmislene; ako se postave u druge nejmspejsove,
dvosmislenost nestaje.
Ime nejmspejsa je URI. URI izabran za nejmspejs datog XML renika
obino opisuje resurs koji je pod kontrolom autora ili organizacije koja de-
finie renik, na primer URL autorovog veb-servera. Meutim, nejmspejs
specifikacija ne zahteva niti predlae da se nejmspejs URI koristi za doba-
vljanje informacija; XML parser ga samo tretira kao string. Ipak, korienje
URI-ja umesto obinog imena smanjuje verovatnou da postoji vie razliitih
nejmspejsova sa istim identifikatorima.
Mada se za ime nejmspejsa skoro iskljuivo koristi namespace URI, W3C
Rekomendacija koristi termin namespace name. Specifikacija ne daje jasan
odgovor na pravila za imenovanje nejmspejsova, niti nalae da parseri moraju
22 Lazar Ljubenovi

da odbiju dokument ije ime nejmspejsa nije validan URI, i mnogi XML
parseri dozvoljavaju korienje bilo kakvog stringa.
XML nejmspejs se deklarie korienjem rezervisanog XML atributa xmlns
ili xmlns:prefiks , ija vrednost mora biti validno nejmspejs ime. Na pri-
mer, sledea deklaracija mapira prefiks xhtml: na XHTML nejmspejs.
xmlns:xhtml="http://www.w3.org/1999/xhtml"

Svaki element ili atribut ije ime poinje prefiksom xhtml: se svrstava
pod XHTML nejmspejs, ako on ili prethodnik ima gorenavedenu deklaraciju
nejmspejsa. Ako se ne navede prefiks, smatra se da se radi o podrazumeva-
nom nejmspejsu. U tom sluaju se za svaki element koji nema nejmspejs-
prefiks smatra da pripada XHTML nejmspejsu, ako on ili prethodnik ima
gorenavedenu deklaraciju nejmspejsa.

Pitanje 16 DTD.

Odgovor. DTD (Document Type Definition) je skup deklaracija za


obeleavanje (Markup Declaration) koji definiu tip dokumenta (Document
Type) za SGML porodicu jezika za oznaavanje (SGML, XML, HTML).
DTD definie legalne gradivne blokove XML dokumenta. Definie strukturu
dokumenta sa listom legalnih elemenata i atributa. Moe biti deklarisan
unutar samog XML dokumenta, ili koristei eksternu referencu. XML koristi
podskup SGML DTD-a.
DTD se sa XML ili SGML dokumentom povezuje koristei deklaraciju tipa
dokumenta, doktajp (DOCTYPE). Doktajp se pojavljuje u blizini sintaksi-
kog fragmenta doctypedecl blizu poetka XML dokumenta. Deklaracijom se
utvruje to da je dokument instanca tipa koji je definisan referenciranim
DTD-om.
DTD-ovi opisuju strukturu klase dokumenata koristei deklaracije elemenata
i liste atributa. Deklaracije elemenata imenuju dozvoljeni skup elemanata
u dokumentu, i specificiraju kako deklarisani dokumenti i nizovi karaktera
(podataka) mogu da se sadre u svakom elementu. Dekalracije liste atri-
buta imenuju dozvolejni skup atributa za svaki deklarisani element, ukljuu-
jui i tip svake vrednosti atributa, ili ak i eksplicitni skup validnih vrednosti.

Pitanje 17 DTD, konkretan primer.

Odgovor. U sledeem primeru je definisan element img. Dovoljan sadraj


mu je podeen na EMPTY, to znai da element mora biti prazan.
Lazar Ljubenovi 23

<!ELEMENT img EMPTY>

Sledi primer jednostavnog eksternog XML DTD-a.


1 <!ELEMENT people_list (person)*>
2 <!ELEMENT person (name, birthdate?, gender?, socialsecuritynumber?)>
3 <!ELEMENT name (#PCDATA)>
4 <!ELEMENT birthdate (#PCDATA)>
5 <!ELEMENT gender (#PCDATA)>
6 <!ELEMENT socialsecuritynumber (#PCDATA)>

people_list je vaildno ime elementa, i instanca takvog elementa sme


da sadri bilo koji broj person elemenata. Zvezdica oznaava da moe
biti 0 ili vie person elemenata unutar people_list elementa.
person je validno ime elementa, i instanca takvog elementa sme da sa-
dri jedan element ime, zatim opciono jedan element birthday, opciono
jedan element gender i opciono jedan element socialsecuritynumber.
Znak pitanja oznaava da element nije obavezan. Referenca na element
name nema ?, to znai da person mora da sadri element name.
name, birthdate, gender i socialsecuritynumber su validna imena
elemenata, i instance tih elemanta sadre parsirane podatke-karatere
(Parsed Character data), (#PCDATA).
Sledi primer XML dokumenta koji koristi goreopisan DTD. DTD je ovde
referenciran kao eksterni podskup, pomou SYSTEM specifikatora i URI-ja.
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 <!DOCTYPE people_list SYSTEM "example.dtd">
3 <people_list>
4 <person>
5 <name>Fred Bloggs</name>
6 <birthdate>2008-11-27</birthdate>
7 <gender>Male</gender>
8 </person>
9 </people_list>

Sledi primer iz HTML4 specifikacije, za neureenu listu i stavke u njoj.


1 <!ELEMENT UL - - (LI)+ -- unordered list -->
2 <!ATTLIST UL
3 %attrs; -- %coreattrs, %i18n, %events --
4 >
5
6 <!ELEMENT LI - O (%flow;)* -- list item -->
7 <!ATTLIST LI
8 %attrs; -- %coreattrs, %i18n, %events --
9 >
24 Lazar Ljubenovi

Pitanje 18 XML Schema.

Odgovor. XML Schema je jezik za iskazivanje ogranienja XML dokume-


nata. Postoji nekoliko razliitih ematskih jezika koji su u irokoj upotrebi, a
glavni su DTD (Document Type Definitions), Relax-NG, Schematron i W3C
XSD (XML Schema Definitions).
ema moe da se koristi u nekoliko svrha.
Obezbeuje listu elemenata i atributa u reniku.
Vezuje tipove (bilo da su to generalni tipovi kao integer , string ,
itd, ili odreeniji kao hat_size , sock_color , itd) sa vrednostima iz
dokumenta.
Ograniava gde se mogu nai elementi i atributi, kao i ta sme da se
nae unutar tih elemenata. Na primer, moe se definisati da se naslov
poglavlja moe nai samo unutar poglavlja, ili da za naslovom poglavlja
mora da sledi jedan ili vie paragrafa teksta.
Nudi informacije koje su itljive ljudima, a procesibilne mainama.
Daje formalan opis jednog ili vie dokumenata.
Informacije iz ematskih dokumenata se esto koriste od strane editora koji
razumeju XML kako bi korisnicima ponudili elemente koji imaju najveu
verovatnou korienja, na osnovu trenutnog konteksta. Proveravanje da li se
dokument pridrava specifikaciji eme je poznato kao validacija dokumenta
spram eme; ako se drugaije ne naglasi, podrazumeva se da se radi o DTD
validaciji (a ne o npr. XSD validaciji).
XSD (XML Schema Definition), predlog W3C-a, specificira kako da se for-
malno opisuju elementi u XML dokumentu. Mogu ga koristiti programeri
da bi verifikovali svaki deo sadraja dokumenta. Mogu da provere da li se
pridravaju opisima elemanta u koje su smeteni. XSD moe da se koristi da
iskae skup pravila kojih se XML dokument mora pridravati kako bi se mo-
gao smatrati validnim u skladu sa tom emom. Ipak, za razliku od veine
drugih ematskih jezika, XSD je takoe definisan sa namerom da odreivanje
validnosti dokumenta kao izazni produkt ima skup informacija koji se dre
nekih tipova podataka. Takav post-validacioni infoset moe biti koristan
pri razvitku softvera za procesiranje XML dokumenata.

Pitanje 19 XPath.

Odgovor. XPath (XML Path Language) je jezik baziran na upitima koji


Lazar Ljubenovi 25

slui za selektiranje vorova iz XML dokumenta. Pored toga, XPath se moe


koristiti za izraunavanje vrednosti (npr. stringova, brojeva ili logikih vred-
nosti) iz sadraja XML dokumenta. Definisan je od strane W3C-a. Baziran
je na injenici da se XML dokument moe predstaviti kao stablo i prua
mogunost navigacije kroz njega, selektirajui vorove na osnovu razliitih
krterijuma.
Sintaksa je dizajnirana tako da mimikuje URI i putanje do fajlova na UNIX
operativnim sistemima. Primer jednostavnog upita je /A/B/C, koji e selekti-
rati elemente C koji su deca elemenata B koji su deca elemenata A. Mogui su
i neto komplikovaniji upiti, na primer A//B/*[1] selektira prvo dete ([1]),
tagod bilo njegovo ime (*), svakog elementa B, koji je dete ili dublji potomak
(//) elementa A koje je dete trenutnog kontekstnog vora (ne poinje sa /).
Moe se koristiti i puna, proirena sintaksa. Gorenavedeni se u ovoj proi-
renoj sintaksi mogu napisati na sledee naine: !/child::A/child::B/child::C!
i !child::A/descendant-or-self::node()/child::B/child::*[position()=1] .

Pitanje 20 XML vs HTML.

Odgovor. XML prua pravila za kreiranje, struktuiranje i enkodiranje doku-


menata. XML se esto koristi da sadri podatke i da obezbedi komunikaciju
meu aplikacijama. HTML je dizajniran za kreiranje strukturnih dokume-
nata koji imaju semantiko znaenje. Ima fleksibilnija pravila (doputa supu
od tagova).
Ukratko, XML je razvijen s namerom da opie podatke, a HTML da ih
predstavi.

Pitanje 21 XSL.

Odgovor. XSL (Extensible Stylesheet Language) je porodica jezika koji se


koriste za transformaciju i renderovanje XML dokumenata. Obuhvata tri
jezika: XSLT (XSL Transformation) XML jezik za transformisanje XML
dokumenata, XSL-FO (XSL Formatting Objects) XML jezik za specificira-
nje vizuelnog formatiranja XML dokumenta i XPath (XML Path Language)
jezik koji koristi XSLT, mada je dostupan i u drugim kontekstima, i slui za
adresiranje delova XML dokumenata. U nastavku odgovora se pod XSL-om
misli na kombinaciju XSLT-a i XSL-FO-a (v. drugi iseak koda).
XSL stajlit je, kao CSS, fajl koji opisuje kako treba prikazati XML dokument
datog tipa. Deli funkcionalnost i kompatibilan je sa CSS2, mada koristi
drugaiju sintaksu. Pored toga prua sledee mogunosti.
26 Lazar Ljubenovi

Transformacioni jezik za XML dokumente: XSLT. Prvobitno name-


njen za izvoenje kompleksnih operacija za manipulaciju stilovima, npr.
generisanje tabela iz sadraja i indeksa, sada se koristi kao XML jezik
za obradu opte namene. XSLT se prema tome esto koristi van kon-
teksta XSL-a, npr. za generisanje HTML veb-stranice korisei podatke
date u XML-u.
Napredne mogunosti stiliziranja, izraene XML doktajpom koji defi-
nie skup elemenata koji se naziva Objekti za formatiranje (Format-
ting Objects), i atribute (delimino pozajmljeni od CSS2 svojstava, uz
neke dodate sloenije).
Stiliziranje zahteva izvorni XML dokument, koji sadri informacije e stajlit
prikazati i sm stajlit koji opisuje kako treba prikazati dokument datog tipa.
1 <scene>
2 <FX>General Road Building noises.</FX>
3 <speech speaker="Prosser">
4 Come off it Mr Dent, you cant win
5 you know. Theres no point in lying
6 down in the path of progress.
7 </speech>
8 <speech speaker="Arthur">
9 Ive gone off the idea of progress.
10 Its overrated
11 </speech>
12 </scene>

Ovaj XML fajl ne sadri nikakve informacije o prezentaciji one se nalaze u


stajlitu. Razdvajanje sadraja dokumenta i informacija o stilu dokumenta
doputa prikaz istog dokumneta na razliim medijumima (ekran, papir, mo-
bilni telefon, itd). Pored toga, omoguava da vie razliitih XML dokumenata
imaju isti stajlit bez dupliranja podataka nad svakim dokumentom. Slede
neki delovi stajlita koji bi mogao biti povezan za gorenavedeni XML.
1 <xsl:template match="FX">
2 <fo:block font-weight="bold">
3 <xsl:apply-templates/>
4 </fo:block>
5 </xsl:template>
6
7 <xsl:template match="speech[@speaker=Arthur]">
8 <fo:block background-color="blue">
9 <xsl:value-of select="@speaker"/>:
10 <xsl:apply-templates/>
11 </fo:block>
12 </xsl:template>
Lazar Ljubenovi 27

Za razliku od CSS-a, koji koristi svoju notaciju, XSL koristi ve poznatu


XML notaciju. Veina modernih pretraivaa podravaju i CSS i XSLT.
Pored toga, postoje mnoge druge XSLT implementacije.
XSL nije zamena za CSS: XSL je namenjen sloenom formatiranju gde bi sa-
draj dokumenta trebalo predstaviti na vie mesta (na primer, naslovi treba
da postanu deo sadraja); CSS je namenjen dinamikom formatiranju onlajn
dokumenata za vie medijuma i striktno je deklarativan, to ga ini relativno
ogranienim, mada jednostavnim za korienjem, generisanjem i modifikova-
njem. Mogu se koristiti i u kombinaciji: XSL na serveru za pojednostavlji-
vanje XML dokumenata, a CSS na klijentu za stilizovanje.

Pitanje 22 JSON vs XML.

Odgovor. Slede primeri JSON objekta i njegovog ekvivalenta u XML-u.


1 {"employees": [
2 {"firstName": "John", "lastName": "Doe"},
3 {"firstName": "Anna", "lastName": "Smith"},
4 {"firstName": "Peter", "lastName": "Jones"}
5 ]}

1 <employees>
2 <employee>
3 <firstName>John</firstName> <lastName>Doe</lastName>
4 </employee>
5 <employee>
6 <firstName>Anna</firstName> <lastName>Smith</lastName>
7 </employee>
8 <employee>
9 <firstName>Peter</firstName> <lastName>Jones</lastName>
10 </employee>
11 </employees>

JSON je format za razmenu podataka, a XML je jezik.

Pitanje 23 JSON.

Odgovor. JSON (JavaScript Object Notation, ita se dejson) je lak


(lightweight) format za razmenu podataka. Ljudima je lako da ga itaju i
piu, a raunarima da ga analiziraju i generiu. Prvi ga je specifikovao i
popularizovao Daglas Krokford.
U pitanju je tekstualni format podataka koji je potpuno nezavistan od je-
zika, ali koristi konvencije koje su poznate programerima koji programiraju
28 Lazar Ljubenovi

u jezicima iz C-porodice (C, C++, C#, Java, JavaScript, Perl, Python, itd).
Zvanian internet medija tip je application/json, a ekstenzija je .json.
Zasniva se na dve strukture:
Skup parova ime-vrednost. U zavisnosti od jezika, ovo moe biti rea-
lizovano kao objekat, slog, struktura, renik, he-tablea, lista sa klju-
evima ili asocijativni niz.
Ureena lista vrednosti. U veini jezika ona je realizovana kao niz,
vektor, lista ili sekvenca.
JSON je format koji se najee koristi za asinhronu razmenu podatka izmeu
brauzera i servera, AJAJ (mada je u iroj upotrebi termin AJAX, iako se ne
korsiti XML ve JSON).

Pitanje 24 AJAX.

Odgovor. Ajaks (AJAX, ejdeks, skraenica od asinhroni JavaScript i


XML) je skup tehnika za razvoj na vebu koje koriste veb-tehnologije na
klijentskoj strani radi kreiranja asinhronih veb-aplikacija. Koristei Ajaks,
veb-aplikacije mogu da asinhrono alju i primaju podatke od servera, bez uti-
caja na trenutni izgled i trenutno ponaanje stranice. Sloj razmene podataka
je u potpunosti odvojen od prezentacionog sloja, to znai da je mogue di-
namiki menjati sadraj stranice bez potrebe za ponovnim uitavanjem cele.
Uprkos svom imenu, ne mora se koristiti XML esto se koristi JSON u
AJAJ varijanti.
Ajaks nije tehnologija, ve skup tehnologija. HTML i CSS se mogu za-
jedno koristiti za obeleavanje i stilizovanje informacija. DOM-u se pristupa
pomou JavaScripta radi dinamikog prikaza informacija. JavaScript i obje-
kat XMLHttpRequest pruaju metode za asinhronu razmenu podataka izmeu
brauzera i servera.
Tokom ranih 1990-ih, veina veb-stranica je bila bazirana samo na HTML
dokumentima. Svaka interakcija korisnika sa stranicom koja za posledicu
ima promenu nekog dela stranice zahtevala je ponovno slanje itave stranice.
Godine 1996, Internet Explorer je uveo tag <iframe> koji je doputao asin-
hrono uitavanje sadraja, a 1999. je ta tehnologija iskoriena za dinamiko
auriranje vesti i citata na podrazumevanoj poetnoj stranici na Internet
Exploreru. Uz IE5 je uvedena kontrola XMLHTTP, koju su kasnije Mozilla,
Safari i Opera pretoili u JavaScript objekat XMLHttpRequest . Poev od IE7,
i Majkrosoft je adaptirao XMLHttpRequest . Stara ActiveX verzija je i dalje
dostupna u novijim verzijama IE-a, ali ne i u Microsoft Edge.
Lazar Ljubenovi 29

Gugl je 2004. i 2005. nainio veliki korak iskoristivi asinhrone tehnologije


za Gmail i Google Maps. Sajt Kayak.com je u svojoj beta verziji koristio
sline tehnologije, u to vreme zvane ona xml http stvar. Termin ajax je u
javnosti prvi put iskorien 18. februara 2005 u lanku Ajax: Novi pristup
veb-aplikacijama, gde su opisane tehnike koriene na Guglovim aplikacijama.
Ajaks zahtev se moe jednostavno poslati korienjem JS frejmvorka jQuery.
Za serversku stranu je u primeru iskorien PHP, mada se moe raditi o bilo
kojoj drugoj tehnologiji.
1 $.get(send-ajax-data.php, function(data) {
2 alert(data);
3 });

1 <?php
2 header(Content-Type: text/plain);
3 echo "This is the returned text.";
4 ?>

Serverske tehnologije
Pitanje 25 CGI.

Odgovor. CGI (Common GateWay Interface) je standardni nain na koji


veb-serveri mogu saraivati sa izvrnim programima instaliranim na serveru
radi dinamikog kreiranja veb-stranica. Takvi programi se zovu CGI skripte
i najee su napisati nekim skritpnim jezikom, mada mogu biti napisani i
bilo kojim programskim jezikom.
Svaki veb-server pokree HTTP serverski softver, koji odgovara na zahteve
koje dobija od brauzera. Uopteno, HTTP server ima direktorijum koji
predstavlja kolekciju dokumenata fajlova koji mogu biti poslati brauze-
rima koji su povezani na ovaj server. Na primer, ako veb-server ima domen
example.com, a skup dokumenata se uva na /usr/local/apache/htdocs u
lokalnom fajl-sistemu, onda e veb-server na zahetev za stranicom na adresi
http://example.com/index.html odgovoriti brauzeru slanjem (ranije ve
napisanog) fajla /urs/local/apache/htdocs/index.html.
CGI sistem proiruje ovaj pristup tako to doputa vlasniku veb-servera da
direktorijum u kolekciji dokumenata posveti izvrnim skriptama (ili binar-
nim fajlovima) umesto ve napisanih stranica ovo je CGI direktorijum; na
primer /usr/local/apache/htdocs/cgi-bin. Ako brauzer zahteva URL
koji pokazuje na fajl u CGI direktorijumu (npr. Pajton skripta na lokaciji
30 Lazar Ljubenovi

http://example.com/cgi-bin/printenv.pl), umesto da server samo poa-


lje nazad taj fajl, HTTP server e pokrenuti specificiranu skriptu, a brauzeru
e vratiti izlaz skripte. Drugim reima, sve to skripta alje na standardni
izlaz se prosleuje veb-klijentu umesto da se ispie na terminalu.
Sledi primer jednostavnog CGI programa u Pajtonu, sa pridruenim HTML-
om. Program se koristi za izraunavanje zbira vrednosti dva broja unesena
u polja za unos.
1 <!DOCTYPE html>
2 <html>
3 <body>
4 <form action="add.cgi" method="POST" >
5 Enter two numbers to add:<br />
6 First Number: <input type="text" name="num1" /><br />
7 Second Number: <input type="text" name="num2" /><br />
8 <input type="submit" value="Add" />
9 </form>
10 </body>
11 </html>

1 #!/usr/bin/python
2
3 import cgi
4 import cgitb
5 cgitb.enable()
6

7 input_data=cgi.FieldStorage()
8
9 print Content-Type:text/html # Sledi HTML
10 print # Prazna linija
11 print <h1>Rezultat sabiranja</h1>
12 try:
13 num1=int(input_data["num1"].value)
14 num2=int(input_data["num2"].value)
15 except:
16 print <p>Unos nisu celi brojevi.</p>
17 return 1
18 sum=num1+num2
19 print <p>{0} + {1} = {2}</p>.format(num1, num2, sum)

Pitanje 26 PHP, opte.

Odgovor. PHP je serverski skriptni jezik dizajniran za razvoj na vebu,


mada se moe koristiti i kao programski jezik opte namene. Kreiran je
1994. godine. Prvobitno je PHP je bila skraenica od Personal Home Page,
ali je sada u pitanju rekurzivni bekronim PHP: Hypertext Preprocessor. Moe
Lazar Ljubenovi 31

se ugraditi u HTML kod, ili se moe kroistiti u kombinaciji sa nekim ablon-


skim sistemima (npr. Smarty) i drugim frejmvorcima. PHP kod se obino
procesira pomou PHP interpretatora koji je implementiran kao modul
na veb-serveru ili kao CGI izvrni fajl. Veb-server kombinuje rezultate in-
terpretiranog i izvrenog PHP koda (to moe biti bilo koji tip podataka,
ukljuujui slike) sa generisanom veb-stranicom. PHP se sve do 2014. go-
dine razvijao bez zvanine formalne specifikacije i bez standarda.
PHP interpretator izvrava samo kod koji se nalazi unutar delimiter a. Naj-
ee se koriste <?php i ?> , mada postoji i skraena verzija otvorenog deli-
mitera, <? . Postoji i takozvana eho-skraenica otvorenog taga, <?= , to je
ekvivalentno sa <?php echo ( echo je funkcija za tampanje).

Sve promenljive imaju prefiks $ (npr. $var ), a tip podatka ne mora da


bude unapred specificiran. Za razliku od imena funkcija i klasa, imena pro-
menljivih prave razliku izmeu velikih i malih slova. Korienje navodnika
( " ) umesto apostrofa ( ) pri radu sa stringovima omoguava interpolaciju
vrednosti promenljive u string. Sintaksa podsea na C.

Pitanje 27 PHP-ove superglobalne promenljive.

Odgovor. Superglobalne promenljive su postale deo PHP-a sa verzijom 4.1.0.


To su ugraene promenljive koje su uvek dostupne moe im se pristu-
piti iz bilo koje funkcije, klase ili fajla. Ima ih devet: $GLOBALS , $_SERVER ,
$_REQUEST , $_POST , $_GET , $_FILES , $_ENV , $_COOKIE i $_SESSION .

$GLOBALS se koristi za uvanje svih globalnih promenljivih iz bilo kog dela


PHP skripte (kao i iz funkcija i metoda). U sledeem primeru, $x i $y su glo-
balne promenljive, pa im se iz funkcije moe pristupiti preko $GLOBALS[x]
i $GLOBALS[y] . Takoe, kako je rezultat smeten u globalnu promenljivu,
on se kasnije moe koristiti bez pristupa nizu $GLOBALS .
1 <?php
2 $x = 75; $y = 25;
3 function addition() {
4 GLOBALS[z] = $GLOBALS[x] + $GLOBALS[y];
5 }
6 addition();
7 echo $z; // 100
8 ?>

$_SERVER sadri informacije o hederima, putanjama i lokacijama skripti.


Na primer, $_SERVER[SERVER_NAME] vraa ime servera (to moe biti npr.
www.elfak.ni.ac.rs).
32 Lazar Ljubenovi

$_REQUEST se koristi za prikupljanje podataka nakon prosleivanja HTML


forme, kao u sledeem primeru. Kada korisnik prosledi formu, podaci iz nje
se alju fajlu specificiranom pod atributom action u tagu <form> (to je u
ovom primeru sm taj fajl).
1 <html>
2 <body>
3 <form method="post" action="<?php echo $_SERVER[PHP_SELF];?> ">
4 Name: <input type="text" name="fname">
5 <input type="submit">
6 </form>
7 <?php
8 if ($_SERVER["REQUEST_METHOD"] == "POST") {
9 // collect value of input field
10 $name = $_REQUEST[fname];
11 if (empty($name)) echo "Name is empty";
12 else echo $name;
13 }
14 ?>
15 </body>
16 </html>

Slino, $_POST i $_GET slue za sakupljanje podataka iz formi nakon njihovog


prosleivanja.

Pitanje 28 Prenos podataka sa klijenta na server.

Odgovor. Prenos podataka preko interneta poinje dogaajem. Dogaaj


moe biti rezultat interakcije oveka sa raunarom; npr. pokretanje brauzera
(klijentski program) i zahtevanje neke informacije (tipino HTML stranice)
koja se nalazi na udaljenom raunaru. Pored toga, dogaaj moe biti ge-
nerisan i instrukcijama u programu; npr. moe se automatizovati proces
preuzimanja i kaenja fajlova.
Recimo da je korisnik zahtevao HTML stranicu sa udaljenog raunara kori-
stei brauzer. Brauzer trai udaljeni ruter i, kada ga pronae, predaje zahtev
programu koji se naziva server na udaljenom raunaru. Server onda prove-
rava zahtev i pokuava da locira HTML fajl na disku i kada ga nae, alje
ga nazad. Ako stranica uz sebe ima i multimedijalan sadraj (slike, video,
audio) informacije o njima se takoe alju brauzeru.
Kada primi podatke od servera, klijent (u ovom sluaju brauzer) prikazuje
veb-stranicu. Server nema uinka u samom priakzu on samo prosleuje
podatke. Nakon prenosa svih informacija, veza izmeu klijenta i servera se
gubi. Ako klijent ponovo zahteva iste podatke, ceo ciklus e se odviti iznova;
Lazar Ljubenovi 33

ovo znai da je klijent-server interkacije stejtles, jer svaki novi zahtev kao
rezultat ima novi odgovor.

Pitanje 29 PHP, klase i objekti.

Odgovor. Osnovna definicija klase poinje kljunom reju class , za kojom


sledi ime klase, zatim par vitiastih zagrada koji obuhvata definicije svojstava
i metoda koje pripadaju klasi. Ime klase moe biti bilo koja validna labela,
pod uslovom da nije rezervisana re PHP-a. Validno ime klase poinje slovom
ili donjom crtom, i zatim sledi bilo koji broj cifara, slova i donjih crta. Klasa
moe da sadri svoje konstane, promenljive (svojstva) i funkcije (metode).
Pseudo-promenljiva $this je dostupna kada se metoda zove iz konteksta
nekog objekta. $this je referenca na objekat koji se zove (oino objekat
kome metoda pripada).
1 <?php
2 class SimpleClass
3 {
4 // deklaracija svojstva
5 public $var = podrazumevana vrednost;
6
7 // deklaracija metode
8 public function displayVar() {
9 echo $this->var;
10 }
11 }
12 ?>
Instanca klase se kreira korienjem kljune rei new . Objekat e se uvek
kreirati osim ako objekat ima definisan konstruktor koji moe da baci izuzetak
zbog greke. Klase treba da budu definisane pre instanciranja.
1 <?php
2 $instance = new SimpleClass();
3
4 // Moe i pomou stringa.
5 $className = SimpleClass;
6 $instance = new $className(); // new SimpleClass()
7 ?>
Konstruktor se definie korienjem magine metode __construct . Moe se
definsiati i destruktor ( __destruct ) koji se poziva kada vie nema referenci
na odreeni objekat, ili tokom sekvence gaenja, u bilo kom redosledu.
Vizibilitet svojstva ili metode se moe definisati prefiksom u deklaraciji,
korienjem kljunih rei public (javni), protected (zatieni) i private
(privatni). Svojstva klase se moraju definisati kao javni, zatieni ili privatni.
34 Lazar Ljubenovi

Ako se svojstvo deklarie pomou var , ili se funkciji izostavi prefiks, bie
definisani kao javni. Objekti istog tipa e imati pristup privatnim i zatienim
lanovima jedni drugih iako nisu deo iste instance.

Pitanje 30 PHP, nasleivanje.

Odgovor. Klasa moe da nasledi metode i svojstva druge klase korienjem


kljune rei extends u deklaraciji klase. Nije mogue naslediti vie klasa;
klasa moe da ima samo jednu osnovnu klasu.
Nasleene metode i svojstva se mogu preklopiti njihovom ponovnom de-
klaracijom sa istim imenom definisanim u roditeljskoj klasi. Meutim, nije
mogue preklopiti metodu koja je u roditeljskoj klasi definisana kao final .
Pristup preklopljenim metodama ili statikim svojstvima je mogu korie-
njem parent:: . Kod preklapanja metoda, potpis parametara treba da ostane
isti, inae e PHP generisati E_STRICT greku. Ovo ne vai i za konstruktore;
doputeno je preklapanje korienjem razliitih parametara.
Roditeljski konstruktori se ne zovu implicitno ako nasleena klase definie
konstruktor. Potrebno je nainiti eksplicitni poziv parent::__construct()
unutar konstruktora nasleene klase. Ako nasleena klasa ne definie kon-
struktor, on e biti nasleen kao i svaka druga metoda iz roditeljske klase,
sem ako nije deklarisan kao privatni.

Pitanje 31 ORM alati.

Odgovor. ORM (Object-Relational Mapping) je programska tehnika za


pretvaranje podataka u objektno-orijentisanim programskim jezicima izmeu
meusobno nekompatiblnih struktura. Na ovaj nain se kreira virtuelna
objektna baza podataka koja se moe koristiti iz programskog jezika.
U objekto-orijentisanom programiranju, upravljanje podacima bazira se na
objektno-orijentisanim objektima koji su skoro uvek neskalarne veliine. Na
primer, stavka u adresaru reprezentuje jednu osobu, koja ima nula ili vie
brojeva telefona, i nula ili vie adresa. Ovo se u objekto-orijentisanom modelu
moe implementirati definisanjem objekta Person koji ima atribute koji dre
podatke o njemu: ime osobe, lista brojeva telefona i lista adresa. Lista
brojeva telefona bi u sebi sadrala objekte PhoneNumber, i tako dalje. Stavka
u adresaru se tretira kao jedan objekat od strane programskog jezika, i moe
mu se pristupiti jednom promenljivom (na primer, pokazivaem koji pokazuje
na objekat). Nad ovim objektom se mogu primenjivati razliite metode, npr.
vraanje podrazumevanog broja telefona, itd.
Lazar Ljubenovi 35

Meutim, mnogi popularni alati za rad sa bazama podataka, kao to je SQL


DBMS, mogu da uvaju i manipuliu samo skalarnim veliinama kao to su
celi brojevi i stringovi, organizovani u tabele. Programer mora ili da konver-
tuje vrednosti objekata u grupe sa jednostavnijim vrednostima za uvanje
u bazi (i da ih ponovo konvertuje pri upisu nazad), ili da koristi samo jed-
nostavne skalarne vrednosti u programu. Objektno-orijentisano mapiranje
implementira prvi prilaz.
Srce problema lei u prevoenju logike reprezentacije objekata u atominu
formu koju je mogue skladititi u bazi podataka, odravajui pritom svojstva
objekata i njihove veze tako da se mogu ponovo uitati kao objekiti kada se
za tim javi potreba. Ako se implementira ova funkcionalnost za pribavljanje
i skladitenje, za objekte se kae da su perzistentni.
1 // Bez mapiranja
2 String sql = "SELECT ... FROM persons WHERE id = 10";
3 DbCommand cmd = new DbCommand(connection, sql);
4 Result res = cmd.Execute();
5 String name = res[0]["FIRST_NAME"];
6

7 // Sa mapiranjem
8 Person p = repository.GetPerson(10);
9 String name = p.getFirstName();

Veb-servisi
Pitanje 32 Veb-servisi.

Odgovor. W3C definie veb-servis kao softverski sistem dizajniran tako da


podri interoperabilnu interakciju izmeu maina preko mree. Za razmenu
podatka se koristi XML ili JSON.
Veb-servis obino prua objektno-orijentisani interfejs serveru baze podataka,
koji se koristi od strane drugog veb-servera ili mobilne aplikacije, koji nudi
korisniki interfejs krajnjem korisniku. Poznati primeri su Google Maps API
i EBay Shopping API.
Veb-servisi mogu biti SOAP (Simple Object Access Protocol, tipian primer
service1.getPerson() ) ili REST (Representational State Trasnfer, tipian
primer http://example.com/persons ).
36 Lazar Ljubenovi

Pitanje 33 RESTful servisi.

Odgovor. REST (Representational State Transfer) je arhitekturni stil


koji se sastoji od koordiniueg skupa komponenti, konektora i elemenata
u distribuiranom hipermedija sistemu, gde je fokus na ulogama komponenti
i odreenom skupu interakcija meu elementima, a ne na implementacio-
nim detaljima. REST je arhitekturni obrazac koji se koristi na WWW-u.
Predstavio ga je Roj Filding 2000. godine.
Ima za svrhu da pobolja sledee:
performanse interakcija komponenti moe biti dominantan faktor
u korisnikovom doivljaju o performansama,
prilagodljivost (skalabilnost) treba da moe da podri veliki broj
komponenti i interakcija meu njima,
jednostavnost interfejsa,
promenljivost (modifikabilnost) komponenti kako bi se udovoljilo za-
htevima za promenama, ak i dok je aplikacija pokrenuta,
vidljivost (vizibilitet) komunikacije meu komponentama od strane
servisnih agenata,
prenosivost (portabilnost) komponenti prenoenjem programskog koda
sa podacima, i
pouzdanost, tj. otpornost na otkaz na nivou celog sistema u prisustvu
otkaza njegovih pojedinih komponenti, konektora ili podataka.
U REST arhitekturi, REST server samo prua pristup resursima, a REST kli-
jent pristupa i predstavlja resurse. Svaki resurs je identifikovan preko URI-ja
ili preko globalnog ID-ja. Na primer, URI /UserService/users prosleene
preko GET moe da vrati listu svih korisnika, dok navoenje konkretnog pa-
rametra (/UserService/users/1) moe da vrati konkretnog korisnika (sa
ID-jem 1).
REST koristi razne reprezentacije za predstavljanje resursa, kao to su tekst,
JSON ili XML. Danas je JSON najpopularniji format.
Za veb-aplikacije koje su u skladu sa gorenavedenim osobinama se kae da
su RESTful.

Pitanje 34 SOAP servisi.


Lazar Ljubenovi 37

Odgovor. SOAP (Simple Object Access Protocol) je protokol rau-


narskih mrea za razmenu struktuiranih informacija u implementaciji veb-
servisa. Koristi XML Information Set kao format poruka. Za transmisiju
i pregovore se oslanja na protokole apliaktivnog nivoa, najee HTTP ili
SMTP.

SOAP moe biti osnovni sloj za stek protokola veb-servisa, jer moe da prui
osnovni frejmvork za razmenu poruka veb-servisima. Baziran je na XML-u i
sastoji se od tri dela:

koverta, koja definie strukture poruke i nain na koji se one obrauju,

skup pravila za ifrovanje za iskazivanje instanci tipova podataka


definisanih od strane aplikacije i

konvenciju za reprezentaciju poziva procedura i odgovora.

Tri glavne karakteristike SOAP-a su sledee:

proirljivost,

neutralnost (moe koristiti bilo koji protokol za transport, kao to su


HTTP, SMTP, TCP, UDP, itd) i

nezavisnost (dozvoljava bilo koji programski model).

Na primer, aplikacija moe da poalje SOAP zahtev serveru na kome su


omogueni veb-servisi kao to je baza podataka sa cenama nekretnina
sa parametrima pretrage. Server zatim vraa SOAP odgovor (dokument
formatiran kao XML koji sadri rezultate), npr. cenu, lokaciju i osobine.
Kako generisani podaci dolaze u standardizovanom formatu koji maine mogu
parsirati, aplikacija koja je pruila zahtev moe direktno integrisati odgovor.
38 Lazar Ljubenovi

1 POST /InStock HTTP/1.1


2 Host: www.example.org
3 Content-Type: application/soap+xml; charset=utf-8
4 Content-Length: 299
5 SOAPAction: "http://www.w3.org/2003/05/soap-envelope"
6
7 <?xml version="1.0"?>
8 <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
9 <soap:Header>
10 </soap:Header>
11 <soap:Body>
12 <m:GetStockPrice xmlns:m="http://www.example.org/stock/Surya">
13 <m:StockName>IBM</m:StockName>
14 </m:GetStockPrice>
15 </soap:Body>
16 </soap:Envelope>

Prednosti SOAP-ova neutralnost ga ekspliticno ini pogodnim za korie-


nje sa bilo kojim transportnim protokolom. Implementacije esto koriste
HTTP, ali se mogu koristiti i drugi (SMTP). SOAP, kada se kombinuje sa
HTTP post/odgovor razmenama, lako kanalie kroz postojee fajervolove i
proksije, i stoga ne zahteva modifikaciju iroko rasprostranjenih komunikaci-
onih infrastruktura koje ve postoje za obradu HTTP razmena.

Mane Kada se koriste standardne implementacije i podrazumevane kom-


binacije SOAP/HTTP, XML infoset je serijalizovan kao XML. Ako je ne-
ophodno ugraditi binarne objekte u XML, radi boljih performansi se koristi
MTOM (Message Transmission Optimization Mechanism).

Pitanje 35 RPC.

Odgovor. RPC (Remote Procedure Call) je opis situacije u kojoj kompju-


terski program primorava izvrenje procedure u drugom adresnom prosotru
(esto na drugom raunaru u mrei), pri emu je kod napisan kao da se
radi o klasinom (lokalnom) pozivu procedure, odnosno pri emu programer
nije u dunosti da eksplicitno kodira detalje takve udaljene konekcije. Dru-
gim reima, programer pie isti kod bilo da se procedura poziva lokalno u
odnosu na program koji se izvrava, ili ne. Ovo je primer klijent-server in-
terakcije (pozivalac je klijent, izvrilac je server), i obino se implementira
sistemom za razmenu poruka zahtev-odgovor. Pandam RPC-u u objektno-
orijentisanom programiranju je RMI (Remote Method Invocation).
Lazar Ljubenovi 39

RPC-ovi su vrsta inter-procesne komunikacije (IPC), u kojoj razliiti procesi


imaju razliite adresne prostore: ako su na istoj maini, imaju razliite vir-
tuelne adresne prostore i pored toga to je fiziki adresni prosotor isti; ako
su na razliitm hostovima, fiziki adresni prostor je razliit.
RPC zapoinje klijent, koji alje poruku poznatom udaljenom serveru u kojoj
nalae izvrenje specificirane procedure koristei priloene parametre. Uda-
ljeni server alje odgovor klijentu, i aplikacija nastavlja svoj proces. Dok
server obrauje poziv, klijent je blokiran (eka dok mu server ne odgovori),
osim ako je zahtev bio poslat asinhrono, kao to je XHTTP poziv.
Vana razlika izmeu udaljenih poziva procedura i lokalnih poziva jeste to to
RPC moe da ne uspe zbog nepredvienih problema sa mreom. Sem toga, u
optem sluaju, pozivalac mora da se nosi sa takvim padovima neznajui da li
je udaljena procedura uopte pozvana. Idempotentne procedure (procedure
koje nemaju dodatne efekte ako se pozovu vie od jedanput, npr. metoda
DELETE) ne predstavljaju problem, ali ostale procedure ostaju problem.
Sekvenca dogaaja tokom RPC-a je sledea.
1. Klijent poziva klijentski stab (stub). To je deo koda koji se koristi za
konvertovanje parametara koji se prenose tokom RPC-a. Na primer,
to moe biti prevoenje celih brojeva iz adresiranja glave u adresiranje
repa. Ovaj poziv je klasian lokalni poziv procedure, i parametri se
potavljaju na stek na uobiajen nain.
2. Klijentska stab procedura pakuje parametre u poruku i inicira sistem-
ski poziv kako bi se poruka poslala. Pakovanje parametara se naziva
maraling (marshalling).
3. Klijentov lokalni operativni sistem alje poruku od klijentske maine
ka serverskoj maini.
4. Lokalni operativni sistem na serveru maine prenosi dobijene pakete na
serverski stab.
5. Serverski stab raspakuje parametre iz poruke (tzv. demaraling).
6. Konano, serverski stab poziva proceduru. Odgovor prati iste korake,
samo u obrnutom redosledu.

Pitanje 36 Java, opte.

Odgovor. Java je raunarski programski jezik opte namene. Konkurentan


je, baziran na klasama, objektno-orijentisan i posebno dizajniran tako da ima
40 Lazar Ljubenovi

to je manje mogue implementacionih zavisnosti. Napisan je s namerom da


dozvoli pisanje kodova pod mantrom napii jednom, pokreni svuda (write
once, run anywhere, WORA), to znai da iskompajliran Java kod moe
da se porkene na svim platformama koje podravaju Javu, bez potrebe za
rekompajliranjem. Java aplikacije se obino kompjaliraju u bajtkod koji se
moe pokrenuti na svakoj Java virtuelnoj maini (JVM), bez obzira na
arhitekturu raunara. Prvu verziju je razvio Sun Microsystems 1995. godine,
a od 2010. godine je vlasnitvo korporacije Oracle.
Sintaksa Jave umnogome podsea na C++. Ipak, dok C++ kombinuje sin-
taksu za strukturno, generiko i objektno-orijentisano programiranje, Java je
izgraena s namerom da bude iskljuivo objektno-orijentisani jezik. Sav
kod se pie unutar klasa. Svaki podatak je objekat (nema pokazivaa), izuzev
primitivnih tipova podataka (celi brojevi, brojevi s pokretnom zapetom, lo-
gike vrednosti i karakteri), koji nisu objekti zbog performansi. Pored toga,
Java ne podrava preklapanje operatora niti viestruko nasleivanje klasa,
mada je viestruko nasleivanje interfejsa (tzv. implementacija interfejsa)
dozvoljena. Ima automatsko upravljanje memorijom, tj. postoji garbage col-
lector.
Primer Hello, world! programa je dat u nastavku.
1 class HelloWorldApp {
2 public static void main(String[] args) {
3 // tampa string u konzolu.
4 System.out.println("Hello World!");
5 }
6 }

Pitanje 37 Java virtuelna maina.

Odgovor. Virtuelna maina predstavlja simulaciju maine koja se obino


razlikuje od ciljne maine. Virtuelne maine mogu biti zasnovane na specifi-
kacijama hipotetikog raunara ili mogu da emuliraju arhitekturu raunara
i funkcije stvarnog kompjutera.
JVM (Java Virtual Machine) je apstraktna maina za izraunavanje koja
omoguuje raunaru da pokrene Java program. Postoje tri predstave JVM-a:
specifikacija, implementacija i instanca.
Specifikacija je dokument koji formalno opisuje ta se zahteva od JVM im-
plementacije. Postojanje jedinstvene specifikacije obezbeuje to da su sve
implementacije interoperabilne. Specifikacija namerno obilazi implementaci-
one detalje koji nisu od vanosti za interoperatiblnost, npr. algoritam koji se
Lazar Ljubenovi 41

koristi za garbage collection. JVM implementacija je raunarski program


koji ispunjava zahteve postavljene JVM specifikacijom. Instanca JVM-a je
implementacija pokrenuta u vidu procesa koji izvrava raunarski program
iskompajliran u Java bajtkod.

JRE (Java Runtime Environment) je softverski paket koji sadri sve to je


potrebno za pokretanje Java programa. Sadri implementaciju JVM-a za-
jedno sa implementacijom JCL-a (Java Class Library). JDK (Java Develop-
ment Kit) je nadskup JRE-a i sadri alte za Java programere, npr. kompajler
javac.

Jo od ranih faza razvitka, Java (i JVM) je reklamirana kao veb-tehnologija


za kreiranje RIA (Rich Internet Applications). Na klijentskoj strani, bra-
uzeri mogu biti nadograeni NPAPI Java plaginom koji izvrava takozvane
Java aplete ugreene u HTML stranice. Apletu je doputeno crtanje u
pravougaonom prostoru stranice koji mu je dodeljen i koristi ogranien skup
API-ja koji npr. pruaju mogunost korienja mikrofona ili 3D hardverske
akseleracije. Java apleti su po performansama i mogunostima bili superi-
orniji od JavaScripta sve do 2011, kada su JavaScript endini u brauzerima
postali znaajno bri (izmeu ostalog zbog JIT-a) i kada je HTML5 poeo
da obogauje JavaScript novim API funkcijama.

Od aprila 2014, Google Chrome ne doputa korienje NPAPI plagina. Mo-


zilla Firefox e takoe zabraniti koriene NPAPI-ja krajem 2016. Oracle je
januara 2016. objavio da e plagin biti zvanino ukinut uz izdanje Jave 9.

Pitanje 38 Java biblioteke.

Odgovor. Java biblioteke se mogu svrstati u tri grupe.

Osnovne biblioteke slue za rad sa kolekcijama (liste, stabla, redovi,


dekovi), za obradu XML-a, za bezbednost i za lokalizaciju.

Biblioteke za integraciju se koriste za rad sa bazom (JDBC, Java


DataBase Connectivity), za pretragu i otkrivanje (JNDI, Java Naming
and Directory Interface), za rad u distribuiranom okruenju (RMI i
CORBA) i za monitoring aplikacija (JMX).

Od GUI biblioteka, najdominantnije su AWT (Abstract Window To-


olkit) i Swing.

Sledi spisak nekih esto korienih biblioteka, sa nekim esto korienim kla-
sama i interfejsima iz njih.
42 Lazar Ljubenovi

java.lang se koristi za sve osnobne klase koje se automatski (impli-


citno) importuju (sadri klase String , Integer , Double , Byte , Long ,
Math , Short , Thread , Void , itd).

java.util sadri mnoge korisne strukture podataka ( Collection<E> ,


Enumeration<E> , Iterator<E> , Map<K, V> , Observer , Set<E> , SortedSet<E> ,
itd).
java.io se koristi za itanje fajlova na niskom nivou, dok je osnovna
podrka za itanje je dostupna iz java.util.Scanner .
java.math se koristi za matematike operacije sa proizvoljnom tanou
( BigDecimal , BigInteger , itd).
java.net se koristi za sokete, konekcije, itd ( SocketOption<T> , ProtocolFamily ,
CookieStore , URLStreamHandlerFactory , itd).

javax.swing sadri komponente za crtanje, tj. za kreiranje GUI-ja


(npr. Action , Icon , MenuElement , Painter<T> , Box , ButtonGroup ,
JToggleButton , ProgressMonitorInputSteram , itd).

Pitanje 39 JavaBeans

Odgovor. JavaBeans su klase koje enkapsuliraju mnoge objekte u jedan


(zrno, bean). Svaka klasa koja ima sledee tri karakteristike smatra se da
poutje Beans standard:
mogu se serijalizovati (ovo omoguava aplikacijama i frejmvorcima da
pouzdano uvaju, skladite i itaju stanje zrna na nain koji je potpuno
nezavistan od VM-a i platforme),
imaju podrazumevani konstruktor (konstruktor bez argumenata) i
doputaju pristup svojstvima samo preko set i get (ili is za logike
promenljive) metoda (potujui konvencije o imenovanju ovih metoda,
omoguena je automatska inspekcija zrna iz editora).

Prednosti Svojstva, dogaaji i metode u zrnu koje su dostupne drugim


aplikacijama se mogu kontrolisati. Sem toga, zrno moe da registruje i prima
dogaaje od drugih objekata, kao i da generie dogaaje koji se mogu po-
slati drugim objektima. Konfiguraciona podeavanja zrna se mogu trajno
sauvati i obnoviti.
Lazar Ljubenovi 43

Mane Klasa sa konstruktorom bez argumenata moe biti inicijalizovana


u nevalidnom stanju. Ako takvu klasu progarmer instancira runo (a ne
automatski, putem nekog frejmvorka), programer moda ne shvati da ju je
nepravilno inicijalizovao. Kompajler ne moe da detektuje takav problem,
ak i ako je on dokumentovan. Pored toga, kreiranje getera i setera za svako
svojstvo vodi do mnogo bojlerplejt koda.
Primer JavaBean klase i njena upotreba u JSP-u je dat u nastavku.
1 package player;
2
3 public class PersonBean implements java.io.Serializable {
4 private String name = null;
5 private boolean awesome = false;
6
7 public PersonBean() {
8 }
9
10 public String getName() { return name; }
11 public void setName(final String value) {
12 name = value;
13 }
14
15 public boolean isAwesome() { return awesome; }
16 public void setAwsome(final boolean value) {
17 awesome = value;
18 }
19 }

1 <% // Use of PersonBean in a JSP. %>


2 <jsp:useBean id="person" class="player.PersonBean" scope="page"/>
3 <jsp:setProperty name="person" property="*"/>
4
5 <html>
6 <body>
7 Name: <jsp:getProperty name="person" property="name"/><br/>
8 Awesome? <jsp:getProperty name="person" property="awesome"/><br/>
9 <br/>
10 <form name="beanTest" method="POST" action="testPersonBean.jsp">
11 Enter a name: <input type="text" name="name" size="50"><br/>
12 Choose an option:
13 <select name="awesome">
14 <option value="false">Very awesome</option>
15 <option value="true">Not really awesome at all</option>
16 </select>
17 <input type="submit" value="Test the Bean">
18 </form>
19 </body>
20 </html>
44 Lazar Ljubenovi

Pitanje 40 JSP.

Odgovor. JSP (JavaServer Pages) je serverska tehnologija koja pomae


developerima da kreiraju dinamiki generisane veb-stranice bazirane na HTML-
u, XML-u ili drugim vrstama dokumenata. Izdat je 1999. godine od strane
Sun Microsystems, i slian je PHP-u i ASP-u, ali koristi programski jezik
Java. Za pokretanje JSP-a neophodan je veb-server sa servlet4 kontejnerom,
kao to je Apache Tomcat ili Jetty.

S arhitekturne take gledita, JSP se moe posmatrati kao apstrakcija Java


servleta na visokom nivou. JSP-ovi se prevode tokom izvrenja; svaki JSP
servlet se keira i ponovo se koristi sve dok se prvobitni JSP ne izmeni. JSP
se moe koristiti nezavisno ili kao view komponenta MVC modela, pri emu
JavaBeans obino predstavlja model, a Java servlet kontroler. Ovo je vrsta
Model 2 arhitekture.

JSP dozvoljava da Java kd i neke predefinisane akcije budu izmeane sa


statikim obeleenim sadrajem, kao to je HTML; pri tome se rezultujua
stranica kompajlira i izvrava na serveru, iji je rezultat gotova HTML stra-
nica. Kompajlirane stranice, kao i Java biblioteke od kojih kd zavisi, sadre
Java bajtkod, a ne mainski kod. Kao i svaki drugi Java program, moraju se
izvriti unutar JVM-a koji interaguje sa operativnim sistemom instaliranim
na serveru. Na taj nain je obezbeeno apstraktno okruenje nezavisno od
platforme.

JSP se obino koristi za generisanje HTML i XML dokumenata, ali se pomou


klase OutputStream mogu dobiti i drugi tipovi podataka.

Koristi se nekoliko delimitera za pisanje skripti (funkcija). Najosnovniji


su <% i %>, koji omeuju JSP skriptlet. Skriptlet je deo Java koda koji
se pokree kada korisnik uputi zahtev za stranicom. Pored njega, esto se
koriste i <%= i %> za izraze, gde se skriptlet i delimiteri koji ga okruuju
zamenjuju rezultatom koji daje navedeni izraz; koriste se i <%@ i %> kojima
se obeleavaju direktive.

Java kod ne mora da se ceo nae u jednom bloku omeenom delimiterima,


to pokazuje sledei primer.

4
Servleti su programi koji proiruju funkcionalnost servera. Iako mogu da obrade bilo
koji tip zahteva, najee implementiraju aplikacije na veb-serveru.
Lazar Ljubenovi 45

1 <p>Brojanje:</p>
2 <% for (int i = 0; i <3; i++) { %>
3 <p>Ovaj broj je <%= i %>.</p>
4 <% } %>
5 <p>Gotovo.</p>

Pitanje 41 Java apleti.

Odgovor. Java aplet je mala aplikacija napisana u Javi, dostavljena korisni-


cima u obliku bajtkoda. Korisnik pokree Java aplet iz veb-stranice, aplet se
izvrava u JVM-u u procesu koji je odvojen od samog brauzera, slino kao
Adobe Flash. Java aplet se moe pojaviti u frejmu na stranici ili kao novi
aplikacioni prozor. Zahtevaju da korisnik ima instaliran JRE.

Java apleti su predstavljeni jo uz prvu verziju programskog jezika Java,


1995. godine. Mogu se napisati u bilo kom programskom jeziku koji se moe
iskompajlirati u Javin bajtkod. Mada je to najee Java, mogu se koristiti
i Jython, JRuby, Pascal, Scala ili Eiffel.

Java apleti se izvravaju veoma brzo, i do 2011. su bili nekoliko puta bri od
JavaScripta. Za razliku od JavaScripta, apleti imaju pristup 3D hardverskoj
akseleraciji (ubrzanju), to ih ini idealnim za netrivijalne i raunski zahtevne
vizuelzacije. Meutim, brauzeri su dobili podrku za hardverom ubrzanu
grafiku zahvaljujui kanvas tehnologiji (konrektno WebGL za 3D grafiku),
kao i JIT kompajlere za JS, pa je razlika u brzini postala manje primetna.

Sledei primer ilustruje korienje Java apleta kroz paket java.applet. Pri-
mer koristi klase iz Javinog AWT-a (Abstract Window Toolkit) za ispisivanje
poruke Hello, World!.
1 import java.applet.Applet;
2 import java.awt.*;
3
4 // Ovaj fajl treba da se snimi pod imenom "HelloWorld.java".
5 // Nasleuje se objekat Applet.
6 public class HelloWorld extends Applet {
7
8 // Crtanje po ekranu.
9 public void paint(Graphics g) {
10 // Ispis stringa na poziciji (20, 10).
11 g.drawString("Hello, world!", 20, 10);
12 // Crtanje kruga na poziciji (40, 30).
13 g.drawArc(40, 30, 20, 20, 0, 360);
14 }
15 }
46 Lazar Ljubenovi

Posle kompajliranja, rezultujua .class datoteka se moe postaviti na verb-


serveru i pozvati iz HTML-a koristei tag <applet> ili <object> .
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>HelloWorld_example.html</title>
5 </head>
6 <body>
7 <h1>Primer Java apleta</h1>
8 <p>Evo ga aplet:
9 <applet code="HelloWorld.class" height="40" width="200">
10 Ovde se izvrava HelloWorld.class.
11 </applet>
12 </p>
13 </body>
14 </html>

Pitanje 42 JSP Model 2 arhitektura.

Odgovor. JSP Model 2 je kompeksni projektni obrazac koji se koristi pri


projektovanju Java veb-aplikacija, u kome se prikaz sadraja odvaja od logike
kojom se pribavljaju podaci i njima manipulie.
Kako Model 2 razdvaja logiku i prikaz, esto se povezuje sa MVC paradig-
mom. Mada taan oblik modela iz MVC-a nikad nije precizno definisan
prema Modelu 2, veliki broj publikacija predlae formalizovani sloj koji sa-
dri kd MVC modela. Model 2 se preporuuje za aplikacije srednje i vee
veliine.
U Model 2 aplikacijama, zahtevi iz brauzera klijenta se prenose kontroleru.
Kontroler obavlja logiku kojom pribavlja sadraj koji treba prikazati. Zatim
taj sadraj stavlja u zahtev (obino u obliku JavaBeana) i odluuje kojem
pogledu e proslediti zahtev. Pogled zatim renderuje sadraj koji mu je
prosledio kontroler.

You might also like