COMPUTERWORLD
 

profil kontakt CD-ROM CW100 p°edplatnΘ

archiv anketa CO VY NA TO? CW kariΘra serißly
 

IDG

IDG CZ homepage
COMPUTERWORLD
PC WORLD
INTERNET4U
MEGABYTE
TESTCENTRUM
ON-LINE






COMPUTERWORLD 13/98

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.

JmΘno:

V∞k:

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.

 

 

© IDG Czechoslovakia, a.s., VÜechna prßva vyhrazena
info@idg.cz, webmaster@idg.cz