Transcript Document

ASP
Tehnologija za
kreiranje aktivnih Web aplikacija
Uvod
•
•
ASP - Active Server Pages (aktivne serverske strane)
Microsoft-ova tehnologija kojom se povećava
fukcionalnost Web aplikacija.
•
ASP strane su datoteke koje sadrže HTML tagove, tekst
i skript naredbe.
•
Ove strane mogu da pozivaju ActiveX komponente i na
taj način ugrađuju funkcionalnost koja se teško postiže
drugim tehnologijama.
Uvod
• To je programski kod koji dinamički generiše HTML Web
stranu.
• Uvek kada korisnik zahteva neku ASP Web stranu sa nekog
Web sajta, ASP kod, u tom trenutku, počinje sa izvršavanjem
na Web server-u.
• Izvršavanje ASP koda generiše HTML kod, koji se zatim
šalje čitaču i upotrebljava za kreiranje Web strane na
korisnikovom ekranu.
Razvoj tehnologije
• ASP je zvanično prvi put predstavio Microsoft 16. jula 1996.
godine.
• Prva verzija (ASP 1.0) je puštena u prodaju novembra 1996.
godine.
• Napredak počinje tek marta 1997. godine, kada je prva verzija
proširena sa Microsoft-ovim Internet Information Server-om (IIS).
• Microsoft je nastavio sa razvojem ASP-a, i 1998. godine je izašla
nova verzija (ASP 2.0) zajedno sa Internet Information Server-om
4.0 i Personal Web Server-om 4.0, kao podrške novoj verziji ASPa.
Razvoj tehnologije
• ASP 2.0 je, u odnosu na ASP 1.0, obogađen novim
modelom komunikacije između brousera i servera.
• Sa pojavom Windows-a 2000, u koji je ugrađena nova
verzija Internet Information Server-a 5.0 zajedno sa ASP-om
3.0, ispravljeni su svi nedostaci ranijih verzija i postignuta je
potrebna funkcionalnost.
•2002. godine pojavljuje se Visual Studio .NET i u okviru
njega ASP.NET
Kreiranje ASP strana
• Jedna ASP datoteka je tekstualna datoteka sa ekstenzijom
.asp, koja predstavlja kombinaciju teksta, HTML tagova i
ASP skript naredbi.
• Za bilo koju HTML datoteku (sa ekstenzijama .html ili .htm)
u koju želimo da dodamo ASP skript naredbe, potrebno je
promeniti ekstenziju datoteke na .asp.
• Može se koristiti bilo koji tekst editor za kreiranje ASP
datoteka.
• Ako se želi veća podrška za kreiranje ASP datoteka,
poželjno je koristiti pomoćne alate kao što su Microsoft Visual
InterDev i Microsoft FrontPage.
Struktura ASP strane
TIP
Tekst
HTML oznake
ASP naredbe
SVRHA
TUMAČ
OZNAKE
Informacije koje se
fiksno upisuju a koje
treba prikazati
korisniku
Čitač na
korisnikovom PC-ju
pokazuje tekst
jednostavan ASCII
tekst
Uputstva čitaču o
tome kako da
formatira tekst i
prikaže slike
Čitač na
korisnikovom PC-ju
tumači oznake za
formatiranje teksta
Svaka oznaka unutar
graničnika <>
<TABLE>
</TABLE>
Uputstva Web
serveruo tome kako se
stvaraju delovi
stranice koje treba
poslati
Web server Web
lokacije pomoću ASP
oznaka tipa izvršava
ASP kod
Sve između <% %>
Obrada skripta na Serveru
Mašina
klijenta/čitač
Web server
Zahtev
http://www.fon.bg.ac.yu
Datoteka
1.asp
asp.dll
Čist HTML
Mašina za
skriptovanje
Mašina za
skriptovanje
Skript naredbe
• Za razliku od HTML tagova, koji služe za formatiranje teksta
ili čitanje grafičkih, video ili zvučnih datoteka, skript naredbe
zahtevaju od Web servera izvršavanje akcija.
• Skript naredbe mogu, na primer, zapamtiti korisnikovo ime u
promenljivoj, prikazati ga na strani koja se šalje brouseru ili ga
smestiti u bazu podataka.
• Skript naredbe se razlikuju od teksta uz pomoć graničnika.
Graničnik je slovo ili sekvenca slova, koja označava početak ili
kraj nekog bloka podataka.
• U slučaju HTML-a, graničnici su simboli < i >, koji
ograđuju HTML tagove.
Skript naredbe
• ASP koristi <% i %> graničnike da bi ogradio skript
komande.
• Između graničnika se stavljaju bilo koje validne naredbe
odgovarajućeg skript jezika.
• Sledeći primer ilustruje jednostavnu ASP stranu, koja sadrži
skript naredbu:
<HTML>
<BODY>
Ova strana je zadnji put osvezena <%= Now %>.
</BODY>
</HTML>
•Funkcija Now u VBScript-u vraća trenutni datum i vreme.
Skript naredbe
• Kada Web server izvršava ovu stranicu, on zamenjuje
<%=
Now %> sa trenutnim datumom i vremenom, i šalje stranicu u
brouser.
• Izgled stranice je:
Ova strana je zadnji put osvezena 9/12/2000 2:20:00 PM.
• Podrazumevani primarni skript jezik je VBScript. Može se
koristiti bilo koji drugi skript jezik kao primarni, ukoliko za njega
postoji podrška.
Mešanje HTML-a i skript naredbi
• Između ASP graničnika se smešta bilo koji iskaz, izraz,
procedura ili funkcija, koja mora biti validna za primarni
skript jezik.
• Iskaz, u VBScript-u i drugim skript jezicima, je sintaksno
kompletan blok koji opisuje neku vrstu akcije, deklaracije
ili definicije.
• Uslovni iskaz If...Then...Else je najčešće pojavljivani iskaz
u VBScript jeziku.
• Njegova konstrukcija je data u sledećem primeru:
Mešanje HTML-a i skript naredbi
<%
If Time >= #12:00:00 AM# And Time < #12:00:00 PM#
Then
Pozdrav = “Dobro jutro!”
Else
Pozdrav = “Zdravo!”
End If
%>
<%
= Pozdrav
%>
Mešanje HTML-a i skript naredbi
• Ovaj iskaz dodeljuje vrednost Dobro jutro! ili Zdravo!
promenljivoj Pozdrav.
• Komanda <%= Pozdrav %> šalje trenutnu vrednost
promenljive u brouser.
• Sistemska promenljiva Time sadrži trenutno vreme Web
servera.
• HTLM tekst se može ubaciti između delova iskaza.
• Ilustrovano na prethodnom primeru izgleda ovako:
Mešanje HTML-a i skript naredbi
<%
if Time >= #12:00:00 AM# And Time < #12:00:00 PM#
then
%>
Dobro jutro!
<%else%>
Zdravo!
<%end If %>
ASP direktive
• ASP obezbeđuje direktive koje nisu deo skript jezika koji
koristimo.
• Ove direktive mogu biti izlazne i izvršne.
•Izlazne ASP direktive <%= izraz %> prikazuju vrednost
izraza.
• ASP izvršna direktiva <%@ ključna_reč %> daje ASP-u
informaciju koja mu je potrebna za izvršavanje .asp
datoteka.
•Na primer, sledeća direktiva postavlja VBScript kao primarni
skript jezik strane:
<%@ LANGUAGE=VBScript %>
ASP direktive
• Izvšne direktive treba da se nalaze u prvoj liniji ASP datoteke. i
• Izvršne direktive imaju sledeće ključne reči:
– postavlja skript jezik strane.
– postavlja kodnu stranu (kodove za slova).
– postavlja lokalni identifikator strane.
– određuje da će se strana izvršavati u
transakcijonom režimu.
ENABLESESSIONSTATE – određuje da li ASP srana koristi
session stanje.
LANGUAGE
CODEPAGE
LCID
TRANSACTION
• Može se uključiti više ključnih reči u direktivu.
Rad sa skript jezicima
• Skript jezici predstavljaju posrednike između HTML-a i
programskih jezika, kao što su Java, C++ ili Visual Basic.
• Centralni deo skript jezika je formatiranje teksta i pozivanje
kompajliranih komponenti, pisanih u nekom programskom
jeziku.
• ASP omogućava Web programerima pisanje kompletnih
procedura, korišćenjem različitih vrsta skript jezika.
•Kako se skript kod čita i interpretira na strani servera,
korisnički (klijentski) čitač, koji zahteva ASP datoteku, ne
mora da ima podršku za skript jezike.
Rad sa skript jezicima
• U jednoj ASP datoteci može se istovremeno koristiti više
skript jezika.
• Da bi se na Web serveru koristo skript jezik, mora da postoji
instaliran odgovarajući Script engine. Script engine je
program- interpretator koji izvršava naredbe pisane u
određenom skript jeziku.
• ASP u sebi sadrži dva Script engine–a : Microsoft Visual
Basic Scripting Edition (VBScript) i Microsoft JScript. Za
ostale skript jezike, kao što su REXX ili Perl potrebno je
posebno instalirati odgovarajući Script engine.
Promenljive i konstante
• Za deklaraciju promenljive u VBScript-u, koristi se Dim,
Public i Private iskazi.
• Na primer:
<% Dim KorisnickoIme %>
• JScript zahteva deklaraciju samo promenljivih koje su
lokalne za proceduru.
• Da bi se deklarisalai promenljiva, koristi se var iskaz.
• Na primer:
<% var KorisnickoIme; %>
Promenljive i konstante
• Neke od osnovnih komponenti ASP-a, kao što su ActiveX
Data Objects (ADO), definišu konstante koje se mogu
koristiti u skriptovima.
• Komponente deklarišu konstante u Component Type
bibliotekama, datotekama koje sadrže informacije o
objektima i tipovima koji su podržani od strane ActiveX
komponente.
•Jednom kada se deklariše Type biblioteka u Global.asa
datoteci, deklarisane konstante se mogu koristiti u aplikaciji
bilo gde u skriptu.
<!--METADATA TYPE=”typelib”
FILE=”c:\program files\common\ado\msado15.dll”
-->
Procedure
• Sledeći primer ilustruje kreiranje i pozivanje procedura u
jezicima VBScript i JScript:
<%@ LANGUAGE = VBSCRIPT %>
<HTML>
<BODY>
<% Call Stamanje %>
<BR>
<% Call StampanjeDatuma()%>
</BODY>
</HTML>
Procedure
<%
Sub Stamanje
Response.Write “Poruka”
End Sub
%>
<SCRIPT LANGUAGE=JScript RUNAT=Server>
function StampanjeDatuma()
{
var x
x = new Date()
Response.Write(x.toString())
}
</SCRIPT>
Komponente i objekti
• ActiveX komponente su ključ za izgradnju moćnih Web
aplikacija.
• Komponente obezbeđuju objekte koji se mogu koristiti u
skriptovima za obavljanje različitih zadataka.
• Mogu da se koriste komponente u skriptovima bez ikakvog
znanja o načinu rada komponente.
• Potrebno je samo znati pristup objektima koje komponenta
obezbeđuje.
• Komponente se mogu pisati u bilo kom programskom jeziku
koji podržava Component Object Model (COM), kao što su
C, C++, Java ili Visual Basic.
Komponente i objekti
• Da bi komponenta mogla da se izvršava na Web serveru
mora biti instalirana.
• Na primer, ASP AdRotator komponenta rotira slučajno niz
grafičkih slika. AdRotator komponenta obezbeđuje jedan
objekat, čiji je PROGID MSWC.AdRotator.
• Za kreiranje instance AdRotator objekta koriste se sledeći
iskaz.
<% Set MojAdRotator =
Server.CreateObject(“MSWC.AdRotator”) %>
Kolekcije
• Većina ASP build-in objekata podržava kolekcije.
• U kolekciji se smeštaju stringovi, brojevi, objekti i druge
vrednosti.
• Kolekcija je slična nizu, s tom razlikom što se ona
automatski povećava i smanjuje dodavanjem ili uzimanjem
stavki iz nje.
• Određenoj stavki kolekcije može se pristupiti navođenjem
njenog imena.
• Na primer, Contents kolekcija čuva jedan deo promenljivih
smeštenih u Session objektu.
Kolekcije
• Čuvanje korisničkih informacija u Session objektu
ilustrovano je u sledećem primeru:
<%
Session.Contents(“Ime”) =“Petar”
Session.Contents(“Prezime”) =“Petrovic”
Session.Contents(“Starost”) = 29
%>
Vidljivost objekata
• Vidljivost objekta određuje koji skript može da koristi objekat.
• Usvojeno je da kreiranjem instance objekta, objekat ima
vidljivost strane, tj. svaka skript naredba na istoj ASP strani može
da koristi takav objekat.
• Sesijski vidljiv objekat se kreira za svaku novu sesiju u jednoj
aplikaciji i oslobađa kada se sesija završava.
• Ako se koristi sesijska vidljivost, potrebno je poznavati model
komponente koja obezbeđuje objekat. Razlog tome je što model
komponente utiče na performanse i bezbednost sadržaja
objekta.
Vidljivost objekata
• Sledeći primer kreira sesijski vidljivu instancu AdRotator
objekta:
<OBJECT RUNAT=Server SCOPE=Session ID=MojAd
PROGID=”MSWC.Adrotator”>
</OBJECT>
• Aplikaciono vidljiv objekat je instanca jednog objekta koja
se kreira pri startovanju aplikacije. Ovaj objekat je deljiv od
strane svih klijentskih zahteva.
• Da bi se objektu dodelila aplikaciona vidljivost, potrebno je
objekat smestiti u ASP Application build-in objekat.
ASP build-in objekti
• ASP obezbeđuje build-in objekte, koji olakšavaju
prikupljanje informacija (koje su poslate od strane klijenta),
prepoznavanje čitača i čuvanje informacija o korisniku.
• Application objekat se koristi za deljenje informacija
između svih korisnika date aplikacije.
• Request objekat se koristi za dobijanje pristupa
informacijama koje se dobijaju preko HTTP zahteva.
• Request objekat, takođe, omogućava pristup binarnim
podacima koji se čalju na serveru.
• Response objekat se koristi za kontrolu informacija koje se
šalju korisniku.
ASP build-in objekti
• Server objekat obezbeđuje pristup atributima i metodama na
serveru. Najkorišćeniji metod Server objekta je
Server.CreateObject, koji se koristi za kreiranje instance
ActiveX komonente.
• Session objekat čuva informacije potrebne za određenu
korisničku sesiju. Promenljive smeštene u Session objektu
nisu izgubljene prilikom prelaska sa strane na stranu u okviru
aplikacije.
• ObjectContext objekat se koristi za izvršavanje ili
prekidanje transakcija, aktiviranih od strane ASP skriptova.
Objekti u ASP-u
Objekat Application
Zahtev klijenta
Objekat Session
Klijent
Objekat
Request
Odgovor servera
Objekat
Response
Zahtev klijenta
Objekat Session
Objekat
Request
Klijent
Odgovor servera
Objekat
Response
Objekat
Server
Objekat
ASPError
Objekat Request
• Kada čitač pozove Web stranicu kaže se da je on uputio
zahtev
• Pored imena stranice čitač šalje i razne druge informacije
serveru
• ASP objekat Request prihvata sve ove informacije i čini ih
čitljivijim za server
• Objekat Request ima pet kolekcija
• QueryString - niz znakova za dodatni zahtev
• Form - skuplja podatke sa formulara
• Servervariables - promenljive servera
• Cookies - posebna kategorija informacija prethodno
ostavljenih kod klijenta
• ClientCertification - provera klijenta
Objekat Response
• Uloga mu je da pošalje informacije koje je tražio klijent
• Metode ovog objekta su
• Buffer - sačuvaj privremeno
• Write - piši
• Redirect - ukoliko traba korisnika da preusmerimo na
druge stranice unutar aplikacije da bi dobio informaciju
• Content Expiration - ovo je zapravo keš (cache) zamišljen
kao metod za raterećenje servera. Kada se radi sa
dinamičkim podacima moramo biti sigurni da korisnik
dobija najsvežije podatke
Objekat Session
• Osnovni HTTP protokol ne pamti ko je sve spojen na njega
• Svaki zahtev se obrađuje na serveru svaki put kada klijent
zatraži nešto sa njega
• Objekat Session može da pamti podatke o korisniku na
jedinstven i pouzdan način
• Objekat Session je skup promenljivih koje definišemo i
čuvamo na serveru
• Sve dok je posetilac priključen na sajt te promenljive postoje
mogu da se koriste indentifikuju i prate
Objekat Application
 Ono što radi objekat Session za pojedinačnog korisnika,
objekat Application radi za ceo sajt, celu aplikaciju
 Razlika je u tome što promenljivoj može da priđe bilo koji
korisnik u bilo koje vreme
 Svaka stranica unutar aplikacije može da priđe promenljivoj
i da prikaže vrednost svim korisnicima koji su trenutno
logovani
Objekat Server
 Objekat nižeg nivoa i može da se koristi za izvršavanje
određenih zadataka unutar ASP-a
 Najčešća upotreba je kreiranje instanci komponenti sa
strane servera
Set InstanceName =
Server.CreateObject("ClassName.ComponentName")
ActiveX komponente
• Ovde je dat pregled ActiveX komponenata koje su
uključene u ASP.
• DatabaseAccess komponenta obezbeđuje pristup bazi
podataka iz Web aplikacije.
• AdRotator komponenta se koristi za naizmenično
prikazivanje niza slika i obezbeđivanje linkova od prikazane
slike do nekog drugog URL-a.
• ContentRotator komponenta može automatski da rotira
HTML sadržaj stringova na Web strani.
ActiveX komponente
• Browser Capabilities komponenta može kontrolisati sadržaj koji
se šalje u čitač u zavisnosti od mogućnosti čitača.
• File Access komponenta obezbeđuje objekte koji se koristite za
brisanje i modifikaciju datoteka u file sistemu računara.
• Content Linking komponenta olakćava logičku navigaciju kroz
.asp datoteke u jednoj aplikaciji.
• MyInfo, Status, System, i Tools komponente obezbeđuju
kompatibilnost aplikacija, koje su razvijene za Macintosh
platforme.
• Page Counter komponenta broji i prikazuje koliko puta je Web
strana zahtevana.
Slanje sadržaja u čitač
• Kada se jedan ASP skript izvršava, bilo koji tekst koji nije
zatvoren ASP graničnicima ili <SCRIPT> tagovima, se
jednostavno vraća u čitač.
• Eksplicitno se može poslati sadržaj u brouser korišćenjem
Response objekta.
• Na primer, sledeći iskaz šalje različite pozdrave korisniku u
zavisnosti od toga koji put korisnik posećuje stranu:
<H3 ALIGN=CENTER>
<% If FirstTime Then %> Dobrodošli na stranu.
<% Else %> Dobrodošli ponovo na stranu.
<% End If %> </H3>
Slanje sadržaja u čitač
• Sledeći skript daje potpuno isti rezultat kao i predhodni:
<% If FirstTime = True
Then
Response.Write
“<H3 ALIGN=CENTER>Dobrodosli na stranu.</H3>”
Else
Response.Write
“<H3 ALIGN=CENTER>Dobrodosli ponovo na stranu.</H3>”
End If %>
Slanje skriptova u čitač
• Mogu se pisati skriptovi na strani servera koji sadrže i skript
naredbe koje se šalju u čitač.
• Ovo se omogućava kombinovanjem skriptova na strani klijenta,
koji su zatvoreni u HTML komentarima, sa skriptovima na strani
klijenta, koji su zatvoreni graničnicima:
<SCRIPT LANGUAGE="VBScript">
<!—
klijenski skript
<% serverski skript %>
klijenski skript
<% serverski skript %>...
-->
</SCRIPT>
Uključivanje datoteka
• Serverske direktive omogućavaju ubacivanje sadržaja jedne
datoteke u drugu, pre nego što Web server izvrši drugu
datoteku.
• Da bi se ubacila datoteku u .asp datoteku, koristi se sledeća
sintaksa:
<!--#include virtual | file ="filename"-->
• Virtual i file ključne reči određuju tip putanje koji se koristi
da bi se uključila datoteka, a filename je putanja i ime
datoteke koja se uključuje.
<!--#include virtual ="/myapp/footer.inc"-->
Prihvatanje podataka iz HTML
formulara
• ASP Request objekat obezbeđuje dve kolekcije koje znatno
olakšavaju prihvatanje informacija iz formilara (QueryString
i Form)
• QueryString kolekcija vraća vrednosti iz formulara koje se
prenose na Web server kao prateći tekst URL zahteva.
• Na primer URL zahtev će biti poslat na server u sledećem
obliku:
http://scripts/Myfile.asp?ime=Petar&prezime=Petrovic&godi
na=30&userstatus=new
Prihvatanje podataka iz HTML
formulara
• Myfile.asp može da sadrži sledeći skript za obradu
formulara:
Tvoje ime je
<%= Request.QueryString("ime") %>
<%= Request.QueryString("prezime") %>.
Ti si
<%= Request.QueryString("godina") %>
godina star.
Pristupanje bazi podataka
• ActiveX Data Objects (ADO) je proširiva tehnologija koja
omogućava pristup bazi podataka preko Web strane.
• ADO obezbeđuje Connection objekat, koji se koristi za
upravljanje vezom između aplikacije i ODBC baze podataka.
• Connection objekat sadrži različite atribute i metode koji se
koriste za otvaranje konekcije, zatvaranje konekcije i slanje
obaveštenja o modifikaciji podataka.
• Za postavljanje veze sa bazom podataka, mora se kreirati
instanca Connection objekta.
Pristupanje bazi podataka
• Na primer sledeći skript instancira Connection objekat i
izvršava otvaranje konekcije:
<% 'Kreiranje Connection objekta
Set cn = Server.CreateObject("ADODB.Connection")
'Otvaranje konekcije, string ukazuje na DSN
cn.Open "FILEDSN=MyDatabase.dsn"%>
Pristupanje bazi podataka
(nastavak)
•Ubacivanje sloga u tabelu baze podataka
<%
Set cn = Server.CreateObject (“ADODB.Connection”)
cn.Open “FILEDSN=MyDatabase”
cn.Execute = “INSERT INTO Musterije(Ime)VALUES(“Petar”)”
%>
Primer: Logovanje na stranu
• U ovom primeru, biće prikazano kako se implementira
logovanje na stranu pomoću korisničkog imena i pasvorda.
•Omogućeno je i čuvanje informacija za logovanje u cookieju. Datoteka login.asp je početna strana u kojoj se unose
informacije za logovanje, dok datoteka checkLogin.asp
proverava te informacije i prikazuje stranu koja potvrđuje
uspešnost provere.
Primer: Logovanje na stranu
• Sadržaj datoteke login.asp
<HTML>
<HEAD>
<TITLE>Cookie Test - Login</TITLE>
</HEAD>
<BODY>
Please enter your e-mail address and password to login to the
system.
<FORM ACTION = "CheckLogin.asp" METHOD="POST" >
E-Mail Address: <INPUT TYPE = "Text" NAME = "Email"
SIZE = "40"><BR>
Password: <INPUT TYPE = "Password" NAME = "Password"
SIZE = "10"><P>
Primer: Logovanje na stranu
<INPUT TYPE = "Checkbox" NAME = "SaveLogin"> Save
Login as a Cookie?<P>
<INPUT TYPE = "Submit" VALUE = "Login">
<INPUT TYPE = "RESET">
</FORM>
</BODY>
</HTML>
Primer “logovanje na stranu” 4
Sadržaj datoteke checkLogin.asp
<%
Dim bLoginSaved
If Request.Form("SaveLogin") = "on" Then
Response.Cookies("SavedLogin")("EMail") =
Request.Form("email")
Response.Cookies("SavedLogin")("pw") =
Request.Form("password")
Response.Cookies("SavedLogin").Expires = Date + 30
bLoginSaved = True
Else
bLoginSaved = False
End If
%>
Primer: Logovanje na stranu
<HTML>
<HEAD>
<TITLE>Cookie Test - Check Login</TITLE>
</HEAD>
<BODY>
<% If bLoginSaved Then
Response.Write "Saving Login information
cookie<HR>"
End If
%>
Thank you for logging into the system.<P>
E-Mail address confirmation: <%=
Request.Form("email")%>
</BODY></HTML>
to
a
Primer: Logovanje na stranu
• Rezultat izvršavanja ove aplikacije je prikazan na slici.
Primer: Logovanje na stranu
• Unošenjem vrednosti Milos za e-mail i password i biranjem
opcije Save Login dobija se slika :