Active Server Pages
Ji°φ Kosek ml.
Dnes se podφvßme na skripty z dφlny Microsoftu. Microsoft z poΦßtku nßstup Internetu pon∞kud zaspal, ale dnes ji₧ nabφzφ ucelenou °adu produkt∙ pro vytvo°enφ aplikacφ pracujφcφch v prost°edφ Internetu.
Na stran∞ klienta dnes svßdφ boj Internet Explorer s konkurenΦnφm Netscape Communicatorem. Ve svΘ poslednφ verzi je Internet Explorer prohlφ₧eΦem s nejlepÜφ podporou HTML 4.0 a kaskßdov²ch styl∙ -- na druhou stranu se pravideln∞ objevujφ zprßvy o odhalenφ r∙zn²ch bezpeΦnostnφch d∞r.
Na poli webov²ch server∙ nabφzφ Microsoft n∞kolik produkt∙. Pro komerΦnφ nasazenφ je urΦen Internet Information Server (IIS). Pro jednoduÜÜφ a mΘn∞ rozsßhlΘ aplikace je urΦen Personal Web Server (PWS).
Oba d°φve zmφn∞nΘ servery lze doplnit o podporu skript∙. U Microsoftu t∞mto skript∙m °φkajφ Active Server Pages (ASP). ASP fungujφ na principu serverem vklßdan²ch vsuvek -- strßnku doplnφme o p°φkazy, kterΘ se v₧dy p°ed odeslßnφm strßnky provedou na serveru. Jako skriptovacφ jazyk m∙₧eme pou₧φt VBScript nebo JScript. (JScript je implementace JavaScriptu od Microsoftu.) DalÜφ firmy nabφzejφ moduly i pro jinΘ jazyky -- nap°. pro Perl, REXX a Python.
Pokud jsme cht∞li d°φve pou₧φvat ASP, byla to celkem nßkladnß legrace. Museli jsme si po°φdit Windows NT Server a IIS, co₧ jist∞ nenφ ₧ßdnß lacinß zßle₧itost. K tomu je jeÜt∞ pot°eba p°iΦφst zv²ÜenΘ nßroky na hardware. A¥ chceme nebo ne, je °eÜenφ postavenΘ nad produktech od Microsoftu vφce nßroΦnΘ na systΘmovΘ zdroje ne₧ obdobnΘ °eÜenφ zalo₧enΘ na voln∞ Üi°iteln²ch produktech pro Unix.
Cenovou nßroΦnost ΦßsteΦn∞ eliminuje Windows NT Option Pack, kter² uvolnil Microsoft na konci roku 1997. V balφku zdarma dostaneme i Personal Web Server s podporou ASP. To ji₧ dostaΦuje pro v²voj aplikacφ zalo₧en²ch na ASP. Pokud vÜak chceme, aby s v²slednou aplikacφ mohlo pracovat v∞tÜφ mno₧stvφ u₧ivatel∙, musφte ji spustit pod Windows NT Server, na kterΘm pob∞₧φ Internet Information Server.
Kombinovßnφ ASP s HTML
P°φkazy ASP se od b∞₧nΘho HTML k≤du odd∞lujφ pomocφ znak∙ '<%' a '%>'. Oproti SSI nejsou pou₧ity k ohraniΦenφ p°φkaz∙ komentß°e, tak₧e si tΘm∞° nemß cenu prohlφ₧et ASP strßnku v prohlφ₧eΦi bez p°edchozφho zpracovßnφ vÜech p°φkaz∙ serverem. V²hodou je, ₧e zßpis znak∙ pro odd∞lenφ ASP p°φkaz∙ je kratÜφ ne₧ zßpis komentß°∙. I tak je vÜak volba odd∞lovacφch znak∙ p°inejmenÜφm podivnß, proto₧e jazyk SGML (pomocφ, kterΘho je HTML definovßno) vyhrazuje pro podobnΘ ·Φely znaky '' a '>'. Text mezi nimi ignorujφ nap°. programy pro syntaktickou kontrolu HTML k≤du. P°ed touto mo₧nostφ vÜak mßme s ASP dve°e uzav°eny.
Jak jsme ji₧ °ekli, m∙₧eme ASP psßt ve vφce jazycφch. V naÜich ukßzkßch budeme pou₧φvat VBScript, co₧ je skriptovacφ jazyk velmi p°φbuzn² Visual Basicu. Standardnφ skriptovacφ jazyk, kter² se na strßnkßch pou₧φvß, lze nastavit v konfiguraci serveru. Pokud chceme na strßnce pou₧φt jin² skriptovacφ jazyk, pou₧ijeme na zaΦßtku strßnky nßsledujφcφ direktivu:
<% LANGUAGE=jazyk %>
Jako jazyk m∙₧eme b∞₧n∞ pou₧φt VBScript nebo JScript.
Aby server mohl odliÜit b∞₧nΘ strßnky od t∞ch s ASP, uklßdajφ se ASP do soubor∙ s p°φponou .asp.
Zßklady ASP
Mezi nejjednoduÜÜφ p°φkazy pat°φ v ka₧dΘm jazyce vypsßnφ hodnoty v²razu. K t∞mto ·Φel∙m m∙₧eme v ASP pou₧φt <%= v²raz %>. K zobrazenφ aktußlnφho Φasu na serveru m∙₧eme pou₧φt funkci Now:
<%= Now %>
K p°i°azenφ hodnoty do prom∞nnΘ se pou₧φvß '='. Pokud tedy na strßnce definujeme prom∞nnou pozdrav
<% pozdrav = "Ahoj Karle!" %>
M∙₧eme ji pak dßle pou₧φvat ve v²razech nebo vypsat pomocφ p°φkazu <%= pozdrav %>.
K °φzenφ toku b∞hu programu m∙₧eme pou₧φt p°φkaz If. Nßsledujφcφ ukßzka zobrazφ na strßnce velk²mi Φerven²mi pφsmeny pozdrav. Text pozdravu se bude m∞nit podle toho, kdy se u₧ivatel podφvß na strßnku.
<% If Time >= #12:00:00 AM# And Time <= #12:00:00 PM# Then %>
DobrΘ rßno!
<% Else %>
DobrΘ odpoledne!
<% End If %>
Ukßzka zaslou₧φ malΘ vysv∞tlenφ. Prvnφ °ßdka zp∙sobφ pou₧itφ v∞tÜφho, ΦervenΘho pφsma. Nßsleduje podmφnka, kterß zjiÜ¥uje, zda je dopoledne Φi odpoledne -- aktußlnφ Φas zjiÜ¥ujeme pomocφ funkce Time. Pokud je dopoledne, prohlφ₧eΦi se poÜle text "DobrΘ rßno!", v opaΦnΘm p°φpad∞ do prohlφ₧eΦe dorazφ "DobrΘ odpoledne!".
Dopoledne tedy bude v²sledkem skriptu nßsledujφcφ HTML k≤d, kter² bude poslßn prohlφ₧eΦi:
DobrΘ rßno!
Naopak odpoledne do prohlφ₧eΦe dorazφ:
DobrΘ odpoledne!
P°φklad jsme rozebrali podrobn∞ji, abychom si uv∞domili, ₧e p°i pou₧itφ ASP (a skript∙ na stran∞ serveru v∙bec) dorazφ do prohlφ₧eΦe zcela b∞₧nΘ HTML. VeÜkerΘ p°φkazy jsou vykonßny na serveru t∞sn∞ p°ed odeslßnφm strßnky.
Nemßme zde dostatek prostoru pro rozebrßnφ vÜech mo₧nostφ, kterΘ VBScript nabφzφ, ale ve struΦnosti si jeÜt∞ ukß₧eme, jak lze vyu₧φt cykly.
Pokud chceme na strßnce zobrazit vÜech sedm velikostφ pφsma, kterΘ nßm HTML nabφzφ, m∙₧eme si zßpis uÜet°it pomocφ tohoto krßtkΘho skriptu:
<% For I = 1 to 7 %>
>Ukßzkov² text
<% Next %>
Do prohlφ₧eΦe pak ve skuteΦnosti dorazφ mnohem delÜφ text:
Ukßzkov² text
Ukßzkov² text
Ukßzkov² text
Ukßzkov² text
Ukßzkov² text
Ukßzkov² text
Ukßzkov² text
Vidφme, ₧e pomocφ ASP p°φkaz∙ m∙₧eme ovliv≥ovat i p°φmo hodnotu atribut∙ jednotliv²ch element∙ -- v naÜem p°φpad∞ atributu SIZE.
ASP a formulß°e
Opravdovß sφla skript∙ na stran∞ serveru se objevφ v okam₧iku, kdy skripty reagujφ na po₧adavky u₧ivatele. HTML obsahuje mo₧nost do strßnky vlo₧it formulß°, kter² se sklßdß ze vstupnφch polφ. Do ka₧dΘho pole u₧ivatel m∙₧e zapsat n∞jak² ·daj. VÜechny ·daje z formulß°e se pak odeÜlou na server, kde s nimi skript nalo₧φ podle sv²ch pot°eb.
Formulß° se do HTML strßnky vklßdß pomocφ elementu FORM.
Atribut ACTION urΦuje jmΘno skriptu, kter² bude pou₧it pro zpracovßnφ obsahu formulß°e. Formulß° obsahuje dv∞ vstupnφ pole pro zadßnφ jmΘna a v∞ku. Pole se jmenujφ jmeno a vek. Poslednφm prvkem formulß°e je tlaΦφtko, kterΘ slou₧φ k odeslßnφ formulß°e. Vzhled formulß°e v prohlφ₧eΦi si m∙₧eme prohlΘdnout na obr. 1.
---obrßzek c80523i1.gif
Obr. 1: Jednoduch² formulß°
Formulß°i se budeme zab²vat podrobn∞ji v samostatnΘm dφle naÜeho serißlu, nynφ nßm postaΦφ nßÜ jednoduch² formulß° pro demonstraci spoluprßce ASP s nimi.
Ve skriptu, kter² obsluhuje formulß° (v naÜem p°φpad∞ obsluha.asp), m∙₧eme zjistit obsah jednotliv²ch vstupnφch polφ pomocφ kolekce Request.QueryString. KonkrΘtn∞ jmΘno zjistφme pomocφ Request.QueryString("jmeno") a v∞k pomocφ Request.QueryString("vek").
Ukß₧eme si, jak by mohl vypadat soubor obsluha.asp. Budeme chtφt, aby se jmΘno vypsalo spoleΦn∞ se slovnφm pojmenovßnφm v∞kovΘ kategorie.
Obsluha formulß°e
V²sledek obsluhy formulß°e
<%= Request.QueryString("jmeno") %> je
<% vek = Request.QueryString("vek")
If vek < 10 Then
Response.Write "p∞knej mlφΦnßk"
ElseIf vek < 20 Then
Response.Write "teenager"
ElseIf vek < 60 Then
Response.Write "v nejlepÜφch letech"
ElseIf vek < 100 Then
Response.Write "je pravd∞podobn∞ prarodiΦ"
Else
Response.Write "je n∞kde mezi stovkou a smrtφ"
End If %>.
P°φkaz Response.Write zapφÜe zadan² text p°φmo do t∞la generovanΘ strßnky. StejnΘho v²sledku dosßhneme i pou₧itφm pon∞kud odliÜnΘho zßpisu bez pou₧itφ Response.Write.
Obsluha formulß°e
V²sledek obsluhy formulß°e
<%= Request.QueryString("jmeno") %> je
<% vek = Request.QueryString("vek")
If vek < 10 Then %>
p∞knej mlφΦnßk.
<% ElseIf vek < 20 Then %>
teenager.
<% ElseIf vek < 60 Then %>
v nejlepÜφch letech.
<% ElseIf vek < 100 Then %>
je pravd∞podobn∞ prarodiΦ.
<% Else %>
je n∞kde mezi stovkou a smrtφ.
<% End If %>
V²sledek naÜe ASP skriptu, po zadßnφ jmΘna "Karel Karafißt" a v∞ku 37, si m∙₧eme prohlΘdnout na obrßzku 2.
---obrßzek c80523i2.gif
Obr. 2: V²sledek obslu₧nΘho ASP
V dneÜnφm dφle jsme mo₧nosti ASP jen velmi zhruba nastφnili. V∙bec jsme se nezmφnili o mo₧nostech, kterΘ ASP nabφzejφ pro spoluprßci s databßzemi -- tΘto problematice se budeme v∞novat a₧ v druhΘ p∙li naÜeho serißlu.
Pokud vßm mo₧nosti tvorby dynamick²ch strßnek pomocφ ASP p°ipadajφ p°φmo skv∞lΘ, mßte pravdu. Budeme vÜak objektivnφ a p°φÜt∞ se podφvßme na systΘm PHP3. Ten nabφzφ obdobnΘ mo₧nosti jako ASP a mß i n∞kterΘ v²hody. Jednak je zdarma a jednak je i svi₧n∞jÜφ ne₧ ASP. Navφc netrpφ znßmou nectnostφ ASP -- pokud ASP strßnky na jednom serveru vy₧aduje p°φliÜ mnoho u₧ivatel∙ najednou, server se zastavφ a je pot°eba jej restartovat. Jak tΘto situaci p°edejφt a °ßdn∞ otestovat v²konnost aplikace na serveru, to bude samoz°ejm∞ nßplnφ n∞kterΘho z dalÜφch pokraΦovßnφ serißlu.