Egy kis alapozás

A ma használatos HTML persze már jócskán több, mint egyszerű dokumentumleíró nyelv – pontosan annyi köze van az “ős“ HTML-
hez, mint a mai dokumentumoknak az akkoriakhoz. Régen az adatok struktúrája képezte az
alapot, ma inkább azok megjelenítése. Ahogy telt az idő, úgy szivárogtak bele a nyelvbe a
tartalmat nem, azok megjelenítését annál inkább érintő elemek: képek, táblázatok, keretek
(framek), színek, méretek, betűtípusok, külső objektumok, scriptrészletek és ki tudja még mi
minden. A HTML 4-es változatát többek között pontosan azért alkották meg, hogy valamelyest
(újra) szétválaszthassuk a tartalmat a megjelenítéstől, ezzel is csökkentve a HTML oldalak
kódjában található nem kis káoszt. A tartalom és megjelenítés szétválasztása azóta szinte minden
területen hódít, függetlenül attól, hogy a hálózaton található HTML oldalak nagy része a mai
napig nem használja ki a HTML 4 lehetőségeit (köszönhető ez egyébként a szabványokkal többé-
kevésbé hadilábon álló böngésző programoknak is).
A



ASP a láthatáron


Az Active Server Pages (ASP)
elve pontosan ez: amikor azt mondjuk, ASP, tulajdonképpen egy HTML kódba ágyazott,
speciális programozási módszerről beszélünk. (Fontos, hogy az ASP nem egy programozási
nyelv, hanem csak egy keretrendszer). Az ASP oldal végrehajtásakor a webkiszolgáló
végigszalad az oldal tartalmán, és ha abban ASP scriptrészletet talál, végrehajtja. A HTML oldal
és a script által esetleg visszaadott kódrészletek együttesen képezik az eredményt, amit azután az
IIS elküld a böngészőnek. Lássunk egy példát:


A HTML kód belsejében található <% és %> jelzi az ASP kód kezdetét és végét. A köztük
található kódrészlet elvileg soha nem jut el az ügyfélhez, csakis a kód futtatása során keletkező
kimenet (ami esetünkben a Response.Write() metódusnak átadott szövegrész). Az ASP scriptek
beágyazásának módjáról kicsit később még lesz szó, most lássuk, mi lesz az eredmény:
<HTML><HEAD><TITLE></TITLE></HEAD>
<BODY>
<center>Hello World!</center>
</BODY>
</HTML>
Az ASP kód által generált kimenet tehát összemosódott a HTML kóddal. Ez jó, hiszen ráérünk az
oldalt teljes egészében elkészíteni egy külső, kényelmes HTML szerkesztővel, majd utólag
beágyazhatjuk az ASP kódot. Egy gondolat az ASP használatáról: mint látható, az ASP az IIS
webkiszolgáló része. A Windows NT 4.0 Option Pack segítségével telepíthető Internet
Information Server 4.0 (Windows NT 4.0 Workstation-ön Personal Web Server) már tartalmazza
az ASP kezeléséhez szükséges komponenseket, amelyek a Windows 2000 IIS5
webkiszolgálójában természetesen alapértelmezett tartozékok. Ha azt szeretnénk, hogy egy fájlt
az IIS tényleg ASP oldalként kezeljen, adjunk a fájlnak .asp kiterjesztést (ha ezt nem tesszük, a
kód végrehajtás nélkül eljut az ügyfélhez, mintha a HTML oldal tartalma lenne).

Az ASP kódok beágyazása


Az ASP scripte(ke)t az oldalba több módon is beágyazhatjuk. Lássuk mindenekelőtt a HTML
szabványnak megfelelő módot:
<HTML><HEAD><TITLE></TITLE></HEAD>
<BODY>
<SCRIPT runat="server" language="vbscript">
Response.Write("<center>Hello World!</center>")
</SCRIPT>
</BODY>
</HTML>
A SCRIPT HTML elem segítségével tehát ugyanúgy ágyazhatunk be kiszolgálóoldalon futó
kódot, mintha ügyféloldali scriptet írnánk – csak adjuk meg a runat="server" attribútumot.
Hasonlóan az ügyféloldali megoldáshoz, természetesen kiszolgálóoldalon sem muszály az
oldalon belül megírni a scriptet, megadhatunk fájlnevet is (src attribútum): <SCRIPT
runat="server" src="scfile.vbs"> Látható, hogy itt elhagytuk a scriptnyelv meghatározását. Ebben
az esetben a kiszolgáló az alapértelmezett scriptnyelvet használja. Ezt két helyen határozhatjuk meg: egyrészt, az adott .asp oldal tetejére írt, úgynevezett ASP direktíva segítségével : <%@
Language=VBScript %> Ha pedig ez hiányzik, a kiszolgáló a saját beállításait használja. A <%
és %> használata rövidebb és kényelmesebb is, ezért továbbiakban – hacsak kifejezetten nincs
szükség másra – ezt használjuk. Természetesen egy oldalon belül több scriptblokk is szerepelhet.
Az ASP oldal tartalmát az IIS elölről hátrafelé haladva értékeli ki, beleértve magát a HTML
kódot is. Az ASP kód által visszaadott kód az eredményben ott jelenik meg, ahol maga a script
szerepel, például a :
<p>1<p><% Response.Write("a") %><p>2
<% Response.Write("b") %><p>3
eredménye “1a2b3" és nem “ab123" vagy “123ab". A fenti példában láthatjuk azt is, hogy akár
soron belül is készíthetünk scriptblokkot (inline script), nem ritka az alábbihoz hasonló megoldás:
<INPUT type="textbox" value="<% =sTxt %>">
Ezután a szövegmezőben az sTxt változó tartalma jelenik meg. Újabb újdonsággal találkoztunk: a
<% után írt = a Response.Write rövidítése, tehát a <%="Hello!"%> egyenértékű a
<%Response.Write("Hello!")%> sorral. Még egy fontos tudnivaló a több részletben beágyazott
scriptekről: nem tilos az sem, hogy a script “közepén“ egyszer csak tiszta HTML kód jelenjen
meg. Ilyenkor az úgy viselkedik, mintha a kód része lenne, azaz ha az adott szakaszra rákerül a
vezérlés, az is megjelenik, különben rejtve marad.
<% For i=1 To 10 %>
<center>Hello World!</center>
<% Next %>
A fentiek hatására például a Hello World! felirat tízszer íródik ki, az alábbi kódrészlet pedig a
csillagok pillanatnyi állásától függően hol ezt, hol azt “mondja“ (de sosem egyszerre a kettőt!):
<% Randomize ' <- Fontos, különben nem lenne ' véletlen! %>
<% If Int(Rnd()*10) > 5 Then %>
<center>Kököjszi</center>
<% Else %>
<center>Bobojsza</center>
<% End If %>
Így nagyszerűen szegmentálhatjuk az oldalt. Ha például egy ASP oldalon több minden jelenhet
meg, de nem egyidőben, akkor legjobb, ha HTML szerkesztővel létrehozzuk az oldalt, benne az
összes opcionális résszel, majd ezeket a részeket utólag “körbeépítjük“ scripttel, ami majd
eldönti, hogy az adott szakasz látsszon-e vagy sem. Bár a <% és a %> nem szerepelnek a HTML
szabványban, mi bátran használjuk, hiszen ezek a jelek soha nem hagyják el a kiszolgálót. Ha az
ASP script által generált kimenő kód HTML-kompatíbilis, nyugodtak lehetünk abban, hogy mi
minden tőlünk telhetőt megtettünk a szabványos kommunikáció érdekében. Ügyfél-kiszolgáló
kommunikáció: a HTTP protokoll A HTML oldalak számítógépek közötti továbbításához ki
kellett dolgozni egy adatátviteli szabványt. Ez lett a HTTP, azaz Hypertext Transfer Protocol. A
HTTP nem más, mint egy jól definiált ügyfél-kiszolgáló kommunikáció.
A HTTP kommunikációt az ügyfél kezdeményezi: hálózati kapcsolatot létesít a kiszolgálóval és
közli vele igényeit: ez a HTTP kérés (HTTP Request). A kérésre a kiszolgáló választ küld (HTTP
Response), majd az eredeti definíció szerint megszakítja a kapcsolatot és szükség esetén minden
kezdődik elölről. A kapcsolat megszakítására eredetileg azért volt szükség, hogy a fenntartott,
használaton kívüli kapcsolatok ne terheljék feleslegesen a kiszolgálót. Manapság azonban más a
helyzet: egy HTML oldalon képek, objektumok tömege lehet, így elvileg külön kapcsolatot kell
felépíteni először a HTML kód, majd később minden egyes beágyazott kép és objektum
letöltéséhez, és ma bizony éppen az újabb hálózati kapcsolatok létrehozása az, ami túlterhelheti a
kiszolgálót (ráadásul ez nem is igazán hatékony). Ezért a HTTP 1.1 verziójában bevezették a Keep-Alive opciót, amiben ha az ügyfél és a kiszolgáló megegyezik, a kapcsolat nem bomlik le
azonnal (magyarul egy kapcsolat során több kérés és válasz is elhangozhat). Ha bárki hibát észlel,
természetesen azonnal bontják a kapcsolatot. Ma már szinte minden böngésző így próbál
kapcsolódni a kiszolgálóhoz, azok pedig általában elfogadják ezt a kérést. Alapértelmezésben így
tesz az IIS is, erről a “HTTP Keep-Alives Enabled“ opció kikapcsolásával beszélhetjük le (ezt az
adott IIS web tulajdonságlapján, a “Web Site“ oldalon találjuk). A HTTP kérés- és válaszüzenet
egyaránt három fő részből áll:
• Parancs, illetve státuszinformáció
• Fejlécek, metaadatok
• HTTP tartalom
Az első részben (ami mindig az első sor) kéréskor a kért parancs, illetve annak paraméterei,
valamint a verziószám utazik, válasz esetén pedig a státusz- vagy hibaüzenet kódja és
leírása. Az ezután következő fejlécek a kapcsolat és a később következő HTTP tartalom
jellemzőt tartalmazzák, ezek vizsgálatára később részletesebben kitérünk, hiszen ami
ügyfél-kiszolgáló kommunikáció és nem a HTML kód része, az itt található. Végül a HTTP
tartalom, ami válasz esetén maga a HTML oldal, vagy mondjuk egy kép tartalma, kérés
esetén pedig – ha van – a kiszolgálónak szánt bemenő adatok tömege. A fejléceket a HTTP
tartalomtól egy üres sor választja el. Az ASP a HTML tartalom dinamikus létrehozása mellett
természetesen lehetővé teszi a fejrészben kapott adatok feldolgozását és a válasz
fejrészének manipulálását is.

Jelenleg ennyi az ASP.Holnap ujj fejezet!!!