This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA
i
označava početak novog paragrafa, što može značiti umetanje jedne prazne linije ili uvlačenje prve linije novog paragrafa. Konačno, tag
nalaže pretraživaču da tekst i box polja koja slede prikaže u novoj linij. Uz pomoć tag
i sličnih, autor forme može da kontroliše raspored polja i teksta na formi. Sledeća linija forme definiše polja za unos adrese i mesta stanovanja kupca. Prvo polje je veličine 40, a drugo 14 karaktera. Naredna linija predviđena je za unos podataka o kreditnoj kartici koju kupac koristi za plaćanje. Za broj kartice i datum kada ističe važenje kartice koriste se polja
43
Poglavlje 6 Statički Web dokumenti
za unos teksta, dok se tip kartice bira pomoću novog tipa polja, tzv. radio dugmeta. Radio dugmad se koriste kada treba obaviti izbor između dve ili više alternativnih opcija.
Slika 6.3 3 (a) HTML kod forme; (b) prikaz forme
VERZIJA HTML 4.0 U verziji HTML 4.0 uvedene u dodatne mogućnosti, kao što su podrška za olakšano korišćenje Web stranica osobama sa hendikepom, ugradnja objekata, podrška za skript jezike i druge. U slučajevima kada je Web sajt složen i sadrži veliki broj stranica koje kreiraju različiti autori koji rade za istu kompaniju, poželjno je da postoji način za unifikaciju izgleda (stila) različitih stranica. Ovaj problem se može rešiti korišćenjem kaskadnih style sheet-ova - CSS. Stranice koje se oslanjaju na pridruženi style sheet ne moraju više da sadrže isključivo tzv. fizičke stilove (kao što su npr. za bold ili zaitalic). Umesto toga, autori koriste logičke stilove definisane u style sheet-u; npr.
44
Poglavlje 6 Statički Web dokumenti
Forme HTML 1.0 je omogućavo samo jednosmernu komunikaciju. Korisnik je mogao da dobije traženu stranicu od servera, ali je teško mogao da vrati nazad povratnu informaciju. Kako je sve veći broj komercijalnih organizacija počinjalo da korisni Web, tako su rasli zahtevi za dvosmernim saobraćajem. Na primer, javila se potreba za popunjavanjem narudžbenica preko Web-a, registracijom korisnika, postavljanjem upita za pretraživanje baze podataka itd. Ovi i slični zahtevi doveli su do uvođenja formi, već u verziji HTML 2.0. Forme sadrže box polja (ili dugmad) koja korisnik može da popuni traženim podacima ili učini izbor između više ponuđenih opcija i unetu informaciju vrati vlasniku stranice. Za ovu namenu koristi se tag . Ovaj tag poseduje veći broj parametara uz pomoć kojih se reguliše veličina, priroda i upotreba polja. Nejčešće se koriste polja za unos teksta, kvadrati za štikliranje, aktivne mape i dugme Submit.
JOŠ O PRAVLJENJU FORMI U pretraživaču, radio dugme se prikazuju na način koji omogućava korisniku da klikom na dugme može da izabere ili poništi izbor odgovarajuće opcije. Radio dugmad se koriste i za izbor tipa poveza. Sva radio dugmad sa istim imenom pripadaju istoj grupi. Tako, sva radio dugmad za izbor tipa kreditne kartce imaju ime ´cc´, a ona za tip poveza ime ´povez´. Parametar value (vrednost) se koristi za indikaciju koje radio dugme je izabrano. Na primer, zavisno od toga koji tip kreditne kartice je izabran, promenljiva cc dobiće jednu od dve vrednosti ˝mastercard˝ ili ˝visacard˝. Posle grupe radio dugmadi za izbor poveza, sledi opcija za isporuku brzom poštom, predstavljena tzv. kvadratom za štikliranje (checkbox). Kvadrat za štikliranje može biti uključen ili isključen. Za razliku od radio dugmadi gde samo jedno dugme iz grupe može biti izabrano, svaki kvadrat za štikliranje se postavljaju nezavisno od ostlih. Polje za unos teksta, radio dugme i kvadrat za štikliranje su tri tipa taga . Tip se navodi kao vrednost parametra type, npr. type=radio ili type=checkbox. Polje za unos teksta je podrazumevani tip i zbog toga nije nepohodo navoditi parametar type. Postoje još dva tipa taga , tipovi password i textarea. Tip password, koji se obično koristi za unos lozinke, identičan je polju za unost teksta, osim što se ne ispisuju karakteri koji se kucaju, već se svaki uneti karakter predstavlja istim znakom, npr. *. Tip textarea je takođe varijanta polja za unos teksta, koja, za razliku od osnovnog tipa može sadržati više linija teksta. Poslednje polje na formi sa slike je Submit dugme sa natpisom ˝narucivanje˝. Klikom na ovo dugme, informacije unete na formu se šalju nazad na server od kojeg je Web stranica dobijena. Submit dugme se definiše vrednošću submit parametra type. Vrednost parametra value predstavlja tekst koji se prikazuje kao natpis dugmeta. Kada korisnik klikne na Submit dugme, pretraživač pakuje informacije prikupljene sa forme u jednu dugačku liniju i šalje je serveru na obradu. Znak & se koristi za razdvajanje polja, a znak + predstavlja razmak. Na primer, za formu sa slike, linija koja se šalje serveru može biti oblika:
45
Poglavlje 6 Statički Web dokumenti
kupac=Petar+Petrovic&ulica=Beogradska+14&mesto=Nis&cardno=1234567890&istice=9/ 07&cc =mastercard&povez=tvrdi&express=on Na serveru je da protumači dobijeni string i preduzme odgovarajuće akcije.
46
Poglavlje 7 XML i XSL XML - POBOLJŠANJE HTML-A Organizacija W3C, koja se bavi razvojem Web-a i standardizacijom protokola za Web, razvila je poboljšanje HTML-a koje omogućava struktuiranje Web stranice. HTML, sa ili bez formi, ne bavi se struktuiranjem podataka na Web stranici niti razdvaja sadržaj od formatiranja. Sa pojavom naprednih Web aplikacija, kao što su aplikacije za elektronsku trgovinu (e-commerce), javila se potreba za struktuiranjem Web stranica i jasnim razdvajanjem sadržaja od načina prikazivanja (formatiranja). Na primer, zamislimo program koji pretražuje Web u potrazi za najjeftinijom knjigom ili CDom. Jedan takav program bi morao da analizira veliki broj Web stranica raznih sajtova za elektronsku trgovinu i da iz svake izdvoji naslove i cene knjiga ili CD-ova. Ako su Web stranice napisane u HTML-u, program će veoma teško moći da zaključi gde se na stranici nalazi tražena informacija. Konkretno, uvedena su dva nova jezika. Prvi, XML (eXtesible Markup Language) opisuje Web sadržaj na struktuirani način, dok drugi, XSL (eXtensible Style Language) opisuje formatiranje Web stranice nezavisno od njenog sadržaja. Budući da se radi o obimnim i složenim jezicima, u nastavku će biti izložena samo njihova osnovna ideja. Razmotrimo XML dokument sa Sl. 1. Dokument opisuje strukturu nazvanu book_list, koja predstavlja spisak knjiga. Za svaku knjigu u strukturi postoje tri polja: naslov (title), autor (author) i godina izdavanja (year). Napomenimo da XML omogućava kreiranje mnogo složenijih struktura od one prikazane na Sl. 1. Na primer, dozvoljeno je da struktura sadrži višestruka polja (npr. više od jednog autora knjige), opciona polja (npr. Naslov pratećeg CD-ROM-a), alternativna polja (npr. URL knjižare, ako knjiga nije rasprodata ili URL sajta za aukcijsku prodaju, ako je knjiga rasprodata). S obzirom na to da XML tagovi ukazuju na smisao informacije koje sadrže, XML dokument se može lako pretraživati, npr. da bi se pronašle sve knjige datog autora.
47
Poglavlje 7 XML i XSL
Slika 7.1 1 Primer Web stranice u XML-u
XSL - POBOLJŠANJE XML-A Da bi se definisao način formatiranja dokumenta, neophodan je još jedan fajl, book_list.xsl, napisan u jeziku XSL, koji će ˝objasniti˝ pregledavaču kako da prikaže podatke iz XML-a. Razmotrimo XML dokument sa Sl. 1. Dokument opisuje strukturu nazvanu book_list, koja predstavlja spisak knjiga. Za svaku knjigu u strukturi postoje tri polja: naslov (title), autor (author) i godina izdavanja (year). Napomenimo da XML omogućava kreiranje mnogo složenijih struktura od one prikazane na Sl. 1. Na primer, dozvoljeno je da struktura sadrži višestruka polja (npr. više od jednog autora knjige), opciona polja (npr. Naslov pratećeg CD-ROM-a), alternativna polja (npr. URL knjižare, ako knjiga nije rasprodata ili URL sajta za aukcijsku prodaju, ako je knjiga rasprodata). S obzirom na to da XML tagovi ukazuju na smisao informacije koje sadrže, XML dokument se može lako pretraživati, npr. da bi se pronašle sve knjige datog autora. U primeru sa Sl. 1, sadržaj svakog od tri polja, autor, naslov i godina, se tretira kao nedeljiva informacija. Međutim, ako je potrebno, recimo radi preciznije pretrage, dozvoljeno je polja razložiti na podpolja. Na primer, polje za ime autora, se može podeliti na dva podpolja, jedno za ime a drugo za prezime autora: author>
Andrew
Tanenbaum
Uvedena podela polja author omogućava pretraživanje samo po imenu ili samo po prezimenu autora. U opštem slučaju dubina podele može biti proizvoljna. Dokument sa Sl. 13 sadrži spisak od tri knjige. Međutim, sam dokument na govori ništa o tome kako jednu ovakvu Web stranicu treba prikazati u pretraživaču. ˝objasniti˝ pretraživaču kako da prikaže podatke iz XML dokumenta. Na Sl. 2 je prikazan primer XSL fajla za formatiranje XML dokumenta sa Sl. 1.
48
Poglavlje 7 XML i XSL
Slika 7.2 2 Primer XSL fajla
JOŠ O XSL–U Drugim rečima, pretraživač generiše HTML tabelu popunjenu podacima o svim knjigama iz XML dokumenta. U primeru sa Slike 14, sekcija: je analogna fornaredbi iz C-a, gde prva linija odgovara zaglavlju, pet unutrašnjih linija telu, a poslednja oznaci za kraj for petlje. Kada pretraživač, koji interpretira dati XSL fajl, on prolazi jedanput kroz petlju za svaku knjigu iz pridruženog XML dokumenta i u svakom prolasku generiše pet linija oblika: <xsl:value-of select=”title”/> <xsl:value-of select=”author”/> <xsl:value-of select=”year”/> naslov, autor, godina . Krajnji rezultat je isti kao da se prikazuje HTML stranica koja sadrži tabelu popunjenu podacima o tri knjige. Međutim, XML/XSL predstavlja daleko fleksibilnije rešenje. Na primer, ako je potrebno u spisak uvrstiti nove knjige, dovoljno je u XML dokument dopisati nova
49
Poglavlje 8 Dinamički i aktivni Web dokumenti DINAMIČKI DOKUMENTI Model Web-a opisan u prethodnim sekcijama podrazumeva da klijent šalje serveru ime fajla, a server odgovara slanjem klijentu statički sadržaj traženog fajla. U početnom periodu razvoja Web-a celokupan sadržaj dostupan na Web-u bio je statički (sadržan u fajlovima koji se bez bilo kakve modifikacije transportuju do klijenta). Međutim, u novije vreme, sadržaj koji se može preuzeti sa Web-a postaje u sve većoj meri dinamički, tj. ne postoji u unapred definisanom obliku, već se kreira na zahtev. Generisanje sadržaja Web stranica može se obaviti bilo na strani servera bilo na strani klijenta. U prvom slučaju, tzv. dinamički dokumenti, Web server, po prijemu zahteva, pokreće odgovarajući aplikacioni program koji kreira dinamički dokument, a klijentu vraća izlaz programa (Sl. 1 (a)).Drugim rečima, kao odgovor na svaki zahtev klijenta, na strani severa se kreira nova verzija HTML dokumenta. Krajnje jednostavan primer dinamičkog dokumenta je preuzimanje tekućeg vremena i datuma od servera. Vreme i datum su primer dinamičke (promenljive) informacije koja se menja iz momenta u moment. Na primer, klijent može da zahteva od servera da izvrši program koji čita sistemsko vreme serverskog računara. Program konvertuje informaciju o vremenu u tekst, formatira tekst pomoću HTML tagova i generisani HTML dokument predaje Web serveru koji ga vraća nazad klijentu.
Slika 8.1 1 (a) dinamički dokument; (b) aktivni dokument
50
Poglavlje 8 Dinamički i aktivni Web dokumenti
JOŠ O DINAMIČKIM DOKUMENTIMA Tradicionalni, i danas već zastareli način za procesiranje HTML formi i drugih interaktivnih Web stranica zasnovan je na sistemu koji se zove CGI (Common Gateway Interface). U drugom slučaju, tzv. aktivni dokumenti, Web stranica osim statičkog sadržaja (HTML, slike i sl.) sadrži i program koji se nakon učitavanja stranice izvršava na strani klijenta (u pretraživaču). Na primer, zamislimo da želimo da kreiramo Web stranicu koja sadrži animiranu grafiku ili interaktivni grafički interfejs. Sobzirom na to da HTML reguliše samo prikaz sadržaja stranice na ekranu pretraživača, neophodan je poseban program koji će kreirati animacije ili omogućiti neku specifičnu interakciju sa korisnikom. Takođe, jasno je da se takav jedan program mora izvršavati na računaru klijenta, tj. tamo gde se odvija interakcija sa korisnikom. Uvek kada klijent zahteva aktivni dokument od servera, server šalje kopiju dokumenta sa sadržanim program koji se po učitavanju izvršava u pretraživaču (Sl. 1 (b)). Potreba za generisanjem dinamičkih dokumenata na strani servera najlakše se može sagledati ako razmotrimo korišćenje HTML formi na ranije opisani način. Kada korisnik popuni formu i klikne na dugme Submit, pretraživač šalje serveru poruku sa sadržajem forme zajedno sa poljima koje je korisnik popunio. Očigledno, ova poruka nije ime fajla koji treba vratiti klijentu, već se sadržaj poruke prosleđuje odgovarajućem programu radi procesiranja. Obično, obrada na strani servera podrazumeva pristup bazi podataka (smeštenoj na hard disku servera) radi upisa dostavljenih podataka ili čitanja zapisa koji odgovaraju dostavljenim podacima i generisanje HTML stranice koja sadrži odgovor koji se vraća klijentu. Na primer, pošto je na Web stranici neke elektronske prodavnice, korisnik izabrao stavke koje želi da kupi i kliknuo na dugme Submit, podaci uneti na formi se šalju serveru gde se pokreće program čiji je zadatak da kreira HTML stranicu narudžbenice, koja će osim naziva i cene izabranih stavki sadržati i ukupnu cenu, PDV, ime i adresu korisnika i sl. Uz to, od programa se očekuje i da podatke o izdatoj narudžbi upiše u bazu podataka. Na Sl. 2 su prikazani koraci koji su potrebni za obradu podataka unetih u HTML formu.
Slika 8.2 2 Obrada HTML forme dinamičkog dokumenta
HTML STRANICA SA UGRAĐENIM PHP-OM CGI (Common Gateway Interface - opšti interfejs pristupa) predstavlja standardizovani interfejs koji omogućava Web serveru da ˝razgovara˝ sa pozadinskim programima.
51
Poglavlje 8 Dinamički i aktivni Web dokumenti
Po pravilu, pozadinski programi su skripte napisane u jeziku Perl. Drugi uobičajeni način za generisanje dinamičkog sadržaja podrazumeva umetanje skripti unutar same HTML stranice. Kada server dobije zahtev za ovakvom stranicom, on izdvaja skript iz stranice i izvršava ga. Primer jezika koji se koristi za pisanje ovakvih skripti je PHP (Hypertext Processor). Da bi PHP mogao da se koristi, server mora da razume PHP jezik (slično kao što pretraživač mora da razume XML da bi bio u stanju da interpretira Web stranicu napisanu u XML-u).Obično, server očekuje da Web stranice koje sadrže PHP imaju nastavak .php umesto .html ili .htm. Na Sl. 3 je prikazana HTML stranica sa ugrađenim jednostavnim PHP skriptom. Osim standardnog HTML-a, stranica sadrži još i PHP skript unutar taga . Efekat ovog skirpta je generisane Web stranice koja sadrži opšte podatke o klijentu koji je zatražio stranicu. Pretraživači, uz svaki zahtev upućen serveru obično šalju i neke dodatne informacije o sebi (tip pretraživača, jezik, operativni sistem, tip klijentskog računara, ...), koje se prenose kao vrednost promenljive HTTP_USER_AGENT (deo poruke zahteva). Pretpostavimo da je listing sa Sl. 3 smešten u fajlu test.php koji se nalazi na WWW direktorijumu kompanije ABCD. Kada se korisnik obrati URL-uwww.abcd.com/test.php, server kompanije ABCD otvara fajl test.php, pronalazi u njemu PHP skript, zamenjuje ga vrednošću promenljive HTTP_USER_AGENT iz pristiglog zahteva i tako modifikovanu stranicu vraća klijentu. PHP je naročito pogodan za procesiranje formi. Razmotrimo primer HTML stranice sa Sl. 4 (a) koja sadrži formu. Jedina specifičnost ove stranice je sadržaj prve linije koja definiše da radi obrade podataka unetih u formu i vraćenih serveru treba koristiti fajl action.php. Stranica prikazuje dva tekstualna polja, jedno predviđeno za unos imena (name) a drugo za unos godine rođenja (age) korisnika.
Slika 8.3 3 HTML stranica sa ugrađenim PHP-om
JOŠ O HTML STRANICAMA SA UGRAĐENIM PHP-OM PHP je moćan programski jezik, koji se uz to i lako koristi, orijentisan na spregu između Web servera i servera baze podataka. Nakon što je korisnik popunio oba polja, klikom na dugme Submit, popunjena stranica (tačnije, linija teksta koja sadrži unete podatke) se vraća serveru. Server preuzima sadržaje polje name i age, a zatim otvara i prolazi kroz fajl action.php (Sl. 4 (b)) i izvršava svaki PHP skript na koji naiđe. Pod pretpostavkom da je korisnik u polja name i age upisao ˝Barbara˝ i ˝24˝, HTML fajl koji se vraća klijentu imaće oblik kao na Sl. 4 (c).
52
Poglavlje 8 Dinamički i aktivni Web dokumenti
Slika 8.4 4 Web stranica sa formom i sa ugrađenim PHP skriptom
PHP poseduje promenljive, stringove, polja i većinu upravljačkih struktura koje srećemo u C-u. PHP jeopen source i dostupan je za slobodno korišćenje. Posebno je projektovan za rad sa Apache web serverom (koji je takođe open source). Treća tehnika za dinamičko kreiranje Web stranica je JSP (JavaServer Pages). JSP je slična PHPu, s tom razlikom što se dinamički deo stranice piše u programskom jeziku Java, umesto u PHP-u. Stranice koje koriste ovu tehniku obično imaju nastavak .jsp. Četvrta tehnika, ASP (Active Server Pages) je Microsoft-ova verzija PHP-a i JSP-a. Za generisane dinamičkog sadržaja kod ASP se koristi skript jezik Visual Basic Script(ili VB skript). Stranice koje koriste ASP, obično imaju nastavak .asp. Skript jezici kao što su CGI, PHP, JSP i ASP rešavaju problem procesiranja formi i interakcije sa bazama podataka na serveru. Svi oni su u mogućnosti da prihvate informacije unete u formu, pretraže informacije u bazi podataBojler Termorad 10 litara niskomontažnika i generišu HTML stranicu sa rezultatima obrade.
JAVA SKRIPT JEZIK Međutim, ni jedan od CGI, PHP, JSP i ASP skript jezika nije u stanju da reaguje na klik mišem ili da direktno interaguje sa korisnikom koji koristi čitač. Ni jedan od ovih skript jezika nije u stanju da reaguje na klik mišem ili da direktno interaguje sa korisnikom koji koristi čitač. Za tu namenu, neophodan je program koji će se izvršavati u samom čitač, na računaru klijenta umesto na računaru servera. Web stranica sa pridruženim programom koji se izvršava na strani klijenta naziva se aktivnim dokumentom. Postoje dva načina za kreiranje aktivnih dokumenata. Prvi način podrazumeva da se program, u obliku binarnog koda, čuva na serveru, a da u HTML stranici postoji tag u kome je navedeno 53
Poglavlje 8 Dinamički i aktivni Web dokumenti
ime fajla koji sadrži program. Kada HTML interpretator u čitaču naiđe na ovakav tag, on najpre preuzima fajl programa od servera, a zatim ga izvršava. Programi ovog tipa najčešće se pišu u programskom jeziku Java. Drugi način je zasnovan na skript jeziku koji se, slično PHP-u, ugrađuje u sam HTML. Međutim, za razliku od PHP skripta koji se izdvaja iz HTML stranice i izvršava na serverskom računaru, skript namenjen klijetu iz HTML-a izdvaja čitač i izvršava ga uz pomoć odgovarajućeg interpretatora. Najpoznatiji skript jezik za ovu namenu je JavaScript. Java Java je objektno-orijentisan jezik zasnovan na C++. Za razliku od C++, i većine drugih viših programskih jezika, kompajlirani programi pisani u Javi su portabilni, tj. mogu se izvršavati na bilo kom računaru, nezavisno od tipa procesora i operativnog sistema. U terminologiji Jave, kompajlirani program se naziva bajtkôdom (bytecode). Bajtkôd ne sadrži mašinske instrukcije za neki konkretan procesor, već instrukcije koje se izvršavaju u interpretatoru za Java bajtkôd, tj. u tzv. Java virtuelnoj mašini. Bilo koji računar na kome je instalirana Java virtuelna mašina u stanju je da izvršava programe pisane u Javi. U osnovi, bajtkod predstavlja međukod, koji je po složenosti između Java izvornog koda i mašinskog koda. Virtuelna mašina izvršava bajtkod tako što u kodu identifikuje pojedinačne komande (tzv. metode) i poziva odgovarajuće funkcije pisane u mašinskom jeziku za ciljnu mašinu.
JAVA APLETI Java programi namenjeni za Web nazivaju se apletima. Apleti se čuvaju na Web serveru u fajlovima sa nastavkom .class. Aplet se uključuje u HTML pomoću odgovarajućeg taga koji predstavlja instrukciju HTML interpretatoru da od Web servera zatraži.class fajl, naveden u tagu, i prosledi ga virtuelnoj mašini gde će aplet biti izvršen. Primer jednostavnog apleta je aplet koji reprodukuje audio fajl, kao pozadinsku muziku, za vreme dok je u pregledavaču prikazana stranica. Pretpostavimo da je aplet uključen u Web stranicu sa URL-om http://www.elfak.ni.ac.rs/ da je smešten u fajlu bgsound.class, koji se nalazi na URL-u http://www.elfak.ni.ac.rs/java-apps . Tag koji uključuje aplet u HTML je sledećeg oblika:
=
Tag sadrži više atributa, sledećeg značenja. Vrednost atributa CLASSID definiše ime fajla u kome je smešten aplet. CODEBASE definiše server i putanju na kojoj se fajl nalazi. Ime fajla, ˝bgsound.data˝ u kome se čuvaju podaci koje aplet treba da procesira navedeno je u atributu DATA. Ovaj fajl sadrži podatke tipa audio/MP3, što je navedeno u atributu CODETYPE. Nakon učitavanja, aplet i prateći audio fajl se predaju virtuelnoj mašini; aplet se startuje i sadržaj audio fajla, u dekodiranom obliku, šalje u audio karticu gde se obavlja reprodukcija. Na sličan način, aplet može sadržati grafičku animaciju ili video. U tom slučaju, kao atributi taga OBJECT navode se dimenzije pravougaone oblasti na ekranu pregledavača, gde će animacija/video biti prikazani.
54
Poglavlje 8 Dinamički i aktivni Web dokumenti
Java apleti se mogu razumeti i kao fleksibilna zamena za pomoćne aplikacije i plug_in-ove. Na primer, pretpostavimo da Web stranica sadrži sliku u nekom novom grafičkom formatu za koji na klijentskom računaru ne postoji podrška u vidu plug-in-a ili pomoćne aplikacije i da zbog toga slika ne može biti prikazana na ekranu pregledavača. Međutim, ako se za prikazivanje slike koristi aplet, dekoder za novi format može biti smešten u samom apletu koji se automatski preuzima sa servera prilikom učitavanja stranice u pregledavač.
ACTIVEX KONTROLE ActiveX kontrole su Microsoft-ov odgovor na Java aplete. ActiveX kontrole se, kao i apleti mogu ugraditi na Web stranicu.ActiveX kontrole su programi kompilirani za Pentium procesore i izvršavaju se direktno, bez posredovanja virtuelne mašine, kao što je to slučaj kod apleta. Zbog toga je izvršenje ActiveX kontrola značajno brže od izvršavanja apleta, a njihove mogućnosti su daleko veće, u smislu korišćenja raspoloživih softverskih i hardverskih resursa računara. Kada Internet Explorer u Web stranici primeti pozivanje naActiveX kontrolu, on je preuzima od servera, verifikuje njen identitet, registruje je na lokalnom računaru i izvršava. Međutim, pored ograničena da se ActiveX kontrole mogu koristiti samo na Pentium PC računarima, njihovo korišćenje može biti rizično u pogledu sigurnosti. JavaScript Slična funkcionalnost kao sa Java apletima se može dobiti i korišćenjem JavaScript jezika, s tom razlikom što se, slično PHP-u, JavaScript skript jezik u izvornom obliku ugrađuje u HTML stranicu. JavaScript program se smešta u poseban HTML tag, <script>. Kada HTML interpretator naiđe na tag <script> on poziva JavaScript interpretator koji izvršava sadržani skript. Uprkos sličnom imenu, JavaScript, kao jezik, nema direktne veze sa Javom. Slično drugim skript jezicima, JavaScript sadrži programske konstrukcije veoma visokog nivoa. Na primer, u jednoj liniji JavaScript programa moguće je prikazati dijalog za unos teksta, čekati da tekst bude unesen i smestiti uneti tekst u neku promenljivu. Zahvaljujući ovakvim i sličnim mogućnostima, JavaScript je pogodan za lako projektovanje interaktivnih Web stranica. Takođe, JavaScript poseduje mnoge osobine viših programskih jezika, kao što su tipovi podataka, aritmetički i logički operatori, petlje (for(), while()), funkcije itd. Kao primer programa u JavaScript jeziku, razmotrimo listing Web stranice sa Sl. 5. Slično primeru sa Sl. 4, stranica sadrži formu za unos imena i godina korisnika, a po unosu traženih podataka predviđa koliko će godina osoba imati sledeće godine. Sekcija je gotovo identična kao u primeru za PHP. Glavna razlika je u deklaraciji Submit dugmeta i naredbe dodele sadržane u ovoj deklaraciji. Ova naredba dodele kazuje pretraživaču da kao odgovor na klik dugmeta (događaj onclick) treba izvršiti JavaScript funkciju response i kao parametar preneti joj formu.
JAVASCRIPT JEZIK Sa tačke gledišta krajnjeg korisnika, krajnji rezultat oba primera (Sl. 18 i Sl. 19) je isti. 55
Poglavlje 8 Dinamički i aktivni Web dokumenti
Funkcija responese()napisana je u zaglavlju HTML fajla, na mestu koje je inače rezervisano za naslov stranice, boju pozadine i sl. Ova funkcija izdvaja iz forme vrednost polja name i pamti je kao string u promenljivoj person. Takođe, funkcija izdvaja i vrednost polja Bojler Termorad 10 litara niskomontažni age, konvertuje je u ceo broj, korišćenjem funkcijeeval(), dodaje 1-cu i rezultat pamti u promenljivu years. Nakon toga, funkcija otvara novi dokument za prikaz rezultata i ispisuje četiri linije teksta korišćenjem funkcije writeln()i, konačno, zatvara dokument. Kreirani dokument je HTML fajl, kao što se lako može zaključiti na osnovu HTML tagova koje funkcija response zajedno sa ostalim tekstom upisuje u dokument. Bitno je razumeti da se načini obrade ova dva primera suštinski razlikuju. U primeru koji koristi PHP, nakon klika na dugme Submit, pretraživač izdvaja informacije iz forme i u vidu stringa ih šalje nazad serveru koji je poslao stranicu. Server prepoznaje ime PHP fajla i izvršava ga. PHP skript kreira novu HTML stranicu koja se vraća pretraživaču i prikazuje. S druge strane, u primeru koji koristi JavaScript, nakon klika na dugme Submit , pregledavač interpretira JavaScript funkciju sadržanu u samoj stranici. Ne postoji novi kontakt sa serverom, već se sve obavlja lokalno, unutar čitača. Zbog toga se rezultat obrade pojavljuju gotovo trenutno, za razliku od primera sa PHP gde postoji izvesno neizbežno kašnjenje (reda do nekoliko sekundi) dok rezultujući HTML fajl ne stigne nazad do pretraživača.
Slika - 5 Procesiranje forme pomoću JavaScript-a
PROCESIRANJE SKRIPTA Postoji razlika između procesiranja skripti na strani klijenta i strani servera prilikom upotrebe PHP i i korišćenjem JavaScript jezika. Na Sl. 6 je ilustrovana razlika između procesiranja skripti na strani klijenta i strani servera. U oba slučaja, korak 1 počinje nakon što je forma učitana u pretraživač. Korak 2 iniciran je
56
Poglavlje 8 Dinamički i aktivni Web dokumenti
klikom na dugme Submit, a nakon toga sledi procesiranje forme, koje u ova dva slučaja teče na različite načine. Ove razlike ne znače da je JavaScript bolji od PHP-a. Namena ova dva skrip jezika je potpuno različita. PHP (i srodni skript jezici) prevashodno se koriste za interakciju sa udaljenom bazom podataka. JavaScript se koristi za interakciju sa korisnikom na strani klijentskog računara. Moguće je, i uobičajeno, da Web stranica sadrži oba skript jezika, sa raspodeljenim zadacima.
Slika 8.5 6 Procesiranje skripta: (a) na strani servera (PHP); (b) na strani klijenta (JavaScript)
RAZLIČITI NAČINI PROCESIRANJE SKRIPTA Procesiranje skripta se odvija i na strani klijenta i na strani servera uz pomoć različitih skript jezika (Perl, PHP, JSP ili ASP). Slika 7 ilustruje različite tehnike za kreiranje dinamičkih i aktivnih Web stranica, o kojima je bilo reči u ovoj sekciji. Dinamičke Web stranice se generišu na strani servera, uz pomoć različitih skript jezika (Perl, PHP, JSP ili ASP), a klijent dobija standardnu HTML stranicu koju prosto treba da prikaže. Aktivne Web stranice sadrže ugrađene skriptove (pisane u JavaSctipt jeziku) ili hiperveze na kompletne programe (u vidu Java apleta ili ActiveX kontrola) koji se nakon učitavanja izvršavaju na klijentskom računaru, što omogućava kreiranje interaktivnih korisničkih interfejsa, pa čak i složena procesiranja grafičkih, audio ili video sadržaja. Web stranice napisane u XML-u se shodno pridruženom XSL fajlu u samom pretraživaču konvertuju u HTML, što takođe predstavlja neku formu aktivnog sadržaja. Konačno, plug-in-ovi i pomoćne aplikacije predstavljaju proširenja pretraživača i koriste se za prikazivanje multimedijalnih sadržaja različitih formata.
Slika 8.6 7 Razlilčiti načini za generisanje i prikazivanje Web sadržaja
57
Poglavlje 9 HTTP HTTP (HYPERTEXT TRANSFER PROTOKOL PROTOKOL ZA PRENOS HIPERTEKSTA HTTP je protokol koji se koristi za pristup podacima na Web-u. HTTP je klijent-server protokol aplikacionog sloja TCP/IP steka, koji, slično protokolima SMTP ili FTP, za transport poruka. U većini slučajeva, HTTP klijent (čitač) zahteva Web stranicu, a HTTP server (Web server) isporučuje njenu kopiju. Međutim, HTTP dozvoljava i prenos od čitača kaserveru (npr. kada korisnik serveru šalje formu). HTTP je sličan FTP-u, ali je mnogo jednostavniji jer koristi samo jednu TCP konekciju: ne postoji posebna kontrolna konekcija, a između klijenta i servera se prenose samo podaci. Takođe, HTTP je sličan SMTP-u, jer sadrži koji se prenosi između klijenta i servera liči na SMTP poruku. Uz to, za kontrolu formatiranja poruke se, kao i kod SMTP, koristi MIME. Za razliku od SMTP, HTTP poruke nisu direktno nemenjene ljudima, već ih čitaju i interpretiraju HTTP klijent i HTTP server. Trajanje veze Broj porta HTTP protokola je 80. Web server neprekidno osluškuje TCP port 80, čekajući da neki pretraživač zatraži otvaranje TCP konekcije. S druge strane, pretraživač koji želi da pribavi Web stranicu poznatog URL-a, inicira otvaranje TCP konekcije na portu 80 sa serverom čije je ime navedeno u URL-u. (Naravno, ovome prethodi interakcija sa DNS serverom radi konverzije DNS imena servera u IP adresu). Kada je TCP konekcija uspostavljena, pretraživač šalje serveru HTTP zahtev koji sadrži putanju i ime traženog fajla. Web server odgovara prenosom fajla, a po završenom prenosu zatvara TCP konekciju. Ako učitana Web stranica sadrži slike ili neki drugi dodatni sadržaj, neophodno je da pretraživač radi prenosa svakog takvog entiteta uspostavi novu TCP konekciju sa serverom. Ovakav način rada, naziva se neperzistentnom (nestalnom) vezom, i karakterističan je za prvobitne verzije HTTP protokola (konkretno verzije 0.9 i 1.0). Neperzistentni način rada je izrazito neefikasan ako se prenose Web stranice koje osim HTML-a sadrže i veći broj slika, ikona ili drugih pratećih sadržaja (što je slučaj sa većinom Web stranica koje danas viđamo na Webu). Uspostavljane TCP konekcije generiše dodatni saobraćaj u mreži i unosi izvesno kašnjenje, što ima za posledicu sporo učitavanje ovakvih Web stranica. Iz tog razloga, godine 1999. uvedena je nova verzija HTTP protokola, verzija 1.1, koja podržava perzistentne (trajne) veze klijenta i servera.
58
Poglavlje 9 HTTP
HTTP TRANSAKCIJA HTTP je klijent-server protokol kod koga se komunikaciju obavlja nizom transakcija: klijent šalje poruku zahteva, a server odgovara porukom odziva. Kod perzistentnog načina rada, čitač uspostavlja inicijalnu TCP konekciju, zatim šalje zahtev i dobija odgovor (kao kod HTTP 1.0). Međutim, nakon slanja odgovora, server ne zatvara TCP konekciju, već je ostavlja otvorenom dajući priliku čitaču da preko iste TCP konekcije uputi dodatne zahteve. Tipično, server zatvara TCP konekciju po isteku nekog zadatog vremena nakon poslednje upućenog zahteva. Na ovaj način se dodatna opterećenja usled uspostavljanja i raskidanja TCP konekcije raspodjeljuju na više HTTP zahteva/odgovora ta ko da je relativno dodatno opterećenje na nivou celokupne Web stranice značajno manje. Formati poruka HTTP predviđa dva generalna tipa poruka koje se razmenjuju između klijenta i servera (Sl. 1). HTTP poruke se sastoje od jedne ili više linija NVT ASCII teksta. Prva linija zahteva sadrži metod ili tip zahteva, a prva linija odgovora informaciju o statusu odgovora. Oba tipa poruke sadrže zaglavlje koje od tela poruke odvojeno jednom praznom linijom. Telo poruke je u oba slučaja opciono (ne mora da postoji) i koristi se za prenos sadržaja poruke. Počev od verzije 1.1 HTTP podržava MIME kodiranje sadržaja (slično kao kod SMTP protokola).
Slika 9.1 1 Formati HTTP poruka: (a) format zahteva
HTTP METODE HTTP je zamišljen opštije od prostog protokola za komunikaciju tipa zahtev/odgovor. HTTP predviđa više različitih tipova zahteva koje klijent može da uputi serveru. U terminologiji HTTP standarda tipovi zahtevi se zovu metodi. Osim osnovnog metoda GET koji služi za pribavljanje Web stranice, HTTP predviđa još nekoliko dodatnih metoda navedenih u tabeli sa Sl. 2. Metod GET zahteva od servera da pošalje traženu stranicu. (Ovde se pod stranicom misli na objekat koji može biti HTML stranica, slika, Java aplet i sl, tj. na fajl). Stanica koja se vraća ne mora da sadrži samo ASCII tekst, a za identifikaciju tip sadržaja koristi se MIME,
59
Poglavlje 9 HTTP
slično kao kod e-mail protokola. Najveći broj HTTP zahteva koji se javljaju na Web-u su upravo tipa GET. Uobičajeni oblik metoda GET je: GET ime_fajla HTTP /1.1 gde je ime_fajla ime resursa (fajla) koji se traži, a 1.1 verzija HTTP protokola koji se koristi. Metod HEAD traži od servera ne celu stranicu već samo njeno zaglavlje. Ovaj metod se može koristiti za pribavljane informacije o datumu i vremenu kada je stranica poslednji put modifikovana, za prikupljanje drugih informacija o stranici i njenom sadržaju ili prosto za testiranje validnosti URL-a (da li je na datom URL-u prisutna stranica).
Slika 9.2 2 HTTP metode
KOMANDE PUT, POST, DELETE I JOŠ NEKE HTTP METODE Metod PUT je suprotan metodu GET: umesto čitanja, ovaj metod upisuje stranicu na Web server. Uz pomoć PUT metoda moguće je postaviti Web stranicu na udaljeni Web server. Stranica je sadržana u telu PUT zahteva. Stanica ne mora biti tekst, a njen MIME tip naveden je polju Content-Type zaglavlja zahteva. Takođe, zaglavlje zahteva sadrži i podatke za autorizaciju kojima klijent dokazuje da ima pravo da izvrši zahtevanu operaciju. Metod POST je sličan metodu PUT. Za razliku od PUT, kojim se na server postavlja nova stranica (ili zamenjuje postojeća), metod POST se koristi da se u resurs (u najopštijem smislu) koji se nalazi na datom URL-u,upišu (dodaju) novi podaci. Postavljanje nove poruke na nekom Web forumu, primer je ovog tipa operacije. Međutim, u praksi metod POST, kao i PUT, se retko koristi. Metod DELETE služi za brisanje (uklanjanje) stranice sa Web servera. Kao i kod PUT, u zaglavlju zahteva tipa DELETE moraju postojati podaci za autorizaciju. Metod TRACE se koristi za testiranje veze sa serverom. Ovaj metod nalaže serveru da nazad vrati primljenu poruku zahteva. TRACE je koristan u slučajevima kada se zahtevi ne obrađuju korektno, a klijent želi da sazna da li zahtevi uopšte dolaze do servera.
60
Poglavlje 9 HTTP
Metod CONNECT nema definisanu namenu, već je rezervisan za neku eventualnu buduću primenu. Metod OPTIONS omogućava klijentu da postavi upit serveru koji se odnosi na izvesne parametre rada servera ili parametre nekog konkretnog fajla.
STATUSI HTTP PORUKE U http komunikaciji važan je trocifreni kôd statusa koji server vraća klijentu o uspešnosti obavljanja servisa koji je klijent tražio. Status U prvoj liniji svaki odgovor kojeg server vraća klijentu sadržan je trocifreni kôd statusa koji klijentu treba da ukaže da li je njegov zahtev uspešno opsluže ili nije i ako nije zašto nije. Prva cifra statusnog koda služi za podelu odziva na pet glavnih grupa (Sl. 3). Kod 1xx (x proizvoljna cifra) se retko koristi u praksi. Kod 2xx znači da je zahtev uspešno obrađen i da poruka sadrži traženi sadržaj. Kod 3xx govori klijentu da traženu stranicu potraži na nekom drugom URL-u ili u svom kešu (kasnije će biti više reči o keširanju). Kôd 4xx znači da zahtev nije opslužen, bilo zato što je u samom zahtevu uočena greška ili zato što je klijent zatražio nepostojeću stranicu. Konačno, kod 5xx obaveštava klijenta da na strani servera postoje problemi, bilo zbog greške u programu Web servera bilo zato što je server privremeno preopterećen.
Slika 9.3 3 Grupe statusnih kôdova
ZAGLAVLJE HTTP PORUKE U http komunikaciji pored trocifrenog kôda statusa slede jedna ili više linija zglavlja koji server vraća klijentu o uspešnosti obavljanja servisa koji je klijent tražio. Zaglavlja poruka Nakon linije metoda u poruci zahteva sledi jedna ili više linija zaglavlja koje sadrže dodatne informacije o zahtevu. Za svaku liniju ove sekcije se kaže da predstavlja jedno zaglavlje zahteva. Poruka odziva takođe može sadržati zaglavlja (jedno ili više). Neka zaglavlja se koriste i kod zahteva i kod odgovora. U tabeli sa Sl.4 navedena su najvažnija zaglavlja. Zaglavlje User-Agent (korisnički agent) omogućava da klijent obavesti servera o tipu pretraživača koji koristi, operativnom sistemu i drugim osobinama. Četiri zaglavlja koja
61
Poglavlje 9 HTTP
počinju sa Accept obaveštavaju servera kakav sadržaj je klijent spreman da prihvata. Prvo od ovih zaglavlja (Accept) navodi MIME tip stranice koji klijentov pretraživač može da obradi (npr. text/html). Drugo (Accept-Charset) definiše skup karaktera (npr. ISO-8859-5 ili Unicode-1-1) koji klijent prepoznaje. Treće (Accept-Encoding) definiše metod kompresije koji klijent podržava (npr. gzip), a četvrto (Accept-Language) ukazuje na prirodni jezik (npr. Srpski) koji korisnik razume. Ako server ima mogućnost izbora stranice (npr. postoji više varijanti iste stranice), on će izabrati o vratiti klijentu onu koja se uklapa u postavljene zahteve. Ako server nije u mogućnosti da udovolji zahtevima klijenta, vratiće odgovor sa postavljenim odgovarajućim kodom greške.
Slika 9.4 4 Zaglavlja HTTP poruka (delimičan spisak)
OPIS SADRŽAJA ZAGLAVLJA HTTP PORUKE Zaglavlje Host sadrži ime servera, preuzeto iz URL-a. Zaglavlje Host je obavezno jer se može desiti da za istu IP adresu budu vezana više DNS imena. Ispitivanjem sadržaja ovog polja, sever proverava da li se zahtev odnosi baš na njega. Zaglavlje Authorization je neophodno za stranice koje su zaštićene i za koje je klijent u obavezi da dokaže da ima pravo da vidi stranicu. Cookie-ima su posvećena dva zaglavlja. Preko zaglavlja Cookie klijent vraća serveru sadržaj cookie-a kojeg je ranije poslat klijentu od strane neke mašine iz domena servera. Server šalje cookie klijentu u obliku sadržaja zaglavlja Set-Cookie. Kao što znamo, klijent je u obavezi da zapamti cookie na svoj hard disk, i vrati ga serveru pri svakom narednom obraćanju. Zaglavlje Date (datum) se može koristiti u oba smera i sadrži vreme i datum kada je poruka poslata. Slede zaglavlja koja se javljaju isključivo u odgovorima koje server šalje klijentu. Zaglavlje Server omogućava serveru da saopšti svoj identitet klijentu, ako želi. Sledeća četiri zaglavlja, koja počinju sa Content - (sadržaj) omogućavaju serveru da opiše osobine stranice koje šalje. (Značenje ovih zaglavlja je analogno odgovarajućim Accept zaglavljima).
62
Poglavlje 9 HTTP
Zaglavlje Last-Modified sadrži datum i vreme kada je stranica poslednji put modifikovana. Ovo zaglavlje ima bitnu ulogu u keširanju stranica.
KOMPLETAN HTTP ODGOVOR SERVERA Zaglavlje ETag sadrži jedinstveni identifikator stranice. Server koristi zaglavlje Location kada želi da obavesti klijenta da bi trebalo da pokuša da potraži zahtevanu stranicu na nekom drugom URL-u. Ova mogućnost se koristi ako je stranica premeštena na drugu lokaciju ili ako više od jednog URL-a ukazuje na istu stranicu. Na primer, neka internacionala kompanija može nakon prijema zahteva za njenu glavnu stranicu na .com domenu, da preusmeri klijenta, na osnovu njegove IP adrese, na jednu od svojih nacionalnih ili regionalnih stranicu. Na Sl. 5 je prikazan izgled jednog kompletnog HTTP odgovora. Prva linija sadrži status odgovora, koji je u ovom slučaju pozitivan. Sledi veći broj zaglavlja, zatim jedna prazna linija i konačno sama Web stranica. Zaglavlje ETag sadrži jedinstveni identifikator stranice. Ovo zaglavlje se koristi prilikom keširanja stranica. Ova lekcija sadrži video materijal. Ukoliko želite da pogledate ovaj video morate da otvorite LAMS lekciju.
63
Poglavlje 9 HTTP
Slika 9.5 5 Primer HTTP odgovora
64
Poglavlje 10 Proksi serveri i keširanje stranica PROXY SERVER Dva tipa među-servera su: firewall i proxy server. U dosadašnjem izlaganju o Web-u pretpostavljali smo da klijent i server direktno komuniciraju razmenom HTTP poruka preko Interneta. Međutim, u izvesnim slučajevima komunikacija klijent-server ne mora biti direktna već se može ostvarivati posredstvom jednog ili više međuservera. Dva tipa među-servera su:firewall i proxyserver. Proxy server je posrednik između lokalnih (intranet) korisnika i Web-a (Sl. 1) i omogućava optimizaciju kojom se smanjuje čekanje klijenata na pribavljanje zahtevanih Web stranica. Web pretraživači u mreži koja koristi proxy server su konfigurisani tako da svoje HTTP zahteve ne upućuju direktno udaljenim Web serverima već ih šalju lokalnom proxy serveru koji u njihovo ime obavlja zahtevanu transakciju. Kada prvi korisnik u korporaciji pristupi određenoj Web stranici, proxy mora da pribavi kopiju od servera na kome se stranica nalazi. Proxy ostavlja kopiju u svom kešu i vraća traženu stranicu kao odgovor na zahtev. Kada sledeći put neki korisnik pristupi istoj stranici, proxy uzima podatke iz svog keša i ne šalje zahtev preko Interneta. Proxy serveri su bitan deo arhitekture Web-a. Osim što efektivno skraćuju vreme pribavljanja Web stranica, proxy serveri značajno redukuju saobraćaj na Internetu i smanjuju opterećenje Web servera.
Slika 10.1 1 Proksi server
KONCEPT PROKSI SERVERA HTTP sadrži eksplicitnu podršku za proxy servere. Koncept proxy servera i keširanja (Sl. 2) nije ograničena samo na korporacijski intranet, već se primenjuje i u drugim kontekstima. Na primer, proxy server ne mora biti računar na lokalnoj mreži, već može biti i proces pokrenut na PC računaru. Takođe, mnogi provajderi
65
Poglavlje 10 Proksi serveri i keširanje stranica
internet usluga (ISP) poseduju proxy server sa ciljem da svojim korisnicima ubrzaju pristup Web-u (i u isto vreme smanje protok podataka prema nadređenom ISP-u). Često, postoji hijerarhija proxy servera. Zahtev se najpre šalje lokalnom proxy serveru, koji, ako nije u stanju da opsluži zahtev, zahtev prosleđuje npr. korporacijskom proxy serveru, a ovaj proxy serveru provajdera internet usluga i tako redom sve dok se u nekom kešu ne pronađe tražena stranica. Tek ako stranica ne postoji u kešu proxy servera na vrhu hijerarhije, ona se direktno traži od Web servera, a onda prosleđuje nazad do pretraživača koji je uputio zahtev i pri tome pamti u keševima svih posrednih proxy servera. Protokol tačno određuje način na koji proksi obrađuje svaki zahtev, kako proksi treba da tumači zaglavlje, kako pretraživač pregovara sa proksijem i kako proksi pregovara sa serverom. Nekoliko HTTP zaglavlja je posebno namenjeno za proksije. Na primer, HTTP omogućava serveru da kontroliše kako proksiji obrađuju svaku Web stranicu. Server može u odgovoru da uključi zaglavlje Max_Forwardsi tako ograniči broj proksija koji obrađuju stavku pre nego što se ona isporuči čitaču. Ako server odredi samo jedan, Max_Forewards: 1, na putanji od servera do pretraživača dozvoljen je samo jedan proksi. Nula znači da je zabranjeno da proksi obrađuju stavku.
Slika 10.2 2 Hijerarhijsko keširanje sa tri proksija
KONCEPT KEŠIRANJA POMOĆU PROKSI SERVERA Eliminisanjem nepotrebnih prenosa, proxy keš smanjuje i vreme čekanja i mrežni saobraćaj. Glavni aspekt keširanja jeste privremeno čuvanje stranica (Sl. 3), a glavno pitanje tiče se vremena čuvanja stranice, tj. koliko dugo treba stavku čuvati u kešu. S jedne strane, ako se kopija predugo čuva u kešu ona može da zastari, što se dešava ako je original u međuvremenu, nakon što je kopija uneta u keš, promenjen. S druge strane, ako se kopija ne čuva dovoljno dugo, dolazi do smanjenja efikasnosti keširanja zato što sledeći zahtev mora nepotrebno da ide do servera. Pojedine Web stranice su podložne čestim promenama (npr. stranica sa rezultatima fudbalskih utakmica), dok druge mogu ostati neizmenjene u dužem vremenskom intervalu (npr. stranica posvećena Grčkoj mitologiji). Takođe, sklonost stranice promenama može da varira u vremenu (npr. stranica sa rezultatima fudbalskih utakmica se brzom menja samo dok utakmica traja, a onda ostaje neizmenjena do sledećeg kola). Takođe, neke stranice se ni u kom slučaju ne mogu keširati. To je slučaj sa dinamičkim Web stranicama koje se generišu na strani servera na osnovu postavljenog upita. HTTP dozvoljava da server kontroliše keširanje na dva načina. Prvi način se oslanja na informaciju iz zaglavlja odgovora Last-Modified kada određuje koliko dugo će stranica biti čuvana u kešu. Ako je stranica koja se upravo stavlja u keš promenjena pre jednog sata, ona će biti čuvana u kešu jedan sat. Ako je promenjena pre dva meseca, u kešu će ostati dva meseca. Iako ovaj
66
Poglavlje 10 Proksi serveri i keširanje stranica
pristup često dobro radi u praksi, on je zasnovan na predviđanjima i zato ne garantuje da će pretraživaču uvek biti vraćena ažurna kopija stranice.
Slika 10.3 3 Princip uslovnog GET zahteva
KONCEPT PROKSI SERVERA - GET ZAHTEV PROXY-JU Svakoj keširanoj stranici pridružena je informacija o datumu i vremenu kada je stranica keširana. Drugi pristup eliminiše mogućnost da pregledavač dobije zastarelu strancu, ali na račun izvesnog povećanja saobraćaja i vremena čekanja na pribavljanje stranice. Pristup se oslanja na tzv. uslovni GET zahtev, koji proxy može da pošalje serveru kako bi proverio ažurnost keširane stranice. Uslovni GET zahtev je HTTP poruka koja sadrži zaglavljeIf-Modified-Since (˝ako je modifikovana posle ...˝). Procedura je ilustrovana na Sl. 3 i odvija se na sledeći način: Pregledavač upućuje standardni GET zahtev proxy-ju (korak 1). Pretpostavimo da proxy u svom kešu ima traženu stranicu. Svakoj keširanoj stranici pridružena je informacija o datumu i vremenu kada je stranica keširana. Ova informacija je preuzeta iz poljaLast-Modified HTTP poruke kojom je originalna stranica ranije preneta od servera do proxy-ja. Pre nego što pretraživaču vrati keširanu stranicu, proxy šalje uslovnu GET poruku serveru sa upisanim vremenom poslednje modifikacije keširane kopije u zaglavlju If-Modified-Since(korak 2). Na Sl. 3 je pretpostavljeno da stranica nije modifikovana u međuvremenu, tj. od datuma i vremena navedenih u zaglavlju If-Modified-Since. Zbog toga server vraća proxy-ju kratak odgovor sa statusnim kodom 304 (Not modified - nije modifikovana) i bez tela (korak 3). Po prijemu odgovora, proxy vraća keširanu stranicu pregledavaču (korak 4). U slučaju da je zahtevana stranica u međuvremenu bila modifikovana, server će vratiti proxy-ju novu kopiju stranice, koju će proxy smestiti u keš (zajedno sa datumom i vremenom iz zaglavlja Last-Modified) pre nego što je prosledi pregledavaču. Dva pristupa za kontrolu vremena keširanja se lako mogu kombinovati. Na primer, prvih T sekundi nakon pribavljanja stranice proxy vraća regledavaču keširanu kopiju bez postavljanja pitanja serveru. Po isteku T sekundi, proxy koristi uslovnu GET poruku za proveru ažurnosti kopije. Još jedan način za poboljšanje performansi keširanja naziva se proaktivnim keširanjem. Kada proksi pribavi stranicu od servera, on je analizira i izdvaja sadržane hiperveze. Nakon toga, proksi može da pribavi i smesti u svoj keš stranice na koje ukazuju izdvojene hiperveze, za slučaj da korisnik naknadno zatraži neku od njih. Na ovaj način moguće je skratiti vreme pristupa za buduće zahteve za slučaj da korisnik izabere neki od linkova na upravo učitanoj
67
Poglavlje 10 Proksi serveri i keširanje stranica
stranici. Međutim, pribavljajući i stranice koje nikada neće biti potrebne, ova tehnika ne smanjuje već povećava saobraćaj na Internetu.
FIREWALL - SIGURNOSNI GATEWAY Administrator intraneta može da konfiguriše firwall tako da prema Internetu propušta smo TCP paketa sa odredišnim brojem porta 80 i da tako lokalnim korisnicima omogući korišćenje global Danas se na većini lokalnih, korporacijskih mreža koristi isti skup protokola kao i na Internetu (TCP/IP), a takve mreže se nazivaju intranetima. Korišćenje Internet protokola na intranet mreži ima dvojako opravdanje. Prvo, olakšan je pristup Web-u od strane računara povezanih na intranet (lokalni računari na isti način komuniciraju međusobno kao i sa udaljenim serverima). Drugo, omogućeno je spoljnim Internet korisnicima da pristupaju informacijama i servisima dostupnim na korporacijskim serverima (kao što je korporacijski Web server). Međutim, iz sigurnosnih razloga, spoljnim korisnicima obično nije dozvoljen direktan pristup korporacijskim serverima, već se ostvaruje posredstvom specijalizovanog server, tzv. firewall ili sigurnosni gateway, koji nadgleda i filtrira mreži saobraćaj. Kao što se može videti sa Sl. 4, firewall kontroliše protok informacija u oba smera (kao iz tako i u intranet). Firewall presreće i filtrira pakete koji su sa Interneta upućeni lokalnim serverima, kao i sve zahteve koji se iz intraneta šalju prema Internetu. Filtriranje se obavlja na osnovu izvornih i odredišnih IP adresama i brojevima portova sadržanim u TCP/UDP paketima ili na bazi nekih drugih kriterijuma. Firewall može biti konfigurisan tako da prosleđuje ka intranetu samo pakete koji su upućeni na određene lokalne IP adrese i/ili samo ako su paketi poslati iz nekog određenog domena, a da sve ostale poništava. Takođe, firewall može da uvede restrikcije koje se odnose na brojeve portova. Na primer, firewall može biti tako podešen da poništava sve dolazne TCP pakete sa brojem odredišnog porta 20 ili 21 i da na taj način onemogući pristup bilo kom lokalnom FTP serveru.
Slika 10.4 4 Firewall
68
Poglavlje 11 Vežba 1 UVOD U VEŽBE Cilj ove sekcije je da uvede studenta u tok samih vežbi na predmetu IT255:Šta ćemo raditi na vežbama? Šta ćemo raditi na vežbama? Na vežbama iz predmeta IT255 – Web sistemi 1 bavićemo se izradom frontend dela web sistema po specifikacijama i zahtevima kako se to obično radi i u praksi. Ovaj predmet fokusiraće se na izradu web aplikacije MetAir kroz svih 15 nedelja. Domaći zadaci studenata biće da naprave sličan sistem po uzoru na ono što su naučili na vežbama i predavanjima iz ovog predmeta. Šta je to Front end programiranje Front end programiranje ili programiranje klijentske strane predstavlja programiranje onoga što korisnik vidi a to je grafički korisnički interfejs i komunikaciju grafičkog korisničkog interfejsa sa programskom logikom (back end delom programa). Šta je to Web Framework Web Application Framework (WAF) je softverski omot oko nekog web programskog jezika koji nam omogućava podršku u izradi dinamičkih web sajtova, web aplikacija, web servisa ili resursa. Framework se pravi isključivo da olakša I omogući bolji razvoj aplikacija. Na ovom predmetu obrađivaćemo Angular JS front end framework u kombinaciji sa programskim jezikom PHP. GitHub GitHub je web aplikacija koja omogućava besplatnu kontrolu koda svima koji žele da je koriste za pravljenje aplikacija otvorenog koda. Kontrola koda (eng. Source Control) nam omogućava da lako pratimo izmene u samom kodu, radimo u timu i verzionišemo naše aplikacije. Ovo je jako dobra praksa pa ćemo kroz predmet praktikovati da sve domaće radite preko GitHub-a. Jedan GitHub nalog može da ima više repozitorijuma. Jedan repozitorijom predstavlja kontrolu koda za jedan projekat. GitHub koristi Git sistem kontrole koda pa je Git potrebno instalirati na računaru. Git funkcioniše po sistemu local -> remote. Tako da ono što izmenite kod sebe na računari ne ide odma na remote GitHub nalog već ide tek nakon Push akcije (prebacivanje fajlova na remote lokaciju). U lokalu fajl možete dodati u projekat (Add) i verifikovati ga (Commit) kada ste završili sa radom na fajlu.
69
Poglavlje 11 Vežba 1
INSTALACIJA I PODEŠAVANJE ALATA POTREBNIH ZA VEŽBE Cilj ove sekcije je da prikaže studentu kako se instaliraju i konfigurišu alati potreni za vežbe iz web sistema. Za vežbe iz web sistema potrebni su sledeći alati: • • • •
Xampp 5.5.30 Node JS (Node JS Package Manager NPM) 5.4.0 Git 2.7.0 Notepad++
Linkovi za download potrebnih alata su: https://www.apachefriends.org/download.html https://nodejs.org/en/download/ https://git-scm.com/downloads https://notepad-plus-plus.org/download/v6.8.8.html
INSTALACIJA XAMPP PAKETA U ovoj sekciji biće objašenjena instalacija XAMPP paketa Nakon preuzimanja XAMPP-a sa navedenog sajta potrebno je pokrenuti instalaciju. Nakon pokretanja instalacije otvoriće Vam se prozor instalacije. Ukoliko Vam instalacija izbaci poruku pre paljenja pritisnite OK.
Slika 11.1 Upaljena instalacija
Kada vidite ovaj ekran kliknite na dugme Next. A potom odaberite komponente koje su potrebne kao na sledećoj slici:
70
Poglavlje 11 Vežba 1
Slika 11.2 Komponente za instalaciju
Nakon biranja komponenti potrebno je da se izabare mesto instalacije XAMPP aplikacije:
Slika 11.3 Biranje lokacija za instalaciju
INSTALACIJA XAMPP PAKETA DRUGI DEO U ovoj sekciji biće objašenjen drugi deo instalacije XAMPP paketa Nakon biranja lokacije za instalaciju pritisnite dugme Next I deštiklirajte Learn more about Bitnami for XAMPP I idite opet na opciju Next. Kada je instalacija spremna za instalaciju idite na dugme Next.
71
Poglavlje 11 Vežba 1
Slika 11.4 Pokrenuta instalacija XAMPP-a (PHP I MySQL server)
Nakon uspeše instalacije XAMPP-a možete pokrenuti Apache server kao i MySQL server klikom na Fisnih dugme I otvaranjem XAMPP Control Panela.
Slika 11.5 Uspešna intalacija XAMPP-a.
Slika 11.6 Xampp Control Panel
72
Poglavlje 11 Vežba 1
INSTALACIJA GIT-A Cilj ove sekcije je da prikaže studentu kako da instalira Git na svom računaru Nakon biranja komponenti potrebno je da se izabare mesto instalacije XAMPP aplikacije: Nakon preuzimanja Git-a sa navedenog sajta potrebno je pokrenuti instalaciju.
Slika 11.7 Početni ekran instalacije za Git
Na ovom koraku potrebno je kliknuti dugme Next a potom prihvatiti licencu.
Slika 11.8 Prihvatanje lincence klikom na Next
Nakon prihvatanje licence klikom na Next potrebno je odabrati lokaciju instalacije Git-a.
73
Poglavlje 11 Vežba 1
Slika 11.9 Biranje lokacije za instalaciju Git-a
INSTALACIJA GIT-A DRUGI DEO Cilj ove sekcije je da studentu prikaže kako da instalira Git na svom računaru Sledeći korak je biranje komponenti koje ostavljamo na standardnim podešavanjima.
Slika 11.10 Biranje komponenti za instalaciju
Nakon biranja komponenti potrebno je da se izabare mesto instalacije XAMPP aplikacije: Nakon preuzimanja Git-a sa navedenog sajta potrebno je pokrenuti instalaciju. Nakon biranja komponenti potrebno je pritisnuti dugme Next a potom odabrati kako će se zvati folder u Start meniju za Git.
74
Poglavlje 11 Vežba 1
Slika 11.11 Naziv foldera za Git u Start meniju
Nakon ovog koraka potrebno je kliknuti na Next a potom odbrati Use Git from Windows Command Prompt
Slika 11.12 Podešavanje GIt-a da radi iz Command Prompt-a
INSTALACIJA GIT-A TREĆI DEO Cilj ove sekcije je da studentu prikaže kako da instalira Git na svom kompjuteru Nakon ovoga koraka potrebno je kliknuti na Next ostaviti podešavanje za encoding u tekstualnim fajlovima I opet ići na Next. Za konzolu je potrebno odabrati Use Windows default console window.
75
Poglavlje 11 Vežba 1
Slika 11.13 Biranje windows konzole za Git
Nakon ovog koraka ponavljati Next komandu do početka instalacije.
Slika 11.14 Instalacija Git-a
Nakon uspešne instalacije pojaviće se prozor na kome je potrebno pritisnuti Finish.
Slika 11.15 Gotova Git instalacija
76
Poglavlje 11 Vežba 1
INSTALACIJA NODE JS PACKAGE MANAGER-A Cilj ove sekcije je da studentu prikaže kako da instalira NPM na svom računaru Nakon preuzimanja Node JS-a sa navedenog sajta potrebno je pokrenuti instalaciju.
Slika 11.16 Početak instalacije NodeJS-a
Pritsnite dugme Next a potom prihvatite uslove korišćenja i opet kliknite Next.
Slika 11.17 Prihvatanje licence
Nakon prihvatanja uslova potrebno je odabrati lokaciju instalacije i opet pritisnuti dugme Next.
77
Poglavlje 11 Vežba 1
Slika 11.18 Biranje lokacije za instalaciju
INSTALACIJA NODE JS PACKAGE MANAGER-A DRUGI DEO Cilj ove sekcije je da studentu prikaže kako da instalira NPM na svom kompjuteru Nakon ovoga potrebno je odabrati sve komponente za instalaciju.
Slika 11.19 Odabir svih paketa
Nakon klikna Next pritisnuti opet Next i zatim Install dugme. Instalacija će početi.
Slika 11.20 Instalacija NodeJS-a je u procesu
Nakon instalacije potrebno je kliknuti Finish dugme
78
Poglavlje 11 Vežba 1
Slika 11.21 Uspešna instalacija NodeJS Package Manager-a
INSTALACIJA NOTEPAD++-A Cilj ove sekcije je da studentu prikaže kako da instalira Notepad++ na svom računaru Nakon preuzimanja Notepad++-a sa navedenog sajta potrebno je pokrenuti instalaciju. Prvo je potrebno izabrati jezik instalacije a potom kliknuti na dugme Next.
Slika 11.22 Početan instalacije Notepad++ aplikacije
Klikom na dugme Next otvaraju se uslovi korišćenja aplikacije pa treba pritisnuti dugme I Agree. Nakon prihvatanja uslova korišćenja potrebno je odabrati lokaciju instalacije.
79
Poglavlje 11 Vežba 1
Slika 11.23 Lokacija za intalaciju Notepad-a++
Nakon biranja lokacije potrebno je pritisnuti dugme Next a zatim ponovo Next pošto ćemo instalirati sve standardne pakete za Notepad++. Ostavićemo i ostale komponente po standaru pa treba da pritisnemo dugme Install.
Slika 11.24 Biranje dodatnih komponenti
INSTALACIJA NOTEPAD++-A DRUGI DEO Cilj ove sekcije je da studentu prikaže kako da instalira Notepad++ na svom kompjuteru Nakon odabira komponenti pritisnuti dugme Install i instalacija treba da počne.
80
Poglavlje 11 Vežba 1
Slika 11.25 Instaliranje Notepada++
Nakon instaliranja pokazaće se prozor sa informacijom o završetku instalacije gde je potrebno pritisnuti Finish.
Slika 11.26 Uspešna instalacija Notepad++-a
POKRETANJE PRVOG PHP PROJEKTA U ovoj sekciji student će naučiti kako da pokrene svoj prvi PHP projekat U C:/xampp/htdocs je potrebno kreirati folder projekta (it255) a potom kreirati unutar njega fajl index.php
81
Poglavlje 11 Vežba 1
Slika 11.27 Kreirani index.php fajl
Otvorite fajl preko Notepad++ programa desnim klikom na File pa onda klikom with Edit with Notepad++. Unutar Notepad-a napisati sledeći kod:
Nakon ovoga potrebno je da upalimo Apache server preko XAMPP Control Panel-a koji ste prethodno instalirali. Apache palimo klikom na dugme Start sa desne strane.
Slika 11.28 Startovanje Apache servera
Nakon uspešnog startovanja Apache servera potrebno je izaći na adresu http://localhost/ it255/ i ispisaće se poruku „Hello World“
KAKO POSTAVITI PHP PROJEKAT NA GITHUB U ovoj sekciji student će naučiti kako da svoj PHP projekat postavi na GitHub Kada smo postavili PHP projekat možemo ga postaviti na GitHub kako bi mogli kasnije projekat da nadogarđujemo i kako bi tu postavljali ubuduće domaće zadatke. Prvo je potrebno da upalimo Command Prompt iz Windowsa ( Ctrl + R pa cmd i Run). A potom da dođemo do foldera gde nam se nalaze naši PHP fajlovi. Ovo možemo uraditi komandom cd C:\xampp\htdocs\it255
82
Poglavlje 11 Vežba 1
Slika 11.29 Otvaranje foldera it255 preko Command Prompta
Nakon ulaska u folder treba da inicializujemo GIT repozitorijum, ovo možemo uraditi komandom git init
Slika 11.30 Kreiranje lokalnog Git repozitorijuma
Ukoliko niste ranije potrebno je da setujete promenjive za Vaš username i emejl za Git ovo uradite sledećim komandama: git config --global user.name "John Doe" git config --global user.email [email protected]
Nakon konfiguracije treba da dodamo sve fajlove u GIT repozitorijum ovo možemo uraditi komandom git add -A
Slika 11.31 Dodavanje svih fajlova na lokalni Git
KAKO POSTAVITI PHP PROJEKAT NA GITHUB DRUGI DEO U ovoj sekciji student će naučiti kako da postavi fajlove na Git-u kao aktuelne 83
Poglavlje 11 Vežba 1
Nakon ovoga potrebno je da fajlove komitujemo tj da fajlove stavimo kao aktuelne na repozitorjumu ovo radimo komandom git commit -m “Poruka komita”.
Slika 11.32 Postavlje fajlova kao aktuelnih na lokalnom Git-u
Kada završite commit treba kreirati nalog na GitHub.com i napraviti repozitorijum kako bi mogli kod da objavite na internet zbog timskog rada.
PRAVLJENJE GITHUB NALOGA U ovoj sekciji studentu će biti objašnjeno kako na GitHub nalogu da napravi repozitorijum Prvo je potrebno da odete na sajt http://GitHub.com I napravite nalog. Potom se ulogujte na nalog.
Slika 11.33 Kreiranje repozitorijuma koristeći GitHub
Kada kliknete na New Repository izaćiće Vam forma u kojoj popunjavate ime vašeg repozitorijuma i njegov opis
84
Poglavlje 11 Vežba 1
Slika 11.34 Pravljenje repozitorijuma na GitHub-u.
Kada uspešno kreirate repozitorijum dobićete Git adresu samog repozitorijuma koju treba da kopirate jer nam treba za git push funkciju koja stavlja repozitorijum na internet.
Slika 11.35 Adresa napravljenog GitHub repozitorijuma.
POSTAVKA PODATAKA SA LOKALNOG GIT-A NA UDALJENI (GITHUB) Cilj ove sekcije je da pokaže studentu kako da poveže svoj lokalni git sa udaljenim GitHub-om Nakon kreiranja repozitorijuma potrebno je da se vratimo u komandu liniju i dodamo remote repozitorijum komandom git remote add origin https://github.com/vasicvuk/it255.git (umesto ovog linka ide link do vašeg repozitorijuma.
Slika 11.36 Dodavanje udaljenog git repozitorijuma
Nakon ovoga možemo podići verziju koda na GitHub koristeći komandu git push origin master.
85
Poglavlje 11 Vežba 1
Slika 11.37 Podizanje koda na GitHub
Nakon ovoga upisati svoj Username i Password za GitHub i repozitorjum je postavljen na web.
Slika 11.38 Uspešno postavljanje na GitHub
Nakon ovoga možemo videti i uspešan commit na GitHub-u
Slika 11.39 Uspešan commit na GitHub-u
VIDEO KLIP - UVOD U PHP Uvod u PHP - video Ova lekcija sadrži video materijal. Ukoliko želite da pogledate ovaj video morate da otvorite LAMS lekciju.
PRIMER ZA SAMOSTALNI RAD Pokušajte sami da instalirate na svom računaru sve potrebna alate za razvoj početne veb aplikacije koja je rađena u okviru vežbe u ovoj lekciji.
86
Poglavlje 11 Vežba 1
Proverite da li ste sproveli sledeće aktivnosti: 1. Instalirani supotrebnisledeći alati: • Xampp 5.5.30 Node JS (Node JS Package Manager NPM) 5.4.0 Git 2.7.0 Notepad++ 2. Pokretanje prvog PHP projekta 3.Postaviti PHP projekat na GitHub
87
Poglavlje 12 Domaći zadatak 1 DOMAĆI ZADATAK BROJ 1 Za domaći zadatak student treba kući da podesi sve što je potrebno za kreiranje PHP projekta Za domaći zadatak student treba kući da podesi sve što je potrebno za kreiranje PHP projekta a potom: 1. Kreira PHP projekat sa imenom MetHotels.2. Napravi GitHub nalog: imeprezimebrojIndeksa3. Podigne kod svog PHP projekta na GitHub.4. Pokrene PHP projekat na Apache serveru5. Pošalje mail asistentu sa slikom pokrenute aplikacije kao i linkom ka GitHub repozitorijumu gde je podignut kod. Domaći treba slati asistentu na mejl: [email protected] za studente u Beogradu a na mejl [email protected] za studente u Nišu.
88
Zaključak INERNET I WORLD WIDE WEB Za izradu veb aplikacija važno je sagledati istorijat web-a, znati osnovno o dizajnu veb aplikacija i projektovanju veb sistema. Proučiti primere dobre prakse izrade veb aplikacija. U ovoj lekciji student je naučio osnovno o elementima interneta, TCP/IP protokolu i njegovoj vezi sa OSI modelom, protokoli koji se koriste, kako funkcioše web server pozivi i dostavljanje HTML-a od strane servera. Opisana je evolucija veba koja se može pratiti tragom nekoliko dimenzija i iz više perspektiva: • • • • • • •
rastom broja Veb sajtova i Veb stranica; rastom broja korisnika Veba; brojem poseta; funkcionalnostima i interaktivnošću Veb aplikacija; tehnologijama korišćenim za razvoj Veb aplikacija; socijalnom i poslovnom uticaju Veba ili njihovim kombinacijama. uspostavljanje veza Veb inženjeringa i ostalih disciplina
89
Related Documents
Internet I World Wide Web
March 2021
0
Wbt-internet I Www, Web Dizajn, Html5 I Css3
March 2021
0
World Wide Gk Second Version.pdf
January 2021
0
World War I Reader
January 2021
1
Internet: Sales
January 2021
1
How Do I Create A Web Page?
February 2021
1
More Documents from "Chlero Gutierrez"
Internet I World Wide Web
March 2021
0
Understanding Pathophysiology, Fifth Edition - Sue Huether.pdf
February 2021
2
Lp Gastritis
January 2021
1
The Post-war Consensus
March 2021
0
Tm-1401 Programmable Macro Language (basic)
January 2021
1