|
|
| PREGLED PO
IZDANJIMA |
|
 Navodnici
izazivaju probleme Prilikom interpretacije ASP koda moguće je da dođe do
funkcionalnih problema i problema u prikazu sadržaja, iz razloga što navodnici
imaju dvojaku ulogu
 Ugrađene
ASP komponente u IIS Prilikom dizajniranja ASP stranica možemo koristiti usluge
objekata i komponenti koji su ugrađeni u IIS (Internet Information
Server)
 Naredba
#Include Instrukcija #include se koristi za kreiranje funkcija,
zaglavlja i podnožja stranica, ili uopšteno, za sve elemente koji se ponavljaju
na više stranica
 Kako
odrediti tip i verziju browser-a Pre nego što klijentu pošaljete sadržaj, poželjno je
testirati tip i verziju browsera, kako bi mogli na vreme preusmerite klijenta
ukoliko ne podržava primenjene stilove, skriptove i tagove
 Upis
u tekst fajlove, i njihovo iščitavanje Korišćenjem sistemskih objekata, vrlo lako je
moguće čitanje i upisivanje u tekstualne fajlove
 Instalacija
Personal Web Server-a Saznajte kako instalirati web server sa svim potrebnim
komponentama, i na taj način stvoriti uslove za bavljenjem ASP-om u kućnim
uslovima
ASP.NET
web kontrole ASP.NET obezbeđuje veliki skup standardnih web kontrola,
uključujući tu najprostije elemente GUI dizajna kao što su dugmad,
tekst-polja...
 Procesiranje
ASP.NET Stranica Umesto jednostavnog sekvencijalnog procesiranja, ASP.NET
koristi model vođen događajima, tzv. event-driven model
 Upoznavanje
sa ASP.NET tehnologijom Nakon ASP dolazi ASP.NET, deo Microsoft .NET
Framework-a
 Obrada
jednostavnog formulara (II deo) Kako
iskoristiti dvosmernost Internet komunikacija, i ostvariti interaktivnost između
web servera i web browsera (posetilaca)
 Obrada
jednostavnog formulara (I deo) Kako iskoristiti dvosmernost Internet komunikacija, i
ostvariti interaktivnost između web servera i web browsera (posetilaca)
 Na
vrhu stranice Kako obavezno započeti svaku ASP stranicu? Sa kojim
elementima i instrukcijama?
 Objekat
Response Šta predstavlja objekat Response? Koje su njegove metode
i osobine, i na koji način se koristi u web programiranju?
 Definisanje
varijabli Tipovi varijabli (apliakcione i sesione varijable) i
načini njihovog definisanja
 Procedure
(funkcije) i njihovo povezivanje Kako se definišu i pozivaju, VBScript i
JavaScript funkcije sa ASP stranica? Odgovor ćete pronaći u ovom prilogu
|
Navodnici
izazivaju probleme
|
Prilikom
interpretacije ASP koda moguće je da dođe do funkcionalnih
problema i problema u prikazu sadržaja, iz razloga što navodnici
imaju dvojaku ulogu |
| Kad
god budete primorani da koristite navodnike u ASP aplikacijama,
verujte, moguće je da iskrsnu neki od problema. Uzrok problema
leži u tome što navodnici, u isto vreme, predstavljaju i
normalne (obične), i specijalne znake. U ulozi specijalnih
simbola, razdvajaju stringove, odnosno oivičavaju ih. Da
budemo malo određeniji, dvostruki navodnici [ " ] određuju
granice stringova u VBScrip-u, a jednostruki navodnici [
' ] oivičavaju stringove u SQL iskazima.
| zapamtite:
· jednostruki navodnici razdvajaju stringove
u SQL-u
· dvostruki navodnici razdvajaju stringove
u VBScript-u |
Problemi
se najčešće javljaju kada recimo želite da u bazu podataka
dodate imena koja sadrže jednostruke navodnike (najčešće
engleska prezimena npr. Peter O'Tool). Druga mogućnost ya
javljanje problema je kada koristite metod Response.Write
za ispis teksta koji sadrži dvostruke navodnike.
Podrazumevana interpretacija karaktera navodnik je da je
to delilac stringova. Ovo je razlog zašto treba izbegavati
navodnike ukoliko želite da upotrebite njihovo karaktersko
značenje. Da bi izbegli navodnike, potrebno je da ih udvostručite.
Koristite [ " " ] da bi dobili dvostruke navodnike
(kao običan karakter) u VBScript-u i dva puta jednostruke
navonike [ " ] za jednostruki karakter-navodnik u SQL
stringovima
| izbegavanje
jednostrukih navodnika:
· strName = Replace("O'Tool",
"'", "''")
dobijanje "na izlazu" dvostrukih navodnika:
· Response.Write("Navodnici ""dele""
stringove") |
Kao
što možete zapaziti, u primerima imamo jako puno raznoraznih
navodnika, ponajviše dvostrukih. Ovo može programski kod
učiniti jako nečitkim. Drugo moguće rešenje je upotreba
funkcije Chr(), kao i upotreba konstanti. Pogledajte sledeće
primere:
Izbegavanje dvostrukih navodnika funkcijom Chr(34):
Response.Write("navodnici" & Chr(34) &
"dele" & Chr(34) & " stringove")
Izbegavanje dvostrukih navodnika upotrebom konstanti:
Const DUPL_NAV = """"
Response.Write("Navodnici" & DUPL_NAV &
"dele" & DUPL_NAV & " stringove")

|
Ugrađene
ASP komponente u IIS
|
Prilikom
dizajniranja ASP stranica možemo koristiti usluge objekata
i komponenti koji su ugrađeni u IIS (Internet Information
Server) |
| U
početnim ASP prilozima napomenuli smo da . Tada smo i naveli
najbitnije ugrađene objekte, a sada ćemo se pozabaviti ugrađenim
komponentama. Jedna od najpoznatijih ugrađenih komponenti
je i ADO (ActiveX Data Objects) komponenta koja služi za
direktan i vrlo pogodan pristup resursima baza podataka.
Ovom komponentom ćemo se i najviše baviti. Pored ADO komponente,
ASP podrazumeva i druge komponente koje dolaze sa instalacijom
IIS-a. Velika prednost ovih komponenti je što smanjuju potrebu
za programiranjem jer nude gotove koncepte, pa na vama ostaje
da samo pozivate njihove metode i osobine. Pored ovih ugrađenih
komponenti na tržištu postoji veliki broj komercijalnih
komponenti, čijom kupovinom možete sebi uštedeti dane i
dane programiranja. Pre nego što kupite i upotrebite ove
komercijalne komponente, raspitajte se kod svog budućeg
hosting provajdera, koje komponente podržava i da li dozvoljava
instalaciju dodatnih. Određeni broj provajdera ne dozvoljava
instalaciju dodatnih komponenti iz razloga bezbednosti i
stabilnost svojih sistema.
Ugrađene ASP komponente
Sada ćemo vam predstaviti sve komponente ugrađene u IIS
(po abecednom redu) i ukratko objasniti čemu koja komponenta
služi:
Ad Rotaror komponenta - komponenta koja olakšava rotiranje
oglasa - banera na ASP stranicama.
Browser Capabilities komponenta - komponenta koja omogućava
detekciju klijenata/čitača i na taj način obezbeđuje važne
statističke podatke.
Content Linking komponenta - komponenta koja obezbeđuje
lakše snalaženje sa tabelama sadržaja i lakše linkovanje.
Content Rotator komponenta - komponenta vrlo slična
komponenti Ad Rotaror s tim što se ovde radi o rotaciji
sadržaja na stranicama (uglavnom tekstualnih) i u to u određenom
procentu.
Counters komponenta - komponenta koja na jednostavan
način obezbeđuje brojače vašim stranicama.
Page Counter komponenta - komponenta koja predstavlja
naročitu vrstu brojača za praćenje saobraćaja na stranicama.
Permission Checker komponenta - složena komponenta koja
služi u zaštiti sadržaja.
Tools komponenta - složena višenamenska komponenta koja
pomaže u dinamičkom kreiranju prilagodljivih stranica.

|
|
|
Instrukcija
#include se koristi za kreiranje funkcija, zaglavlja i podnožja
stranica, ili uopšteno, za sve elemente koji se ponavljaju
na više stranica |
| Upotrebom
ASP skript jezika, odnosno #Include direktive, moguće je
sadržaj jednog fajla smestiti u ASP fajl, i to pre nego
što server izvrši tu stranicu. Instrukcija #Include se upotrebljava
za kreiranje funkcija, zaglavlja i podnožja stranica, ili
uopšteno, za sve elemente koji se ponavljaju na više stranica.
Kako se koristi naredba #include
Uzmimo, na primer, da imamo stranicu "mojastr.asp"
čiji je kod sličan ovome:
<html>
<body>
<h3>Prodaja:</h3>
<p><!--#include file="prodaja.inc"--></p>
<h3>Sada je:</h3>
<p><!--#include file="vreme.inc"--></p>
</body>
</html>
Evo i programskog koda stranice "prodaja.inc":
"Sektor prodaje je podelje u tri odeljenja..."
A evo i sadržaja stranice "vreme.inc":
<%
Response.Write(Time)
%>
Ukoliko učitate prvi programski kod u browser, i pozovete
View > Source, videćete sledeći HTML:
<html>
<body>
<h3>Prodaja:</h3>
<p>"Sektor prodaje je podelje u tri odeljenja..."</p>
<h3>Sada je:</h3>
<p>09:12:45 PM</p>
</body>
</html>
Sintaksa naredbe #include
Za uključivanje sadržaja bilo kog fajla u ASP stranicu,
umetnite naredbu #include unutar tagova za komentarisanje:
<!--#include virtual="naziv_fajla"-->
ili
<!--#include file ="naziv_fajla"-->
Pri
navođenju ove naredbe možete koristiti ključnu reč virtual,
kada vam je potrebno da putanja do fajla počinje virtuelnim
direktorijumom. Na primer, ukoliko se fajl "zaglavlje.inc"
nalazi u virtuelnom direktorijumu "/dodatni",
sledećom linijom bi uključili sadržaj fajla zaglavlje.inc
u fajl koji sadrži sledeću liniju.
<!-- #include virtual ="/dodatni/zaglavlje.inc"
-->
Suprotno prethodnom, koristićete ključnu reč file, onda
kada želite da ukažete na relativnu putanju do fajla. Relativna
putanja započinje nazivom direktorijuma u kome se nalazi
sam fajl. Na primer, ukoliko imate fajl koji se nalazi u
direktorijumu HTML, a fajl zaglavlje.inc senalazi u direktorijumu
"HTML\zaglavlja", sledećom linijom koda bi umetnu
li sadržaj fajla zaglavlje.inc u vaš ASP fajl:
<!-- #include file ="zaglavlja\zaglavlje.inc"
-->
Zapazite da je putanja umetnutog fajla, "zaglavlja\zaglavlje.inc",
relativna u odnosu na pozivajući fajl; ukoliko se skript
koji sadrži naredbu #include ne nalazi u direktorijumu /HTML,
instrukcija neće funkcionisati. Ključnu reč file takođe
možete koristiti i sa sintaksom (../), kada želite da uključite
sadržaj fajla koji se nalazi u višem hijerarhijskom nivou
direktorijuma

|
Kako
odrediti tip i verziju browser-a
|
Pre
nego što klijentu pošaljete sadržaj, poželjno je testirati
tip i verziju browsera, kako bi mogli na vreme preusmerite
klijenta ukoliko ne podržava primenjene stilove, skriptove
i tagove |
| Jedna
od velikih mogućnosti koje pružaju jezici na strani servera
je da možete testirati klijentsku kako bi identifikovali
klijenta. Naime, često ćete imati potrebu da pre slanja
sadržaja klijentu (browser-u), proverti da li njegov browser
uopšte podržava prikaz datog sadržaja. Moguće je da ste
već kreirali stranice koje su dizajnirane za ispravan prikaz
samo u IE i Netscape-i, verzije 4 ili više. Ili ste već
nakon testa stranica u nekim drugim browser-ima ili različitim
verzijama uvideli da se sadržaj ne prikazuje kako ste zamislili.
Zato ćemo vam, da bi izbegli ovakve probleme, u ovom tekstu
prikazati kako možete da detektujete određeni browser.
Za početak, pretpostavićemo da su vam se posetioci požalili
da je tekst, koji ste osenčili ili obojili nekom "drečećom"
bojom, veoma nečitljiv kada se stranica gleda u nekom posebnom
browser-u ili recimo na WebTV uređaju. Šta onda uraditi
- ukloniti datu boju sa celog sajta? Ukloniti senčenje?
Odgovor je - naravno, ne!
Rešenje je u tome da prvo pronađete alternativnu boju koja
je pogodna za WebTV ili neki drugi browser, i da zatim tu
boju upotrebite samo ukoliko posetilac za pregled stranica
koristi WebTV ili egzotični browser. U svim ostalim slučajevima
koristićete boju i font koji ste planirali.
Implementacija
Evo kako ćete implementirati ovakvo jedno rešenje:
<%
set bh = server.createobject("cyScape.browserObj")
if (bh.browser = "WebTV") then
bojaFonta = "003366" 'alternativna
boja za WebTV
else
bojaFonta = "000066" 'boja fonta
za sve ostale
end if
%>
<html>
<head>
<title></title>
</head>
<body><p>
Dobrdošli.<font color="<%=bojaFonta%>">Bitan
tekst </font>je vidno obeleže radi vaše veće pažnje.
</p>
</font>
</body>
</html>

|
Upis
u tekst fajlove, i njihovo iščitavanje
|
Korišćenjem
sistemskih objekata, vrlo lako je moguće čitanje i upisivanje
u tekstualne fajlove |
| U
ovom prilogu pozabavićemo se dosta čestim operacijama u
svakodnevnom radu sa ASP-om, a to su upis u tekstualne fajlovi
i iščitavanje iz istih. Funkcija koje ćemo videti, baziraju
se na korišćenju ugrađenih sistemskih objekata za rad sa
fajlovima, prvenstveno se misli na objekat FSO (FileSystemObject)
i korišćenje njegovih metoda:
- OpenTextFile
- Write
ili WriteLine
- ReadLine
Prvo
ćemo vam predstaviti funkciju za upi u tekst-fajl.
Funkcija za upis u tekstualne fajlove
<%
Option Explicit
' podešavanje konstanti
Const ZaPisanje = 2
' ulazni OutPut mod
Const Kreiranje = True
' dimenzionisanje lokalnih varijabli
Dim MojFajl
Dim FSO ' objekat FileSystemObject
Dim TSO ' objekat TextStreamObject
'
preporučuje se korišćenje MapPath funkcije za određivanje
tačne fizičke putanje do fajla
MojFajl = Server.MapPath("tekstfajl.txt")
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set TSO = FSO.OpenTextFile(MojFajl, ZaPisanje, Kreiranje)
TSO.write "Ovo je prva linija u tekst fajlu" &
vbcrlf
' Vbcrlf je oznaka za novi red
TSO.write "Ovo je druga linija u tekst fajlu"
& vbcrlf
' sada će funkcija upisati lokalno vreme
TSO.write "Upisano u" & Now()
TSO.WriteLine ""
Response.Write " Upisane tri linije u tekstfajl.txt
<br>"
Response.Write " Vreme po serveru je" & Now()
'
zatvaranje objekta TextStreamObject
' poništavanje lokalnih varijabli
TSO.close
Set TSO = Nothing
Set FSO = Nothing
%>
Funkcija za čitanje sadržaja iz tekstualnih fajlova
<%
Option Explicit
' podešavanje konstanti
Const ZaCitanje = 1
Const Kreiranje = False
'
dimenzionisanje lokalnih varijabli
Dim objFSO ' objekat FileSystemObject
Dim TS ' objekat TextStreamObject
Dim strLinija' varijabla za smeštanje linije teksta
Dim strNazivFajla' varijalba za smeštanje naziva fajla
strNazivFajla
= Server.MapPath("tekstfajl.txt")
Set
objFSO = Server.CreateObject("Scripting.FileSystemObject")
'
korišćenje metode OpenTextFileza otvaranje tekst fajla
Set TS = objFSO.OpenTextFile(strNazivFajla, ZaCitanje, Kreiranje)
If
Not TS.AtEndOfStream Then
Do
While Not TS.AtendOfStream
strLinija = TS.ReadLine ' čitanje pojedinačne
linije
Response.Write strLinija' prikaz linije
Response.Write "<br>"
Loop
End If
'
zatvaranje objekta TextStreamObject
' poništavanje lokalnih varijabli
TS.Close
Set TS = Nothing
Set objFSO = Nothing
%>

|
Instalacija
Personal Web Server-a
|
Saznajte
kako instalirati web server sa svim potrebnim komponentama,
i na taj način stvoriti uslove za bavljenjem ASP-om u kućnim
uslovima. |
| Kao
što smo naveli u prošlom prilogu, web kontrole ASP.NET-a
upravo služe za građenje korisničkog interfejsa aplikacija
zasnovanih na tankim klijentima. Konceptualno su vrlo bliske
tradicionalnim Windows kontrolama, pre svega po tome što
svaka od njih ima sopstveni korisnički interfejs (izgled)
i nosi sa sobom odgovarajuće funkcije. Međutim, za razliku
od Windows kontrola, web kontrole se pokreću na serveru
(one su klase koje postaju deo page klase) i proizvode sopstveni
izgled interfejsa generisanjem odgovarajućeg HTML kôda
za browser. ASP.NET obezbeđuje veliki skup standardnih web
kontrola, uključujući tu najprostije elemente GUI dizajna
kao što su dugmad, tekst-polja, CheckBox-ovi, radio-dugmad
i liste.
Microsoft-ova originalna Active Server Pages tehnologija
bila je pun pogodak. Osnovni razlog za to je neverovatno
laka upotreba. ASP.NET je mnogo više nego originalni ASP,
ali sa određenom dozom kompleksnosti. U stvari, za efektno
korišćenje, ASP.NET zahteva razumevanje CLR-a (Common Language
Runtime), jer sav programski kôd mora biti napisan
u nekom od CLR zasnovanih jezika kao što su VB.NET ili C#
(C-sharp). Naravno, i pisanje pravih ASP aplikacija zahteva
značajna znanja, ali je sigurno da će ASP.NET od svakog
programera zahtevati mnogo više.
Za tradicionalne ASP dizajnere, ASP.NET predstavlja potpuno
novi svet. Neki delovi izgledaju vrlo poznato, a većina
od znanja pokupljenih u radu sa ASP-om biće i nadalje od
velike koristi. Međutim, od jednog manjeg dela znanja i
neće imati neke koristi, a ponešto će vas dovesti i u potpunu
zabludu. Zbog ovog poslednjeg, najbolji način da svladate
ASP.NET biće da potpuno zaboravite stari načina razmišljanja
(ASP način). Najbolji pristup bi bio da se prvo upoznate
sa .NET Framework okruženjem uopšte, a zatim se uhvatite
u koštac sa ASP.NET-om. Da bi ovo bilo moguće, sa sajta
Microsoft-a i sajtova njegovih lokalnih zastupnika možete
besplatno naručiti testnu beta 2 verziju Visual Studio .NET-a.

|
ASP.NET
web kontrole
|
ASP.NET
obezbeđuje veliki skup standardnih web kontrola, uključujući
tu najprostije elemente GUI dizajna kao što su dugmad, tekst-polja... |
| Kao
što smo naveli u prošlom prilogu, web kontrole ASP.NET-a
upravo služe za građenje korisničkog interfejsa aplikacija
zasnovanih na tankim klijentima. Konceptualno su vrlo bliske
tradicionalnim Windows kontrolama, pre svega po tome što
svaka od njih ima sopstveni korisnički interfejs (izgled)
i nosi sa sobom odgovarajuće funkcije. Međutim, za razliku
od Windows kontrola, web kontrole se pokreću na serveru
(one su klase koje postaju deo page klase) i proizvode sopstveni
izgled interfejsa generisanjem odgovarajućeg HTML kôda
za browser. ASP.NET obezbeđuje veliki skup standardnih web
kontrola, uključujući tu najprostije elemente GUI dizajna
kao što su dugmad, tekst-polja, CheckBox-ovi, radio-dugmad
i liste.
Microsoft-ova originalna Active Server Pages tehnologija
bila je pun pogodak. Osnovni razlog za to je neverovatno
laka upotreba. ASP.NET je mnogo više nego originalni ASP,
ali sa određenom dozom kompleksnosti. U stvari, za efektno
korišćenje, ASP.NET zahteva razumevanje CLR-a (Common Language
Runtime), jer sav programski kôd mora biti napisan
u nekom od CLR zasnovanih jezika kao što su VB.NET ili C#
(C-sharp). Naravno, i pisanje pravih ASP aplikacija zahteva
značajna znanja, ali je sigurno da će ASP.NET od svakog
programera zahtevati mnogo više.
Za tradicionalne ASP dizajnere, ASP.NET predstavlja potpuno
novi svet. Neki delovi izgledaju vrlo poznato, a većina
od znanja pokupljenih u radu sa ASP-om biće i nadalje od
velike koristi. Međutim, od jednog manjeg dela znanja i
neće imati neke koristi, a ponešto će vas dovesti i u potpunu
zabludu. Zbog ovog poslednjeg, najbolji način da svladate
ASP.NET biće da potpuno zaboravite stari načina razmišljanja
(ASP način). Najbolji pristup bi bio da se prvo upoznate
sa .NET Framework okruženjem uopšte, a zatim se uhvatite
u koštac sa ASP.NET-om. Da bi ovo bilo moguće, sa sajta
Microsoft-a i sajtova njegovih lokalnih zastupnika možete
besplatno naručiti testnu beta 2 verziju Visual Studio .NET-a.
Konačna verzija se očekuje u proleće 2002. godine

|
Procesiranje
ASP.NET stranica
|
Umesto
jednostavnog sekvencijalnog procesiranja, ASP.NET koristi
model vođen događajima, tzv. event-driven model |
| Razumevanje
načina na koji se generišu tradicionalne ASP stranice je
vrlo lako: stranica se procesira sekvencijalno. A kao što
smo to videli u prethodnom prilogu, kod ASP.NET-a imamo
sasvim drugačiji slučaj. Pošto se svaka pojedinačna stranica
pretvara u klasu pre izvršenja, na koji način se dešava
procesiranje? Odgovor je u tome da umesto jednostavnog sekvencijalnog
procesiranja, ASP.NET koristi model vođen događajima, tzv.
event-driven model. Kada se pristupi ASP.NET stranici, iz
stranice se generiše assembly i instanca klase. Ovaj objekat
stranice prima seriju događaja, kao Render metoda. Svakim
događajem upravalja određeni metod, pa tako npr. Render
metoda upravlja Render događajem, koja će omogućiti prikaz
dela stranice ili cele stranice. Pored ovoga, i sam kôd
unutar .aspx stranice može da sadrži metode koje će upravljati
ovim događajima, i svaka od ovih metoda može proizvesti
izlaz koji će se poslati klijentskom browser-u. Kada se
isprocesiraju svi događaji, Page objekat se oslobađa (uništava).
Programiranje zasnovano na događajima biće nešto novo za
mnoge ASP programere, a samo razumevanje ovog modela zahtevaće
dodatni rad. Za sada je primarni cilj Web-scripting tehnologija,
kao što je ASP.NET - kreiranje efektnog korisničkog interfejsa
(uglavnom za thin-klijent aplikacije). Sam korisnički interfejs
je po svojoj prirodi vođen nekakvim događajima, pa zato
i ima smisla primena ovog modela. Zapravo, korisnički interfejs
vođen događajima oduvek je bio standard za sve Windows aplikacije.
Pored ideje korišćenja događaja, tu je još jedna ideja koja
je preuzeta iz Windows korisničkog interfejsa, a to je odvojeno
pakovanje različitih funkcionalnosti u tzv. kontrole (komponente),
za višestruku upotrebu. Svaka kontrola obezbeđuje neki od
aspekata korisničkog interfejsa, kao npr. dugme ili tekst
polje, i može biti kombinovana sa drugim kontrolama u lakom
građenju korisničkog interfejsa. Pošto je ASP.NET prihvatio
ideju event-zasnovanog programiranja, zašto ne bi preuzeo
i interfejs-komponente za višestruku upotrebu, radi primene
na web-u?

|
Upoznavanje
sa ASP.NET tehnologijom
|
Nakon
ASP dolazi ASP.NET, deo Microsoft .NET Framework-a |
| Ponekad
Microsoft menja nazive tehnologijama koje je sam razvio,
ali ne menja i samu tehnologiju. Pre nekoliko godina je
ta kompanija, na primer, preimenovala OLE u ActiveX, pri
čemu je suština vrlo malo izmenjena. U drugim situacijama,
Microsoft je ostavljao nazive manje ili više istim, dok
je u isto vreme radikalno izmenio identitet date tehnologije.
Upravo je ASP.NET blistav primer ovog drugog fenomena. Iako
naziv zvuči prepoznatljivo, u biti je mnogo drugačiji od
obične ASP tehnologije.
Najbolji način da uvidite šta ovo znači jeste opis toga
šta se dešava kada ASP.NET stranici pristupite iz browser-a.
Ovu priču ćemo ilustrovati jednostavnom .aspx stranicom
ASP.NET ekvivalentom poznatoj .asp stranici:
<html>
<script runat="server" language="vb">
Sub PrikaziBrojeve()
Dim br As Integer
For br = 0 To 5
Response.Write(br)
Next
End Sub
</script>
Datum i vreme: <% =Now() %>
<hr>
Brojke: <% PrikaziBrojeve() %>
</html>
Kao
i tradicionalne ASP stranice, ASP.NET (.aspx) stranice mogu
da sadrže HTML, plain tekst i kôd isprepletan bilo
putem <script> taga ili <%...%>. U stvari, stranica
iz primera najviše liči na običnu .asp stranicu: oslobodite
se DIM deklaracije, promenite deklaraciju jezika u "vbscript",
i sve će biti po tradicionalnom ASP-u. Ali ono što se dešava
kada ovu stranicu izvršimo ASP.NET-om, veoma je različito
u odnosu na izvršenje u ASP okruženju.
Ako bi ova stranica bila procesirana kao ASP stranica, kôd
koji sadrži bio bi interpretiran od strane servera, a izlaz
koji se generiše bio bi ubačen u tok podataka poslat ka
browser-u. Tekst i HTML na stranici bili bi direktno, nepromenjeni,
prosleđeni browser-u.
Pristupanjem stranici iz primera preko ASP.NET-a rezultiralo
bi kompletno različitim procesom izvršavanja. ASP.NET aplikacije
pripadaju .NET Framework aplikacijama, što znači da su zasnovane
na Common Language Runtime (CLR). Zbog ovoga, svaka .aspx
stranica se automatski prebacuje u klasu i to kada joj pristupi
prvi klijent. Ovakva nova klasa je naslednik standardne
Page klase iz .NET Framework biblioteke klasa, a različiti
segmenti sadržaja .aspx stranice umetnuti su na različita
mesta unutar ove klase. Na primer, bilo koji kôd sadržan
unutar <script> elemenata ubačen je u klasu samostalno.
U našem slučaju, jednostavna funkcija PrikaziBrojeve postaje
metoda u generisanoj klasi. Ostatak ove stranice, uključujući
tu i tekst, HTML tagove, i kôd između elemenata <%
... %>, smešta se u jednu metodu nazvanu Render, i to
u istu klasu. Potom se ova nova klasa kompajlira i pakuje
u jedan skup (assembly), tj. kontejner koji .NET koristi
za skladištenje kompajliranog kôda. Jednom kada je
ovaj assembly kreiran, koristiće se za upravljanje svim
budućim zahtevima za ovom stranicom. Ukoliko ovu stranicu
izmenimo, proces se ponovo odigrava i generiše se novi assembly.

|
Obrada
jednostavnog formulara (II deo)
|
Kako
iskoristiti dvosmernost Internet komunikacija, i ostvariti
interaktivnost između web servera i web browsera (posetilaca) |
| U
prethodnom prilogu kreirali smo jedan jednostavan HTML formular,
koji ćemo, radi probe, popuniti i uputiti web serveru. Ali
pre toga potrebno je da kreiramo odgovor, odnosno ASP stranicu
koja će ispisati primljene vrednosti iz formulara, uz pomoć
objekta Response. Da bismo ispisali vrednosti polja iz formulara,
iskoristićemo metodu Write, objekta Response. Odgovor bi
mogao da izgleda ovako:
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
varNaziv = Request.Form ("naziv")
varAdresa = Request.Form ("adresa")
Response.Write (varNaziv)
%>
<BR>
<%
Response.Write (varAdresa)
%>
<BR>
</BODY>
</HTML>
Ovaj
skript će uz pomoć definisanih varijabli (varNaziv, varAdresa)
prihvatiti vrednosti koje se dobiju iz predatog formulara.
Ne zaboravite da ovom fajlu date naziv koji ste naveli u
formularu, a to je "obrada.asp". Da biste isprobali
kako ovo radi u praksi, smestite oba fajla u neki od foldera
web servera i startujte sam web server (IIS ili PWS). Učitajte
formular u web browser, tako što ćete u Addressliniju upisati
nešto slično ovome (putanja zavisi od toga gde ste smestili
fajlove, ovde se radi o root folderu):
http://localhost/formular.htm
Nakon
uspešnog učitavanja formulara, što znači da web server ispravno
radi, popunite formular i pritisnite dugme "Posalji"
(Submit). Po kliku na dugme, objekat Request pokupiće sve
podatke u okviru zahteva (formulara), uključujući tu i HTTP
zaglavlja, cookie-je, eventualne podatke o autentifikaciji,
i drugo. Svi ovi podaci će biti dostupni ASP skriptu "obrada.asp".
Nas od tih podataka zanimaju samo podaci iz Form kolekcije,
i to dva para naziv/vrednost:
"naziv"
/ "vrednost koju ste uneli"
"adresa" / "vrednost koju ste uneli"
Ove
vrednosti smeštamo u dve varijable i zatim uz pomoć Response.Write
vršimo slanje u browser. Rezultat koji će server vratiti
biće (vidi sliku):
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
Personal magazine
<BR>
http://www.personalmag.co.yu
<BR>
</BODY>
</HTML>
Kao
što smo naveli u pređašnjem prilogu, poljima formulara možemo
pristupiti i preko indeksa (rednog broja) polja u formularu.
Tada bi varijable preuzele vrednosti na sledeći način:
varNaziv
= Request.Form (1)
varAdresa = Request.Form (2)
Ipak,
u praksi, mnogo je bolje koristiti nazive polja, jer u slučaju
velikih formulara, vrlo je velika mogućnost greške

|
Obrada
jednostavnog formulara (I deo)
|
Kako
iskoristiti dvosmernost Internet komunikacija, i ostvariti
interaktivnost između web servera i web browsera (posetilaca) |
| Jedan
od osnovnih i najjednostavnijih elemenata interaktivnosti,
tj. dvosmerne komunikacije na Internetu, predstavljaju HTML
formulari. Ta interakcija se zasniva na komunikaciji između
web browser-a (ili drugog agenta) i web servera, preko HTTP
protokola. ASP nam olakšava kontrolu i upravljanje ovom
komunikacijom uz pomoć dva objekata Request i Response.
Namena
objekta Request je preuzimanje podataka od korisnika (iz
formulara) i omogućavanje dostupnosti podataka za dalju
obradu. Nasuprot tome, objekat Response svojim metodama
omogućava slanje podataka korisniku nazad u web browser
(ili drugi agent). Pošto su ovo dva esencijalna ASP objekta,
čija je sintaksa sasvim jednostavna, gotovo da nema web
aplikacije koja ih ne uključuje.
Često ste se na web-u susretali sa dugmetom Submit, koje
služi sa slanje podataka serveru. Kada korisnik klikne da
ovo dugme (ili odgovarajući link), tada Request objekat
preuzima sve podatke unete u formular, a pored toga i sve
HTTP promenljive, osobine i cookie-je. Svi ovi podaci se
tada predaju odgovarajućem ASP skriptu. Sam objekat Request
poseduje pet kolekcija koje preuzimaju određeni tip podataka,
a preko kojih se u stvari dolazi do unetih vrednosti:
- Form
- kolekcija koja sadrži nazive informacija i vrednosti
vezane za same nazive, a koji nastaju predajom formulara
metodom "POST".
- Server
variables - kolekcija podataka (naziv varijable/vrednost)
iz HTTP zaglavlja.
- Query
string - podaci koji se preuzimaju sa kraja zahtevanog
URL-a. Recimo, "http://www.nesto.com/strana.asp?naziv=Kamion".
- Cookies
- kolačići koji se šalju uz zahtev.
- Client
certificate - podaci sertifikata klijenta namenjenih
web serveru.
ASP
preko objekta Request preuzima sve informacije iz svih navedenih
kolekcija i čini ih dostupnim vašim skriptovima za obradu.
Podacima iz formulara se pristupa preko Form kolekcije i
to navođenjem naziva polja za unos ili navođenjem indeksa
(rednog broja) polja za unos.
Za
naš primer, kreiraćemo jedan jednostavni HTML formular:
Ovo
je vrlo jednostavan formular (vidi sliku) sa samo dva polja
za unos (intput type=text) i dugmićem Submit (intput type=submit).
Uočite da smo za nazive svakog polja formulara iskoristili
jedinstvene vrednosti (naziv, adresa). ASP odgovor na ovaj
formular predstavićemo u sledećem prilogu.

|
Na
vrhu stranice
|
Kako
obavezno započeti svaku ASP stranicu? Sa kojim elementima
i instrukcijama? |
| Prve
linije vaših ASP stranica su veoma bitne, jer upravo uz
pomoć njih definišemo osnovno upravljanje instrukcijama
koje su smeštene na ostatku stranice. Razmotrite sledeći
programski kod:
<%
@Language = "VBScript" %>
<%
Option Explicit
Response.Buffer = True
Response.Expires = -1000
%>
Prvom
linijom, <% @Language = "VBScript" %>, deklariše
se podrazumevani server-side skript jezik koji se koristi
na stranici. Čak i ako koristite VBScript jezik, koji je
i inače podrazumevani jezik od strane servera, dobra programerska
praksa je upotreba ove linije. Idući dalje, možemo videti
upotrebu ključnih reči Option Explicit, koje će vam uštedeti
veliko vreme potrebno za otklanjanje bug-ova na stranicama.
VBScript daje veoma veliku slobodu u deklaraciji varijabli,
te će vam dozvoliti da kreirate i upotrebljavate veliki
broj varijabli, sa kraja na kraj ASP stranice. Navođenjem
Option Explicit na vrhu stranice, uputićete ASP parser da
generiše grešku ukoliko pronađe varijablu na stranici koja
nije definisana na početku ASP koda.
Narednom linijom Response.Buffer=True, ukazujemo serveru
da ne šalje stranicu i njen sadržaj nazad klijentu sve dok
ne završi kompletno procesiranje svih skriptova na strani
servera. Na ovaj način se postiže veća efikasnost, jer će
server klijentu poslati samo jedan set HTTP header-a zajedno
sa zahtevanom stranicom, umesto moguća dva ili tri seta.
Buffer-ovanje je veoma korisno i u procesu debug-ovanja,
kada možete zadržati sadžaj koji ide ka testnom klijentu,
sve do tačke na kojoj pretpostavljate da se nalazi greška.
Buffer-ovanje je kod novih verzija parsera po default-u
aktivno, pa ovu liniju i ne morate navoditi, ali ako radite
na serveru sa parserom verzije ASP2.0, moraćete da navedete
ovu liniju (podešena je na False).
I
na kraju, ako znate da će se sadržaj vaših stranica redovno
osvežavati, ne zaboravite da podesite vreme isteka aktuelnosti
stranice (expire). Kada parser "prevede" ASP stranicu
u statičnu stranicu i kada se ta stranica smesti u cache
klijenta, daje mu se podatak o roku isteka važenja stranice,
nakon čega će klijent zahtevati novu stranicu sa servera.
Ovu opciju ne treba podešavati ukoliko često ne menjate
sadržaj stranice - inače ćete učiniti da server samo ima
više posla

|
Objekat
Response
|
Šta
predstavlja objekat Response? Koje su njegove metode i osobine,
i na koji način se koristi u web programiranju? |
| Podrška
za ASP, instalirana sa Windows-om NT (2000) i IIS-om, dolazi
sa velikim brojem već ugrađenih metoda, osobina, funkcija
i komponenti. Sve ove funkcije i metode obezbeđuju temelje
za rad ASP-a sa HTML-om, VBScript-om, JavaScript-om, SQL-om.
One takođe obezbeđuju i pristup HTTP header-ima (zaglavljima)
radi olakšavanja kreiranja dinamičkih web stranica. Inače,
HTTP header-i nastaju kao rezultat principa rada HTTP protokola
- "zahtev/odgovor" (request/response), tj. osnovne
tipične komunikacije između klijenta i servera. HTTP header-i
sastoje se od: general-header-a, request-header-a, response-header-a
i entity-header.
Objekat
Response, uz pomoć svojih metoda, omogućava da odgovorite
na sve zahteve (requests) korisnika, ali omogućava i druge
funkcije. Objekat Response poseduje devet osobina i veći
broj metoda. Osobine objekta kreira sam server, ali vi ih
možete iščitavati i uređivati (menjati) u skladu sa svojim
potrebama. Daćemo vam i kratki pregled svih osobina, sa
njihovim značenjem:
- Charset
- string osobina koja nosi naziv upotrebljenog karakter-skupa.
- ContentType
- string osobina za podešavanje tipa HTTP sadržaja.
- Status
- string vrednost koja nosi status i poruku u slučaju
da se desi neka greška u obradi.
- IsClientConected
- boolean osobina (True ili False) koja nam služi za
proveru, da li je korisnikov web čitač i dalje povezan,
i da li vrši učitavanje stranice.
- CacheControl
- string osobina sa mogućim vrednostima "Public"
i "Private", a služi za kontrolu keširanja
stranica na proxy serverima.
- Expires
- brojčana osobina koja nosi podatak o vremenu validnosti
same stranice.
- ExpiresAbsolute
- osobina kojom postavljamo vreme apsolutnog isteka
validnosti (važnosti) stranice.
- Buffer
- boolean osobina (podrazumevana vrednost je True) kojom
se određuje da li se sadržaj o onoga što se šalje kao
odgovor buffer-uje, sve dok ne bude spreman ceo sadržaj
za isporuku.
- PICS
- string osobina kojom dodajemo u header vrednosti koje
mogu ukazivati na sadržaj koji nije namenjen omladini.

|
Definisanje
varijabli
|
Tipovi
varijabli (apliakcione i sesione varijable) i načini njihovog
definisanja |
| U
ASP-u, varijablama koje deklarisemo van bilo koje procedure,
moze pristupiti bilo koji skript sa iste ASP stranice, a
moze vrsiti i izmene vrednosti varijabli. U slucaju da su
varijable deklarisane unutar procedura, svaki put kada se
procedura pozove vrsi se njihovo kreiranje, te na izlazu
iz procedure se vrsi njihova destrukcija (destroy). Ni jedan
skript van date procedure ne moze pristupiti i ne moze promeniti
vrednost unutrasnje varijable.
Ali,
u slucaju da vam trebaju "dugotrajnije" varijable,
postoji resenje. Da bi varijabla bila dostupna vecem broju
skriptova ili nekoliko ASP stranica, potrebno je da varijable
deklarisemo kao varijable sesije ili kao aplikacione varijable.
Sesione varijable su tako deklarisane da cuvaju informacije
u vezi jednog korisnika - posetioca, a dostupne su svim
ASP stranicama u jednoj aplikaciji (pri jednoj sesiji).
Najcesce sesione varijable se koriste za potrebe deklarisanja
korisnickog imena (username) i lozinke (password), pri pristupu
zasticenim delovima sajta. Ovo znaci da varijable sesije
"traju" koliko i jedan sesija, tj. za vreme trajanja
jedne posete sajtu. Ove varijable se kreiraju i "cuvaju"
u objektu sesije - Session Object (o tome vise u nekom od
narednih priloga).
Aplikacione
varijable (Application variables) su, kao i prethodne, dostupne
vecem broju stranica u jednoj aplikaciji. Najcesce se koriste
za smestaj i cuvanje informacija koje su vezane za sve korisnike
odredene aplikacije. Radi kreiranja aplikacionih varijabli
smestite ih u aplikacioni objekat - Application Object.
Sada
cemo videti primer najjednostavnijeg deklarisanja varijable
i njeno koriscenje. Sledeci programski kod snimite kao "*.asp"
fajl, i pozivite ga preko PWS ili IIS servera:
<html>
<body>
<%
Dim sajt
sajt="Personalmag.co.yu"
response.write("Najbolji
YU sajt: <B>" & sajt & "<B>")
%>
</body>
</html>
Na
ovoj ASP stranici, koriscenjem sintakse VBScript-a, deklarisali
smo varijablu "sajt" i nakon toga joj dodelili
vrednost. Na kraju smo uz pomoc metode "write"
prikazali odredenu poruku i na nju nadovezali vrednost varijable
"sajt". Rezultat mozete videti na slici.

|
Procedure
(funkcije) i njihovo povezivanje
|
Kako
se definišu i pozivaju, VBScript i JavaScript funkcije sa
ASP stranica |
| Za
pozivanje VBScript ili JavaScript procedura (funkcija) sa
ASP stranica, napisanih u VBScript-u, možete koristiti ključnu
reč call (poziv). U pozivu, iza ključne reči ide deklarisani
identifikator procedure (naziv procedure), a zatim i eventualni
parametri, ukoliko ih procedura zahteva. Ukoliko imamo više
parametara, listu parametara moramo "zatvoriti"
u zagrade. U slučaju da ste pri pozivu procedure izostavili
ključnu reč (call), tada lista parametara ne sme biti u
zagradama. Ukoliko procedure (funkcije) nemaju nikakvih
parametara, korišćenje zagrada je opcionalno. Ipak, kada
pozivate JavaScript ili VBScript procedure sa ASP stranica
napisanih u JavaScript-u (znači ne kao gore, u VBScript-u),
uvek koristite zagrade nakon naziva procedure (funkcije).
Za početak videćemo kako se definiše jedna funkcija, i to
u dva skript jezika JavaScript-u i VBScript-u. Funkcija
je jednostavna, i ima zadatak da izračuna proizvod dva prosleđena
broja i da ih ispiše. Evo kako funkcija izgleda u JavaScript-u:
<%
language="JavaScript" %>
<html>
<head>
<%
function jsProizvod(br1, br2){
response.write(br1 * br2)
}
%>
</head>
Kao
što vidite, vrlo je jednostavno. Da napomenemo, da liniju
<%@ language="JavaScript" %> treba da ubacite
pre HTML taga, ukoliko koristite procedure napisane drugačijim
skript jezikom u odnosu na default jezik. Istu ovu funkciju
napisaćemo i u VBScript-u:
<html>
<head>
<%
sub vbProizvod (br1, br2)
response.write(br1 * br2)
end sub
%>
</head>
Na
kraju, ostalo nam je samo da pozovemo funkcije:
<html>
<head>
<%
sub vbProizvod (br1, br2)
response.write(br1 * br2)
end sub
%>
</head>
<body>
Proizvod
je:
<%
call vbProizvod (3,4)
%>
<br>
Ili, drugim nacinom pozivanja:
<br>
Proizvod je: <% vbProizvod 3,4 %>
</body>
</html>

|
|