Internet Programozás

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 41

INTERNET-PROGRAMOZÁS

Az elıadások és a gyakorlatok vázlata

Összeállította: Juhász Tibor


– 2004 –

Az elıadás „hivatalos” anyaga: IntAlkNet.zip (régebbi, lásd még: http://www.gdf.hu/Segedletek/119Seg.htm)

1. A World Wide Web


WWW: információforrások hálózata
Összetevıi:
erıforrások címzési rendszere (URL)
protokoll a források elérésére (http)
hipertext az információkezeléshez és a navigációhoz (html)
Uniform Resources Locator (URL)
URI (Uniform Resources Identifier): hálózati erıforrások címzési rendszere
dokumentumok, képek, videó, programok stb.
URL: internetes erıforrások címzési rendszere, a URI része
A URL részei:
protokoll
host-név
port (kimaradhat, ekkor a default értéket használja)
path
Protokoll: http, telnet, file, mailto, ftp, news, gopher, wais stb.
Host-név: általában DNS, a port kettıspont után következik, pl. xxx.xxx.com:80 (web-szerver)
Path: mappák/fájl. Kiegészítések:
#könyvjelzınév (a html fájlon belül)
%paraméterek
?keresıkifejezés
a html kódban használható relatív path is (pl. ../…)!
Ha hiányzik a fájlnév, akkor a webszerver beállításától függıen: index.htm(l), default.htm(l), asp(x) stb.
Dokumentumok: URI.zip, URL.zip, A Beginner's Guide to URLs.htm
Hypertext Transfer Protokol
Alkalmazási réteg protokollja, a TCP/IP fölött helyezkedik el
Web-dokumentumokat, fájlokat továbbít a TCP/IP segítségével
A szerver-kliens modellt használja: webszerver ↔ http ↔ kliens (böngészı)
A HTTP protokoll
HTTP 1.0: 1990-tıl, de egységes szabványként 1996-tól (RFC 1945).
Jelenleg: HTTP 1.1 és HTTP Extensions (RFC2068, 2616 lásd: RFC.zip, Extensions: RFC2774)
Lásd: www.w3.org
Kérés-válasz (request-response) protokoll
Állapot nélküli protokoll (↔ FTP, telnet)
nem emlékszik az utolsó állapotra (1.1-nél beállítható, hogy legyen session!)
minden egyes mővelethez létre kell hozni, majd megszakítani a kapcsolatot
Szöveg-alapú protokoll (ASCII, a log-fájlokban követhetı)
Üzenetekbıl áll (RFC0822, lásd: RFC.zip)
Üzenet: fejléc + törzs (= fájl)
Az üzenetek a MIME-szabványt használják
MIME fejléc: típus/altípus (content-type). Pl.:
text/html, plain, richtext stb.
image/jpeg, gif, tiff stb.
application/msword stb.
Dokumentum: HTTPRef.zip (RFC2068)

Juhász T.: Internet-programozás 1


A HTTP tranzakció
4 lépésbıl áll (követhetı a böngészı állapotsorában)
− a kapcsolat létrehozása
kapcsolatkérés a szerver 80-as portjára
kérés fogadása, a kapcsolat létrehozása
− a kérés elküldése: fejléc + törzs
fejléc: kérési sor: metódus (parancs) + URI + HTTP verziószám (pl. 1.1)
fejléc-mezık (tulajdonképpen az adatok), pl.
dátum, authorization (kódolt jelszóval és felhasználónévvel)
if-modified-since (ha nem, akkor 304-es állapotkódot küld vissza a szerver) stb.
host (1.1-nél, → több webhely ugyanazzal a URL-lel!)
törzs: törzsfejléc-mezık (nem kötelezı), pl.
content-encoding (a tartalom kódolásának típusa)
content-length (a tartalom hossza bájtban, nem kötelezı megadni) stb.
tartalom: a küldendı fájl bájtjai
− a szerver válasza: fejléc + törzs
fejléc: válasz-sor: HTTP verzió + állapotkód
fejléc-mezık stb.
− a kiszolgáló bontja a kapcsolatot
A tranzakció eredménye általában fájl küldése a kliensnek (a válasz törzsében)
Állapotkódok
1xx: információs üzenetek (pl. protokollváltás stb.)
2xx: a kérés elfogadása és kiszolgálása
200: OK
3xx: átirányítás (pl. a kért fájl ideiglenesen egy másik URL-nél található)
304: nincs módosítva (if-modified-since kérés esetén)
4xx: hiba a kliensnél
400: nem értelmezhetı kérés
401: az elérés tiltva (nincs hozzá jog)
404: nem található a kért fájl
500: hiba a szerveren
500: belsı szerver-hiba (elıre nem várt, hibás programfutás)
Példák a web-szerver naplófájljában (%WinDir%\System32\Logfiles\W3svcxx)
Win2000 Server több adatot jegyez fel, mint az XP (pl. a web-szerver IP-címét is)
lásd: wwwlog.txt
HTTP metódusok
A GET metódus
Csak fejlécet küld (URI)
pl. az őrlapoknál az adatok a ? karakter után jönnek
?NEV=…&KOR=…&… (a szóköz helyett + karakter van az adatokban)
Formátum: GET URI (GET nagybetővel!)
A sztring (QueryString) beírható egy szkriptbe (másik weblap szkriptbıl történı meghívásánál)
A ? utáni rész a szerver Query_String környezeti változójába kerül, amit elérhetnek a programok
A sztring hosszát a böngészı URL-jének és a szerver Query_String-jének a hossza korlátozza.
A POST metódus
Összetettebb a GET-nél
Törzset is küld, az adatok (fájlok, objektumok stb.) a törzsben vannak.
A törzsbe beilleszt egy objektumot, és a megadott URI-hez a szerver ezt használja erıforrásként
az objektumot a szerver átadja a megfelelı programnak a standard inputon keresztül (pl. C: stdin)
Nincs a méret korlátozva
A SOAP metódus
Simple Object Access Protocol: egyszerő objektum-hozzáférési protokoll
Csak a .NET ismeri
Kommunikáció XML formátumban (lásd késıbb)
Egyéb metódusok
Pl. PUT: fájl felküldéséhez a szerverre stb.

Juhász T.: Internet-programozás 2


Hypertext Markup Language (HTML)
− fejlécek, szövegek, táblázatok, képek stb.
− hiperlinkek
− őrlapok (!)
− videók, hangfájlok
− a szerveren vagy a kliensen végrehajtandó utasítássorozatok (szkriptek) stb.
Kifejlesztés a CERN-ben (1989)
Az SGML (strukturált leíró nyelvek szabványa, ISO 8879) egy konkrét megvalósítása
4-es verzió: jelentıs változtatások, pl. stíluslapok, szövegirány, elemek azonosítója (!), objektumok (!)
Újabban: XHTL (Extensible Hypertext Language): bıvíthetı

2. A HTML alapjai
Tankönyv 9-35. old.
Megnézni: tankönyvi feladatok (fájlok: Feladat1 mappa, kiegészítve néhány további példával).
Dokumentumok:
− Html40.zip (cover.html, tartalom, elemek jegyzéke, attribútumok jegyzéke, tárgymutató)
− HtmlRefs.zip, HtmlTags.zip
− Htmlreference.html
− HtmlKonyv.pdf (Computer Panoráma, 2002. szeptember, néhány tévedés van benne)
− Tanfolyami anyag példákkal: HtmlTanfolyam.zip (Html.doc)
A HTML dokumentumok szerkezete
− egymásba ágyazott elemekbıl állnak, a legutoljára megnyitottat kell legelıször lezárni.
− fı elemek: dokumentum = fej + törzs
Tagok
− az elemeket tagok határolják (nyitó-tag, tartalom, záró-tag, üres elem esetén csak nyitó-tag van)
− tagok: <név tulajdonságok> … </név>, névnél kisbető, nagybető egyenértékő
− tulajdonságok: név=”érték” (gyakran elhagyható az idézıjel)
Példa: Ures.htm
Fej
− az ablak címsorának a szövege (<title> szöveg </title>)
− dokumentum típusa, karakterkészlet (<meta>, üres elem: nincs záró-tag)
Példa: Elso.htm (szabványos magyar karakterkészlet!!!)
<META http-equiv=CONTENT-TYPE content="text/html; charset=iso-8859-2">
Törzs
− maga a weblap (szövegek, képek, táblázatok, őrlapok, linkek stb.)
− fehér vagy tagoló karakterek (szóköz, enter, tabulátor) nem jelennek meg a weblapon (csak a szavak közti
egyetlen szóköz lesz belılük!) – a forráskód tagolására, strukturálására használhatók
− karakter-entitás (egyed), pl. nem törhetı szóköz: &nbsp; vagy &#160;
több szóköz esetén, táblázatok üres celláiban!
− megjegyzések: <!-- … --> tagban
A HTML dokumentumok formázása
Karakterformázás (Tk. 11-12. old.)
Példa: Feladat1-2.htm (egymásba is lehet ágyazni).
Formázás a font-elemmel: Feladat1-3.htm
Elıre formázott szöveg megjelenítése (fehér karakterek is): Feladat1-5.htm
Hf. Megnézni a HR és NOBR elemeket.
Bekezdésformázás (Tk. 12-15. old.)
Bekezdés, soremelés, címsorok: Feladat1-4.htm
A szöveg igazítása: Feladat1-6.htm
Lapformázás
A BODY elem attribútumaival.
például háttérszín (BGCOLOR), betőszín (TEXT)
Lásd a HtmlTanfolyam-ban.
Képek beillesztése (Tk. 15-16. old.)
Példa: Feladat1-7.htm
Relatív, abszolút elérési út, hivatkozás URL-lel (Tk. 16. old.)
Célszerő megadni a WIDTH és HEIGHT attribútumokat (gyorsabb a lap összeállítása, nem ugrál a szöveg)
Sok további lehetıség a HtmlTanfolyam-ban.

Juhász T.: Internet-programozás 3


Hivatkozások használata (Tk. 16. old.)
Példa: Feladat1-7.htm
Könyvjelzık alkalmazása
Színek: a BODY attribútumaival
alink: az aktív link színe
link: a még fel nem keresett link színe
vlink: a már felkeresett link színe
(onmouseover: lásd a stílusoknál)
Példa: Link.htm, w1.htm, w2.htm, w3.htm
Táblázatok a weblapon (Tk. 19-25. old.)
Egymásba skatulyázott TABLE, TR, TD elemek
Példa: Feladat1-10.htm
Fejléc: THEAD, TH (félkövér betőkkel írja)
Az elemek strukturálásához (pl. XML esetén)
Nyomtatásnál megismétli az új oldalon
Példa: Feladat1-10a.htm
Táblázatok formázása: Feladat1-11.htm
cellspacing: hely a cellák között, cellpadding: margó a cellákon belül
Sorok, oszlopok összevonása: Feladat1-12.htm
Üres cellák keretezése nem törhetı szóközzel: Feladat1-12a.htm
Egy cella további táblázatot is tartalmazhat (lásd Feladat1-13.htm)
Táblázatok felhasználása tördelésre (BORDER=”0”): Feladat1-14.htm
Keretek használata
Tk. 25-28. old
A <frameset> elem
Frameset dokumentum: a body helyett frameset elem
Példa: Feladat1-15.htm
Méret %-ban, pixelben, *: a maradék hely
A keretek egymásba is skatulyázhatók: Feladat1-16.htm
A NOFRAMES elem segítségével adhatunk meg információkat azon böngészık számára, melyek nem ismerik a
kereteket.
Linkek esetén ki kell jelölni a célkeretet (target attribútum): Feladat 1-17
Ötletek, trükkök: Keretek.zip
Konténerek
Tk. 32-33. old.
SPAN: in-line elem (nem hoz létre sortörést)
DIV: blokk-elem (külön bekezdésnek számít)
Cél: önálló stílusok hozzárendelése, objektumok használata
Példa: Feladat1-21.htm
Őrlap-elemek
A FORM elemen belül (a SUBMIT a FORM elemeire vonatkozik)
Példa: Elemek.htm, Valasz.htm
Megnézni a URL-t!
Egyéb lehetıségek
Speciális karakterek megjelenítése (Tk. 33-35. old.):
− Az XMP elemmel (Feladat1-22.htm)
− Karakter-entitásokkal (karakter egyedekkel, Feladat1-23.htm)
− Karakterkódok: Html40.zip/sgml/entities.html, Karakterkod.zip (pl. < > jelek).
Listák: tk. 17-19. old. (Feladat 1-8, 1-9, a-c).
A Fieldset és Legend elemek: Tk. 29-30. old. (Feladat1-19.htm)
A Map elem (aktív területek – hot spots): tk. 31-32. old. (Feladat 1-20.htm).
A FrontPage tudja szerkeszteni (a FrontPage Express nem)
Szép példa: http://alpha.dfmk.hu/~albireo/jt/adria.htm ☺
HTML trükkök
Trukkok.zip
− FontRoller.htm: változó mérető betők
− MoreFonts.htm többféle betőtípus elıírása egyszerre
− PcvsMac.htm: betőméret problémák

Juhász T.: Internet-programozás 4


− Tricolor.htm: képek nyújtásának ötletes alkalmazása
További fájlok
ColPal.exe: a képernyın látható színnek meghatározza az RGB összetevıit
FixMeret.zip: táblázatok összeállításának gyorsítása
FontViewer.zip: bemutatja a különbözı betőtípusokat (master.html)
RosszWeb.zip: 10 rossz megoldás a weblapoknál
Embedding.zip: Windows betőtípus beillesztése
kell hozzá a Weft.exe program
magyarázat a WeftTutor.zip fájlban
HtmlAlapok.zip: bevezetı a HTML-be magyarul (start.htm)
HtmlTutorial.zip: HTML összefoglaló magyarul (index.htm)
Html.zip: HTML referencia magyarul (main.htm)

3. Kaszkádolt stíluslapok
Tankönyv 36-42. old., Feladat2.zip.
Stílusok alkalmazása (~ szövegszerkesztık)
CSS: kaszkádolt stíluslapok, szétválasztják a tartalmat és a megjelenítési formát.
A stílusok elemekhez rendelhetık hozzá (<span>, <div> is használható).
Példák a CSS mappában.
Stíluslapok használata
Alapfogalmak: CSS.htm
Stíluslap: stílusdeklarációk sorozata.
Stílusdeklaráció:
− a tétel neve (szelektor: HTML tag vagy globális osztálynév, erre vonatkozik a stílus)
− deklarációs blokk a stílusdeklarációkkal:
tulajdonságnév: érték
In-line stílusok
A nyitó tagba építünk be egy STYLE attribútumot (szintaxis!).
Példa: Inline.htm
Ritkán használjuk.
Globális stíluslap
A head STYLE elemeként adjuk meg.
Példa: Embedding.htm.
Szintaxis! (Nem kell < > a taghoz, kapcsos zárójel, pontosvesszı)
Több tag is megadható egy deklarációnál, pl. H1, H2 { … }
Csatolt stíluslap
Külön css fájl a stílusdefiníciókkal.
Példa: Linking.htm, mystyles.css.
A css fájlba nem kell a <STYLE> tag!
A html kódban a csatolt stíluslap definíciói felülírhatók!
CSS attribútumok
Lásd: CSStulajdonsagok.htm
Összefoglaló: HtmlTanfolyam.zip/HTML.doc (in-line példákkal)
Részletes ismertetés: Michael J. Young: XML lépérıl lépésre
Stílus osztályok
Egy elemnél altípusokat hozhatunk létre. Példa: Feladat2-4.htm
Globális osztályok: bármelyik elemhez hozzárendelhetık. Példa: Feladat2-5.htm
Az osztályok definíciói is tárolhatók külön fájlban. Példa: Feladat2-5a.htm
A keretezési elıírás régebbi böngészıkben csak blokk-elemre vonatkozik, in-line-ra nem.
Az <a> elem pszeudoosztályai
Példa: Feladat2-6 (Tk. 41. old.)
Szintaxis! (Kettıspont az elválasztójel az A és az osztálynév között.)
Pozícionálás a weblapon
Példa: Pozicio.htm
Pozícionálás összefoglaló: Pozicio.zip (szkripteket felhasználó példákkal is, lásd késıbb)

Juhász T.: Internet-programozás 5


CSS dokumentumok
Magyar nyelvő ismertetı: CssReferencia.zip (cssmain.htm)
A CSS2 újabb lehetıségei: CSS2.htm
CSS példák és ötletek: CSSTippek.zip

4. Az Internet szolgáltatások felépítése


Tankönyv 50-56. old. (XML: lásd a szkriptek után.)
A vizsgán tudni kell:
− egy-, két- és háromrétegő alkalmazásmodell
− vékony és vastag kliens technológia, elınyök, hátrányok
− az alkalmazásfejlesztés életciklusa

5. Statikus és dinamikus weblapok


Statikus weblapok
A szerver tárolja, és kérésre elküldi az elıre elkészített weblapot.
A benne lévı képeket stb. külön-külön kell lekérni.
Minden egér vagy billentyőzet mővelet (pl. őrlapok) újabb információcseréhez vezetnek a szerverrel.
Dinamikus weblapok
Reagálnak a felhasználó által kiváltott eseményekre.
Változnak a letöltés elıtt (akkor készülnek el) vagy a letöltés után (!).
Eszközök
− kliensoldali szkriptek használata (DHTML)
utasítássorozatok (szkriptek) a html kódban
letöltés után is változhat a weblap
a kliensen fut, nem igényel újabb kommunikációt a szerverrel
− programok futtatása a szerveren (CGI)
a kliens kérésének következtében (weblap lekérése helyett)
nehéz megírni, nem illeszthetık a weblapba, erıs szerver kell hozzá
− szerveroldali programozás (ASP, PHP, ASPX)
a szkripteket a szerver hajtja végre
weblapot készít a felhasználó számára
könnyő megírni, nem kell fordítóprogram
interaktív kommunikáció a szerver és a kliens között
Szkriptek
Szkript: a HTML-kódba illesztett utasítássorozat
(pontosabban: olyan utasítássorozat, amit egy másik program hajt végre – interpreter)
Része a weblapnak, a szerver vagy a böngészı hajtja végre
Nyelvek: - ECMA Script: standard szkript nyelv (platformfüggetlen)
implementációk pl. JavaScript, MS Jscript (nem teljesen kompatibilisek)
- MS Visual Basic Scripting Edition (VBS)
Default nyelv a kliensen a JavaScript, a szerveren a VBScript (IIS esetén)
a LANGUAGE attribútummal megváltoztatható (az új lesz érvényes a többi szkriptben)
ASCII kód – interpreter kell hozzá
IE tartalmazza, Netscape esetén a VBS-hez plugin-t kell letölteni
Egy html dokumentumban többféle nyelv is használható
Kliensoldali szkript
− a böngészı hajtja végre
− default: JavaScript
− a szöveg, a lap megjelenésének változtatása (letöltés után! pl. gomb lenyomásakor)
− őrlapok adatainak ellenırzése a küldés elıtt stb.
Szerveroldali szkipt
− a szerver hajtja végre (kiterjesztés!)
− default: VBScript (IIS)
− html kódot generál, ezt küldi el a kliensnek!
− a weblap tartalmazhat szerveroldali és kliensoldali szkriptet egyszerre is
− pl. adatbázis lekérdezés eredménye, őrlapok feldolgozása, átirányítás másik lapra (pl. jelszó) stb.

Juhász T.: Internet-programozás 6


6. Kliensoldali programozás

Az SP2 használata esetén engedélyezni kell az Explorerben az aktív tartalom futtatását a Sajátgép
mappában található fájlokra (Eszközök/Internetbeállítások/Speciális/Biztonság).

Tankönyv: 58-64. old.


Fıbb eszközök:
− kliensoldali szkriptek
− Document Object Model (DOM)
− CSS (pozícionálás)
A <SCRIPT> elem
<script> … </script> (szerveren lásd késıbb)
A dokumentum tetszıleges számú SCRIPT-elemet tartalmazhat
egymásra hivatkozhatnak (pl. változók, függvények, eljárások)
Végrehajtás:
utasítások: a lap beolvasásakor
eljárások, függvények: híváskor (beolvasáskor csak szintaktikai ellenırzés)
eseménykezelı eljárások: az esemény bekövetkezésekor (az operációs rendszer/böngészı hívja meg)
Az eljárásokat, függvényeket a HEAD-be illik tenni (de bárhol lehetnek)
Tulajdonságok:
− language: JAVASCRIPT, JSCRIPT, VBSCRIPT, VBS
− src: a linkelt kód URL-je
− event, for: eseménykezelı szkriptek esetén (lásd késıbb)
Szkriptek futásának engedélyezése
SP2 esetén,
fájlrendszer kezelésénél a vírusirtó jelezhet!

7. A JavaScript
Az Explorer beállítása: Eszközök/Internetbeállítások/Speciális: Böngészés, Üzenet megjelenítése minden
parancsfájlhibáról (a lista végén)
célszerő még: Microsoft VM, Java konzol engedélyezése
JSRef.zip: Jstutor.htm (tankönyv), Jstoc (referencia kézikönyv)
JSTutorial.zip: magyar nyelvő tankönyv (index.htm)
Lásd még: http://msdn.microsoft.com/scripting
Objektumalapú nyelv, a Java (C++) logikáját, szimbolikáját használja
Az utasításokat pontosvesszıvel kell elválasztani
Példa: JavaScript\JSElso.htm
document.write ír az aktuális weblapra (tkp. a document objektum write metódusa)
tagokat is írhatunk a szkriptbe!
Megjegyzések a JavaScript-en belül:
// a sor végéig
/* több soros megjegyzés esetén */
Célszerő HTML megjegyzések (<!-- … -- >) közé írni a szkriptet.
A kód linkelhetı a dokumentumhoz: JSDemo.htm, JSDemo.js
bármilyen txt fájl tartalmazhatja, bárhol lehet (!)
Példa: JSFormazas.htm (betőformázás)
Üzenet a felhasználónak: JSAlert.htm (frissítéssel futtatható újra)
Változók és mőveletek
− betővel vagy aláhúzásjellel kezdıdhetnek
− megkülönbözteti a kis és nagybetőket!
− nem kell deklarálni a változókat (baj!!!), nem lehet megadni a típust (baj!!!)
− lehet deklarálni a változókat (!), egyben érték is adható
pl. var x, y=1, z (csak az y kap értéket!)
Operátorok: tk. 61. old.
Példa: JSOperators.htm
sztringek és változók értékeinek az összefőzése, zárójelezés!!!
az utolsó mőveletnél (1001-500) a fejléc típus sorszáma változó!!!

Juhász T.: Internet-programozás 7


Input
prompt(”felirat”, ”kezdıérték”)
Példa: JSPrompt.htm
A prompt függvény értéke sztring! Pl.: JSPrompt1.htm
konverzió numerikus értékké: parseFloat, parseInt függvényekkel
Vezérlıszerkezetek
Tk. 62-63. old
Példa: JSCiklus.htm
ellenırzés sztringként!
Példa: JSPrompt2.htm
OK: üres sztring lesz az értéke, Mégse: nem kap értéket (null)
JavaScript függvények
Nem kell megadni a visszatérési érték és a paraméter típusát.
Önálló utasításként is állhat (C++), pl. alert (elvész a visszatérési értéke).
A függvénydefiníciókat a HEAD-be illik tenni.
Példa: JSFuggveny.htm
A függvény törzsében létrehozott változók lokálisak!!!
JavaScript objektumok
Elıre definiált és saját objektumok (lásd késıbb).
Szinte minden elem objektumnak tekinthetı.
Math: matematikai függvények és konstansok eléréséhez
Date: dátumok és idıpontok kezeléséhez
Array: tömb (csak objektumként hozható létre és használható)
Objektum létrehozása: objektumnév = new objektumosztály
Példa: JSObjektum.htm
toLocaleString: helyi idı formátumra alakítja (metódus!)
Cookie-k használata
Cookie: a kliens gépen tárolt ASCII fájl (karaktersorozat)
tkp. „változókat” tárolunk benne, hogy felhasználhassuk egy elızı információcsere értékeit
pl. felhasználónév, „jelszó”, nyelv stb.
Helye: Win98: \Windows\Profiles\felhasználónév\Cookies, példa a mappában
Win2000, XP: \Documents and Settings\felhasználónév\Cookies
„Szabványos” tartalma: név - érték - érvényességi kör (domain név, path) - érvényességi idı (kódolva)
A weblap következı lekérésekor a böngészı elküldi a szervernek!
a cookie a szerverhez tartozik, a böngészı fájlok esetén a szerver mappájához rendeli
a URL-t (elérési utat) a fájlnévben is jelzi
Az érvényességi idı után törlıdik (a böngészıbıl való kilépéskor)
ha nincs érvényességi idı, a böngészı bezárásakor törlıdik
Elérés szkriptbıl: document.cookie (tulajdonképpen a document objektum egy attribútuma)
Példa: JSCookie1.htm értéket ad két változónak (a böngészı hozzáfőzi a cookie-fájlhoz, meg lehet nézni!)
JSCookie2 csak kiírja a cookie tartalmát (ugyanabból a mappából kértük le!)
JSCookie3 megváltoztatja a jelszó értékét
lépkedni a vissza-elıre gombokkal
megnézni közben a cookie fájl tartalmát
Érdekes példa: JSCookie4.htm
érték kiolvasása és változtatása a cookie-fájlból
indexOf: az adott pozíciótól kezdve keres egy sztringben
substring: sztringbıl kiemel rész-sztringet (kezdet, vég)
parseInt: sztringet számmá konvertál
megnézni a cookie-fájlt (új paramétert főzött hozzá az elızıekhez)
Részletesebben lásd Juhász T.–Kiss Zs.: Tanuljunk programozni (ComputerBooks, 2004)

Juhász T.: Internet-programozás 8


8. Java appletek
Java: OBJEKTUMORIENTÁLT programozási nyelv (külön tantárgy)
könnyő hálózatra programokat írni (hálózati erıforrások, adatbázisok elérése, kommunikáció)
elvileg rendszerfüggetlen, virtuális gépi kód készül
az interpreter alakítja át processzorkódra
Java Applet (kisalkalmazás): a böngészı segítségével futó Java program
nem kell interpreter, a böngészı hajtja végre
korlátozott Java (nem képes fájl I/O-ra)
böngészı nélkül: appletviewer
xx.java forrásprogram → xx.class (!) virtuális gépi kód, html keret
Az alábbi példák futtatásához a régebbi böngészıkben ki kell kapcsolni az Explorerben a Java 2 engedélyezését:
Eszközök/Internetbeállítások/Speciális/Java Sun/Use Java 2
Példa: Grafika1.htm, class (java)
Példa: MouseEvent.htm, class (java)

9. A Visual Basic Script


Dokumentumok: VBSdoc.exe, VBSRef.zip
Juhász T. – Kiss Zs.: Tanuljunk programozni (Computerbooks, 2004)
Lásd még: http://msdn.microsoft.com/scripting
Visual Basic: teljes értékő, objektumalapú programozási nyelv (grafikus IDE), újabban Visual Basic 2005
http://msdn.microsoft.com/vstudio/express/vb
Visual Basic Script: a JavaScript-hez hasonló parancsnyelv
a böngészı futtatja az ASCII kódú utasításokat
kihasználja a Windows lehetıségeit, együtt tud mőködni más Windows alkalmazásokkal (!)
használni tudja az ActiveX vezérlıelemeket
fájlokat tud kezelni, de az Explorer engedélyt kér a végrehajtáshoz!
Eszközök/Internet beállítások/Biztonság
hátrány: nem platformfüggetlen (↔ Java)
Szintaxis
− nem különbözteti meg a kis és a nagybetőket
− nem kell pontosvesszı az utasítások után
− utasítás folytatása a következı sorban: a sor végére szóköz és aláhúzásjel
− több utasítás egy sorban: kettısponttal elválasztva (csak szükség esetén)
− megjegyzések: aposztróf után a sor végéig (az aposztróf a sor elején is lehet)
− meg kell adni a srcipt elemben a language attribútumot!
Példa: VBDemo.htm
a szkript másik fájlban is lehet (VBDemo1.htm, first.vbs)
Változók használata
Betővel kezdıdnek.
Nem kell deklarálni a változókat (sajnos!!!)
Szokás: a változók típusának prefixumos jelölése, pl. intEgesz
Lehet (illik!) deklarálni a változókat: dim változónév (nem tömb lesz!)
Nem lehet megadni a változók típusát (sajnos!!!)
az elsı értékadáskor lesz típusuk
Formázás a FormatNumber függvénnyel (megadható a tizedesjegyek száma)
Operátorok: Tk. 61-62. oldal.
Példa: VBValtozok.htm
összefőz számot szöveggel!
a programkódban tizedespont, az input/outputnál a területi beállításoknak megfelelı jel!
Változó-típusok és konverziók: VBTipusok.htm (a TypeName függvény visszaadja a típust)

Juhász T.: Internet-programozás 9


Vezérlıszerkezetek
Tk. 62-63. old.
Példa: VBCiklus.htm
chr: kiírja az ASCII kódnak megfelelı karaktert.
Függvények és eljárások (szubrutinok)
Alapértelmezett paraméterátadási mód: cím szerinti!
byval, byref
Példa: VBFuggveny.htm
Példa: VBSzubrutin.htm
Eljáráshívás:
Eljárásnév Paraméter1, Paraméter2, …
Call Eljárásnév(Paraméter1, Paraméter2, …)
Egy paraméter esetén a zárójel használatánál nem kell a Call (kifejezésnek tekinti, érték szerint hívja!)
Függvények is hívhatók eljárásként
Az exit utasítással ki lehet lépni a szubrutinból (de nem illik!)
Üzenet a felhasználónak
− az alert függvénnyel (lásd JavaScript)
− az MsgBox függvénnyel (eljárásként is hívható)
szintaxis: MsgBox(”üzenet”[, gomb+ikon][, ”címsor”])
sortörés az üzenetben: Chr(13) & Chr(10) vagy vbNewLine
a gombok, ikonok megadását és a visszatérési értékeket lásd: MsgBox.txt (elıre definiált konstansok)
Példa: VBMsgBox.htm, VBUzenet.htm, VBMsgIkonok.htm (elıre definiált konstansokat is használ)
Adatbevitel
Az InputBox függvénnyel.
Szintaxis:
InputBox(prompt[, cím][, default érték][, vízszintes pozíció] _
[, függıleges pozíció])
A pozíciót twips-ben kell megadni (lásd Visual Basic, twipit.zip). Default: 1 pixel = 15 twips
az objektumok rendelkeznek twipsPerPixel attribútummal
a képernyı széléhez viszonyítja
pozíció megadása nélkül középre rakja.
„Mégse” esetén Null-lal tér vissza (nem kap értéket a változó, hivatkozáskor üres sztringnek veszi).
Példa: VBInputBox.htm, VBInput.htm
Számok beolvasása: VBInputNumber.htm (!)
Szám vizsgálata az IsNumeric függvénnyel (logikai értéket ad vissza).

10. A Dokumentum Objektum Modell


Tankönyv 57-58. old., 64-72. old.
Leírás: 400 oldal (pl. Microsoft Visual InterDev 6.0 Web Technologies Reference, Microsoft Press, 1998)
Az MS Explorer és a Netscape Navigator összehasonlítása: ExplorerNetscape.htm
A DOM
DOM: Document Object Model, tk. 58. old.
Objektumok: azonosítóval (ID) ellátott elemek
Azonosító, ID
− egyedinek kell lennie az egész dokumentumban (különben nehezebb kezelni – kollekció, konténer)
ciklusnál elınyös
− betővel kell kezdıdnie
− bető, szám és aláhúzásjel szerepelhet benne
− kisbetők, nagybetők a VBS-ben azonosak (JS-ben nem!!!)
Objektumok
− hivatkozni lehet rájuk
− rendelkeznek adatokkal, tulajdonságokkal (attribútum, elemváltozó)
− tennivalókat tudnak végezni (metódusok, elemfüggvények, eljárások)
− eseményeket tudnak kezelni (billentyőzet, egér stb.)
− tartalmazhatják egymást (elemek)

Juhász T.: Internet-programozás 10


Alapobjektumok
− window (gyakran a body-val hivatkozunk rá)
a legmagasabb szintő objektum, tartalmazza a többit
a böngészı hozza létre a lap megnyitásakor
mindegyik keret egy újabb window objektum (leányablakok)
tulajdonság pl. méret, hely, állapotsor szövege (!) stb.
metódus pl. átméretezés, mozgatás, bezárás, üzenet stb.
a hivatkozásnál elhagyható a window (pl alert ↔ window.alert)
− document (általános beállításokhoz, eseménykezeléshez)
az ablakban megjelenı dokumentum
tulajdonság pl. háttér és betőszín, cím (a címsorban) stb.
metódus pl. írás a weblapra
− body (maga a weblap, szöveg, képek, őrlapok stb.)
általában kell neki ID, ha hivatkozni akarunk rá
tulajdonság pl. a szövege, a hivatkozások színe stb.
metódus pl. szöveg utólagos beszúrása, formázások megváltoztatása stb.
body ∈ document (tkp. head és body) ∈ window
HTML-objektumok
Szinte az összes elem, pl.:
img (kép), p (bekezdés), table, tr, td (táblázat, sor, oszlop), form, input (őrlap és őrlap-elemek) stb.
div, span: bármilyen egységbıl objektumot képez!
maguk az elemek tkp. objektum-osztályok, az egyes egyedeik az objektumok.
Speciális objektumok
− event: esemény, a window-hoz tartozik, csak az esemény ideje alatt létezik.
− external: a böngészı objektumainak (külsı objektumok) eléréséhez
− history: a felkeresett weblapok listája (elıre/vissza gombok)
− navigator: a böngészı adatai
− screen: a képernyı beállításai
Saját objektumok
Lásd késıbb.
Az objektumok tulajdonságai
Attribútum, elemváltozó, adattag, mezı
Lényegében megegyeznek a HTML-elemek tulajdonságaival
saját tulajdonság is definiálható
Példa: Attributum\Attributum1.htm, Attributum2.htm (saját attribútum!)
Az attribútumokat meg lehet változtatni: Attributum3.htm
A HTML-objektumok attribútumai
Align attribútum: AlignText.htm, AlignImg.htm
IMG tulajdonságok: Kep1.htm, Kep2.htm (style: további attribútumok!)
Karakter-stílus attribútumok: Font.htm
InnerText attribútum (!): Szoveg.htm, Ido.htm (refresh!)
Táblázat tulajdonságok: Tabla.htm
Az alapobjektumok attribútumai
A document objektum tulajdonságai:
Document.htm (!), DocumentTitle.htm, Background.htm, DocumentLastM.htm
A window objektum tulajdonságai: Status.htm
A speciális objektumok attribútumai
A screen objektum tulajdonságai: Screen.htm, Felbontas.htm
A navigator objektum tulajdonságai: Navigator.htm
a böngészık megkülönböztetését lásd: Browsers.zip-ben
Saját objektumok
Példa: Sajat.htm
létrehozás: objektumnév = {tulajdonság1:érték1, tulajdonság2:érték2, … }
létrehozható konstruktorral is (nem tárgyaljuk)
objektum stílusa: #objektumnév

Juhász T.: Internet-programozás 11


Metódusok
Metódus, függvény, eljárás, elemfüggvény, eljárástag
A document objektum metódusai: Metodus\DocumentWrite.htm
a dokumentum elkészítése után a write metódus törli a teljes tartalmat (lásd késıbb)!
A window objektum metódusai:
WindowAlert.htm, WindowClose.htm
A következı példa elıtt célszerő kis méretőre állítani az Explorer ablakot: WindowMoveTo.htm
WindowResizeTo.htm, WindowResizeMove.htm
WindowResize2.htm, WindowScroll.htm
HTML-objektumok metódusai:
PInsertText.htm, PInsertText2.htm
TableDeleteCell.htm, TableDeleteRow.htm stb.
Saját objektumhoz is rendelhetı metódus (pl. konstruktor)
Eseménykezelés
Bármely elemhez (objektumhoz) rendelhetı eseménykezelı függvény
példa: Esemeny\onClick1.htm, onClick2.htm, onClick3.htm, onClick4.htm, onClick5.htm
Események hozzárendelése az objektumokhoz: Esemeny.htm
in-line: a HTML nyitó tagban, csak ritkán alkalmazzuk (pl. egyetlen utasítás esetén)
több utasítás elválasztása: „ ; ” (JS) vagy „ : ” (VBS)
saját szubrutinnal: sub objektumID_esemény a VBS-ben, objektumID.esemény a JS-ben
közös szubrutinnal:
több objektumhoz is hozzárendelhetı
külön-külön minden eseményt fel kell tüntetni
külön szkripttel: event=esemény for=objektumID
egy szkript elem csak egy objektum egy eseményét tudja kezelni
olyan objektumoknál is használható, melyek nincsenek explicit módon benne a kódban
pl. window (a body-hoz is hozzá lehet rendelni)
Példák eseményekre:
onDblClick.htm
onKeyDown.htm, onKeyUp.htm, onKeyUp1.htm
onMouseDownUp.htm, onMouseOver.htm, onMouseOut.htm
return true: az esemény nem adódik tovább (pl. az ablaknak)
nélküle a böngészı visszaírná a saját állapotsor üzenetét
új ablak nyitása!
Az event objektum attribútumai (csak az esemény ideje alatt létezik!):
XYonClick.htm, XYonMouseMove.htm
onKeyDown1.htm
onLoad.htm (nagymérető kép esetén követhetı)
Internet kapcsolat esetén: onLoad1.htm (ha még így is gyors: onLoad2.htm)
onUnload1.htm, onUnload2.htm (kétféle hivatkozás a window objektumra)
onUnload: ablak bezárása vagy vissza/elıre gombok
onResize1.htm, onResize2.htm, onScroll.htm
DocumentWrite2.htm
Eseménybuborék:
az operációs rendszer az eseményt átadja a „legbelsı” objektumnak, majd lekezelése után tovább
adódik, egyre följebb
leállítás: cancelBubble = true
példa: EventBubble1.htm, EventBubble2.htm
Összetett példák:
Szamlal.htm: kattintásszámláló
onSubmit.htm: a Submit gombra kattintás, megszakítható az elküldés (Valasz.htm)
hivatkozás az őrlapmezı értékére!!!
Valtogat.htm: tömb használata (csak a document. hagyható el)
onBlur.htm: őrlapmezık tartalmának ellenırzése
onBlur esemény: amikor a felhasználó elhagy egy őrlapmezıt
hivatkozás az elem (objektum) azonosítójára: this.value
focus(), select(): visszaviszik a kurzort a beviteli mezıre és kijelölik a beírt értéket

Juhász T.: Internet-programozás 12


Random.htm: véletlenszám generálás
round: kerekít, random: véletlenszámot generál 0 és 1 között
toString metódus (!): sztringgé alakítja a Number objektumot (!)
a color stílus megadható az rgb() függvénnyel is
Buttons.htm: a window objektum history és location metódusainak használata
location: a URL-t adja meg, history: navigálás a weblapok között (vissza, elıre)
Kedvenc.htm: a böngészı objektumainak elérése
Calculator.htm
Beszur.htm: beszúr szöveget a Parag nevő objektum elé
set: értékadás objektumnak
IsNumeric.htm (NaN: not a number, nem szám)
Kollekciók
Kollekciók: konténerek (objektumokat tartalmaznak)
Az objektumok az adott osztálynak megfelelı kollekcióba kerülnek
számozás 0-tól kezdve
Kollekciók:
− all: az összes objektumot tartalmazza az elıfordulás sorrendjében
length: a kollekció elemeinek a számát megadó attribútum
item: az adott indexő vagy nevő objektumot visszaadó metódus
tagName: az elem osztályának típusa
példa: Kollekcio\All.htm
− images: a dokumentumban lévı képek, példa: Images.htm
− links: a dokumentumban lévı linkek, példa: Links.htm
Explorer és Netscape megkülönböztetése:
if (document.all) { utasítások az Explorernek }
else if (document.layers) { utasítások a Netscape-nek }
Megnézni: Browsers.zip (böngészı azonosítása, különbségek, problémák)
Idızítı (timer) használata
Külön szálat (folyamatot) indító/leállító függvények.
setTimeout: adott milliszekundum múlva egyszer kiértékeli az adott kifejezést (meghívja az eljárást)
hozzárendelhetı egy változóhoz, melynek segítségével le lehet állítani (VBS-ben kötelezı!)
példa: Timer\SetTimeOut.htm
clearTimeout: leállítja a setTimeout hívást, nem következik be az adott idı múlva
példa: ClearTimeOut.htm
rekurzív hívás!!!
setInterval: adott milliszekundumonként kiértékeli az adott kifejezést (pl. függvényhívást)
hozzárendelhetı egy változóhoz, melynek segítségével le lehet állítani (VBS-ben kötelezı!)
példa: SetInterval.htm
clearInterval: törli az adott változóhoz tartalmazó setInterval-t (leállítja a kiértékeléseket)
példa: ClearInterval.htm
pixelLeft, pixelTop: az objektum pozíciójának állítása (elérés a style objektumon keresztül)
Lásd még: Bolyong1-3.htm, StatusTimer.htm
nem ajánlatos az állapotsorba futó szöveget írni - idegesíti a felhasználót!
További példák a CSS-nél említett Pozicio.zip fájlban (Mozgatas1-3.htm, Mozgohatter.htm)
Debugger
http://msdn.microsoft.com/downloads/list/webdev.asp

11. A Microsoft Script Editor


Az Office része, de telepíteni kell [lásd: A) függelék]
az Explorerben be kell állítani a parancsfájlhibák megjelenítését
Hibás HTML-kód (vagy szkript esetén magától bejelentkezik): Mse\Hiba.htm
kiírja a hibás sor számát, a hibát, és rákérdez az MSE elindítására
a kurzor a hiba helyén villog
Office 2000-ben
Microsoft Development Environment 6.0
Indítás: \Program Files\Microsoft Visual Studio\Common\Ide\Ide98\Mse.exe (célszerő parancsikont készíteni)
Az …Ide98\Mse\1038 mappában Asp, Html, JavaScript és VBScript referenciák (.chm fájlok)

Juhász T.: Internet-programozás 13


Office XP-ben
Microsoft Script Editor 10.0
Indítás: \Program Files\Microsoft Office\Office10\Mse7.exe
Jelentısen megújult (Microsoft Development Environment 7.0, benne Microsoft Script Editor 10.0)
pl. Auto Hide eszköztárak stb.
Súgó fájlok: …\Office10\1038\Mse10.chm, Htmlref.chm, Jscript.chm, Vbscript.chm
Nem mőködik az IntelliSense???
Az MSE használata
Dokkolható eszköztárak (az ablak széléhez ragadnak): Windows/Dockable
XP: rajzszög (autohide, fülek)
File/New File (New, Existing, Recent)
Toolbox-ból TextBox-ot, Button-t föltenni
Abszolút pozícionálás: Format/Absolute Positioning (elıtte kijelölni az elemet)
Design, Source, QuickView nézetek
Properties eszköztár (pl. BODY, a tagba kattintani a Source nézetben, bgColor, text stb.)
Document/DefaultClientScript: JavaScript
Script Outline (Source View): BED az OnClick-re: text1.value=”A gombra kattintottál.”
IntelliSense: a pont után megjelennek az attribútumok és metódusok – folytatható a gépelés
A kezdıbető lenyomásával rááll a keresett betőre
Példa: MseScript.htm

12. Az XML alapjai


Tk. 43-49. old.
Extensible Markup Language, bıvíthetı struktúrált adat (információ) leíró nyelv, a HTML továbbfejlesztése, az
SGML egy szőkített megvalósítása.
− Saját tagok használata (bıvítés pl. matematikai kifejezések, kotta, pénzügyi információáramlás stb.)
XML-applikációk (szótárak): http://www.oasis-open.org/cover/xml.html#applications
− Hierarchikus felépítéső dokumentumok megjelenítése (pl. egymásba ágyazott részek, fejezetek stb.)
− Adatbázisok megjelenítése (rendezés, keresés, szőrés stb.)
HTML: forma, XML: tartalom
Olvasható, ASCII-kód
Egyre inkább az internetes kommunikáció inputja, outputja (lásd pl.: web-szolgáltatások a .Net-ben)
Dokumentumok: XMLRef.zip
Michael J. Young: XML lépésrıl lépésre (!)
Az XML dokumentumok szerkezete
Példa: Inventory.xml – az Internet Explorer kilistázza (raktárkészlet)
+/- jelekkel tömöríthetı a megjelenítés – hierarchikus szerkezet
− Prológus:
XML deklaráció és verziószám (pl. <? xml version=”1.0” ?>)
feldolgozási utasításként adjuk meg
Dokumentum-típusdeklaráció: <! … > (lásd késıbb)
Feldolgozási utasítások az XML-processzor számára: <? … ?> (lásd késıbb)
megjegyzések: <!-- … -->
− Dokumentum-elem (gyökér-elem): egyetlen elem!
Egymásba skatulyázott elemekbıl áll
Nyitó-tag (neve a tag típusa), tartalom, záró-tag
Név: betővel vagy aláhúzásjellel kezdıdik, betőket, számokat, pontot (.), kötıjelet (-) és
aláhúzásjelet (_) tartalmazhat
− Feldolgozási utasítások
− További megjegyzések, fehér karakterek tetszés szerint
Jól formázott XML dokumentum (szintaxis)
− Egyetlen dokumentum-eleme van
− Az utoljára megnyitott elem zárul be elıször (egymásba vannak skatulyázva)
− Minden elemnek van nyitó és záró tagja (kivéve az üres elemnek)
− A nyitó-tag típusa (neve) pontosan megfelel a záró-tag nevének (megkülönbözteti a kis- és nagybetőket!)
Az Internet Explorer jelzi a formátumhibákat: InventoryBak.xml (az elsı hibát jelzi ki)

Juhász T.: Internet-programozás 14


Az elemek tartalma
− Beágyazott elem
− Karaktersorozat (kivéve a következı karaktereket: <, &, ]])
− Általános entitás (pl. &author;)
− Karakter-referencia (pl. &lt; vagy &#60;)
− CDATA (karakteradat) szekció (ez már tetszıleges karaktereket tartalmazhat a ]]-et kivéve), pl.:
<![CDATA[
Itt már állhat < és & karakter is
]]>
− feldolgozási utasítás
− megjegyzés
Az elemek attribútumai
Pl. <BOOK Category=”fiction” Display=”emphasize”>
vagy <COVER_IMAGE Source=”Faun.gif” /> – üres elem!
CSS használata esetén az attribútumok nem jeleníthetık meg (a kép sem)
Feldolgozási utasítások
Formátum: <? Cél utasítások ?>
Pl. az <? xml … ?> az XML-processzornak szól
Saját szkript számára pl.: <? MyScript argument1=”abc” argument2=”45” ?>
Dokumentum-típusdeklaráció (DTD)
A dokumentum szerkezetét írja le
Helye a prológusban az XML deklaráció után
Formája:
<!DOCTYPE a_dokumentum_elem_neve
[
elemdeklarációk
]
>
Elemdeklarációk
Formátum: <!ELEMENT név a_tartalom_típusa>
A tartalom típusa pl.
tetszıleges: ANY,
karakterek (parsed character data): (#PCDATA),
leányelemek: (elemnév, elemnév, …),
választható leányelemek: (elemnév | elemnév | …)
Módosító karakterek: ? (egy vagy egy sem), + (egy vagy több), * (egy sem, egy vagy több)
Pl. (STAR* | PLANET): az elem tartalmazhat akárhány STAR leányelemet vagy egy PLANET elemet
A módosító karakterek a zárójel után is elhelyezhetık, pl. (STAR | PLANET)+
Az attribútumok deklarálása
Formátum: <!ATTLIST elemnév attribútumdefiníciók>
Attribútumdefiníció: attribútumnév attribútumtípus default-deklaráció
Típus pl. sztring: CDATA, tokenizált típus: ID (egyedi minden elemre), ENTITY (külsı fájl neve) stb.,
felsorolt típus: a deklarációban felsorolt értékekkel rendelkezhet stb.
A default deklaráció az az érték melyet az attribútummal nem rendelkezı elemek vesznek fel. (Lehet
#REQUIRED: minden elemnél meg kell adni az attribútumot, #IMPLIED: ha nincs megadva az elemnél, nem
lesz ilyen attribútuma)
Egy elem attribútumdeklarációjának ismétlıdésekor (pl. külsı DTD esetén) az elsı deklaráció lesz az érvényes,
a többit figyelmen kívül hagyják.
Külsı DTD
Különálló fájlban szerepelnek az elem-deklarációk (csak azok!)
Txt fájl, szokásos kiterjesztés: .dtd
Beillesztés: <!DOCTYPE dokumentumelemnév SYSTEM ”fájl_URI”>
A fájl lehet a lokális gépen vagy az Interneten bárhol
dokumentumelemnév: a hivatkozáshoz szükséges
Entitások az XML dokumentumokban
Entitás: nagyon sokrétő értelme van (pl. sztring, külsı fájl stb.) – hivatkozni lehet rá
lényegében a konstansoknak felelnek meg.
Példák entitás-deklarációra (a DTD-ben):
<!ENTITY topics SYSTEM ”Topics.xml”>
<!ENTITY title ”A Short History of XML”>

Juhász T.: Internet-programozás 15


Hivatkozás:
<INTRODUCTION>
&topics;
</INTRODUCTION>

<TITLE>
Title: &title;
</TITLE>
Karakter referenciák pl. a < jel esetén: &#60; vagy &lt;
Érvényes XML-dokumentumok
Egy XML-dokumentum érvényes, ha
− Jól formázott
− A prológus dokumentum-típusdefiníciót (DTD) tartalmaz
− A dokumentum további része megfelel a DTD-nek
Az Internet Explorer nem ellenırzi az érvényességet
Példa: InventoryValid.xml
Az érvényesség ellenırzése: ValidTest.htm, InventoryValid.xml, InventoryInvalid.xml
A BODY elem XML tagjába be kell írni az XML fájl nevét
Megjelenítés stíluslapokkal
Nincs HTML fájl, az XML-t kell letölteni!
Feldolgozási utasítás a prológusban:
<? xml-stylesheet type="text/css" href="InventoryStyle.css" ?>
Példa: InventroryStyle.xml, InventoryStyle.css
display:block sortörés az elem elıtt és után
display:none nem jeleníti meg az elemet
A CSS nem különbözteti meg a kis- és a nagybetőket, az XML igen!!!
Névterek használata
Az XML dokumentumok elemeinek neve tetszıleges lehet (megegyezhet pl. HTML elemek nevével is)
Megkülönböztetés: névtér használatával (namespace)
Szintaxis: névtér_neve:elem_neve
A névteret használat elıtt deklarálni kell, pl. HTML elem használata esetén:
xmlns:html=’http://www.w3c.org/TR/REC-html40/’
Így pl. az XML dokumentumok tartalmazhatnak HTML-elemeket is, pl.: Raven.xml, Raven.css
Az XML dokumentumok adatainak megjelenítése
Adattárolás: XML, megjelenítés: HTML
Az XML fájl csatolása a HTML-hez az XML elemmel (a HTML fájlban), pl.:
<XML ID=”dsoBook” SRC=”Book.xml”></XML>
Az SRC értéke lehet bármilyen URI hivatkozás (http://… is)
Megjegyzés: a HTML fájlban nem lehet lezárni az üres elemet <XML … /> módon!
Az Internet Explorer: az XML dokumentum tartalmát rekordok halmazaként (recordset) egy adatforrás-
objektumban (DSO, data source object) tárolja a memóriában.
Megjelenítés táblázattal
Egyszerre az összes rekord megjelenítése vagy lapozás
Teljesen azonos szerkezető rekordok
A DATASRC a TABLE elem, a DATAFLD az egyes cellákban lévı SPAN elem attribútuma
TD-hez nem köthetı adat, csak pl. SPAN-hez! (TD: szerkezet, forma, SPAN: tartalom)
Annyiszor ismétli a sorokat, ahány rekord van (de csak egyszer kell beleírni a HTML kódba)
Példa: Inventory.xml, InventroyTable.htm
Hierarchikus szerkezető rekordok (minden rekord további beágyazott rekordokat tartalmazhat)
Egymásba ágyazott táblázatokkal
A beágyazott táblázathoz a DSO-t és a beágyazott rekordokat is hozzá kell kötni (DATAFLD)
Példa: InvertoryHierarchy.xml, InventoryHierarchy.htm
Lapozás a táblázatban
A TABLE elem DATAPAGESIZE (rekordszám) megadásával és firstPage(), previousPage(), nextPage(),
lastPage() metódusaival (ID-t kell adni a TABLE elemnek!)
Példa: InventoryBig.xml, InventoryBigTable.htm

Juhász T.: Internet-programozás 16


Megjelenítés rekordonként
Rekordonként (egyszerre csak egy rekord megjelenítése), pl.:
<SPAN DATASRC=”#dsoBook” DATAFLD=”AUTHOR”></SPAN>
Navigálás a DSO objektum recordset kollekciójának metódusaival:
MoveFirst, movePrevious, moveNext, moveLast, move(n) – a rekordok számozása 0-val kezdıdik
Példa: InventorySingle.htm, InventoryBig.xml
Attribútumok megjelenítése a táblázatban
A rekord-elem attribútuma esetén pl.:
<BOOK InStock=”yes”> … (mezı-elemek) … </BOOK>
hivakozás a DATAFLD attribútummal: <SPAN DATASRC=… DATAFLD=”InStock”></SPAN>
Beágyazott mezı-elem attribútuma esetén pl.:
<BOOK><AUTHOR Born=”1835”>Mark Twain</AUTHOR> … </BOOK>
hivatkozás: mintha beágyazott mezı lenne (beágyazott táblázattal, az eredeti tartalom: $TEXT)
Példa: InventoryAttribute.htm, InventoryAttribute.xml
Adatok kötése más elemekhez
Adat köthetı a következı elemekhez: A, APPLET, BUTTON, DIV, FRAME, IFRAME, IMG, INPUT (type =
checkbox, hidden, password, radio, text), LABEL, MARQUEE, SELECT, SPAN, TEXTAREA
Példa: InventoryImage.xml, InventoryImage.htm
Szkriptek használata
Az adatforrás objektum (DSO) programozása
A recordset attribútumainak és metódusainak használatával
Példa keresésre: InventoryFind.htm, InventoryBig.xml
− ToUpperCase(): így tetszılegesen írható be a keresett sztring
− InnerHTML: formázott megjelenítés a HTML-kódnak megfelelıen
− MoveFirst(): elölrıl kezdi a keresést (a rekordmutató állítása)
− MoveNext(): a következı rekordra áll a mutató
− IndexOf(SearchString): a keresett sztring kezdıpozíciója (ha megtalálta, egyébként -1)
− Recordset(”TITLE”): a recordset.fields(”TITLE”).value megengedett rövidítése
Keresés pl. „of”-ra
Az XML Dokumentum Objektum Modell
Csak nagyon röviden tárgyaljuk
DOM: az XML különbözı komponenseinek objektumai
Elérhetık az elemek, attribútumok, feldolgozási utasítások, megjegyzések, entitások stb.
Visszatükrözi az XML eredeti hierarchikus szerkezetét
A hierarchikus szerkezet elágazási pontjai a csomópontok (nodes), pl. #document (az egész XML dokumentum),
elem (az egyes elemek), attribútum, #comment (megjegyzés) stb.
A csomópontok listázása: ShowNodes.htm, InventoryDom.xml
A htm fájl BODY-jába kell beírni a feldolgozandó XML-fájl nevét
Az elemek elérése:
− a childNodes kollekcióval: DomDemo.htm, Inventory.xml
− a getElementByTagName metódussal: GetElements.htm, Inventory.xml (nagybetők!)
XSL stíluslapok használata
Extensible Stylesheet Language (kiterjesztett stíluslap-nyelv) – az XML egy applikációja
Az XML dokumentumok közvetlen megnyitása HTML-kód nélkül
Sokkal hatékonyabb és rugalmasabb a CSS-nél, jobban alkalmazkodik az XML szerkezetéhez (minden összetevı
elérhetı, pl. elemek, attribútumok, megjegyzések, feldolgozási utasítások stb.)
Szkripteket is tartalmazhat
Csatolás az XML dokumentumhoz:
<? xml-stylesheet type=”text/xsl” href=”XSLpath” ?>
XSLpath akárhol lehet (az Interneten is, de csak ugyanabban a domain-ben!)
Az XSL alapján a böngészı átalakítja az XML dokumentumot HTML-kódba (az XML-t kell letölteni!)
Az XSL dokumentum tartalma
− egy dokumentum-elem (gyökér-elem) a névtér megjelölésével (xmlns):
<xsl:stylesheet xmlns:xsl=”http://www.w3.org/TR/WD-xsl”>
− legalább egy sablon-elemmel (template) a gyökér elemben:
<xsl:template match=”/”>
a match attribútum a CSS szelektorának felel meg
az attribútum értéke a minta (pattern), ez jelöli ki, hogy az XML dokumentum mely elemére
vonatkoznak a stílus-elıírások („/” a gyökér-elem)

Juhász T.: Internet-programozás 17


− xsl:value-of elemek: a select-tel megjelölt XML-elem tartalmát reprezentálják (a leányelemekkel együtt)
meg kell adni az elérési út operátorát az XML-en belül, pl.: „BOOK/TITLE”
csak egy elem tartalmát adja át a böngészınek
− xsl:for-each: az összes elem tartalmát átadja
az elemen belül a select-ben megadott elérési út lesz az aktuális
− az XSL-ben lévı HTML-kódot a böngészı közvetlenül átmásolja a készülı weblapra
üres elem lezárása!
Példa: XslDemo.xsl, XslDemo.xml
Szőrés és rendezés
Szőrés: a select elérési útjába írt [elemnév = ’tartalom’] szőrıvel
Rendezés: az xsl:for-each elem order-by attribútumával (+: növekvı, -: csökkenı sorrendben), pl.:
Példa: XslFilterSort.xsl, XslFilterSort.xml
Az XML attribútumok elérése
A @ karakterrel
Pl.: select=”AUTHOR/@Born” vagy select=”INVENTORY/BOOK[@InStock=’yes’]”
Példa: XslAttributes.xsl, XslAttributes.xml

13. Az Internet Information Server


XP: IIS 5.1 (némileg eltér a 4-estıl), a 2003-as szerver a 6-os verziót tartalmazza.
Windows 2000 Professional, Server, XP Professional
Ismeri: HTTP, FTP, SMTP, NNTP
Telepítés: lásd A) függelék. A szerverre default telepíti.
Célszerő beállítani a Win2000 szervert applikációs szerverként (fájl-szerver helyett)
Start/Beállítások/Hálózati és telefonos kapcsolatok/Helyi kapcsolat/Tulajdonságok:
Fájl- és nyomtatómegosztás/Tulajdonságok: Átvitel optimalizálása hálózati alkalmazásokra
Csak a szerveren állítható (Professional változaton nem)
Az IIS adminisztrálása
A Win2000 és az XP kissé eltér (feliratok, menüparancsok neve stb.)
Start/Vezérlıpult/Felügyeleti eszközök: IIS, Szolgáltatások: Webes közzététel (Elindítva)
Az MMC (Microsoft Management Consol)
Start/Futtatás/mmc
Új modul hozzáadása: Fájl/Beépülı modul hozzáadása,
Egyedülálló/Hozzáadás/Internet Information Services
kilépésnél mentés (pl. gyökérkönyvtárba)
célszerő parancsikonként kitenni az asztalra
Szerverek: a gép ablakában (indítás, leállítás, szüneteltetés)
Tulajdonságlapok: Webhelyek, Alapértelmezett webhely, mappák, fájlok
Egyéb lehetıségek:
− tartalomelavulás engedélyezése (Tulajdonságok/HTTP-fejlécek)
− a tartalom minısítése (Tulajdonságok/HTTP-fejlécek)
az Internet Explorer tartalmi tanácsadója használja fel
− weblapok láblécének megadása (egy mappa tulajdonságlapján a Dokumentumok fülnél)
Leállítás és indítás: a webhely gyorsmenüjében (vagy az eszköztárban)
váratlan leállások esetén célszerő az újraindítás elıtt szabályosan is leállítani
szüneteltetés: az aktuális kéréseket még teljesíti, de újabb kapcsolatot nem nyit
Default értékek az összes webhelyre (öröklıdnek): a Webhelyek mappa tulajdonságlapján
A konfiguráció mentése/helyreállítása:
a gép kiválasztása, Mővelet/Az összes feladat/Konfiguráció biztonsági mentése/visszaállítása (#:
sorszám)
default könyvtár: \Windows\system32\inetsrv\MetaBack
a fájl más gépen nem használható
Parancssori adminisztráció
Iisreset.exe: leállítja, majd újraindítja a szolgáltatásokat.
Paraméterek: /restart megállítja és újraindítja az összes Internet-szolgáltatást (default)
/status megjeleníti az Internet-szolgáltatások állapotát
/help felsorolja a lehetséges paramétereket
Távoli adminisztráció
Engedélyezni kell a kliens IP-címét (default: localhost) a tulajdonságlapon a Könyvtárbiztonság fülnél

Juhász T.: Internet-programozás 18


Dokumentáció: http://DNS-név/iishelp/iis/misc/default.asp
− http://dns-név:port-szám
szükséges hozzá a felügyeleti Webhely TCP-port száma
a felügyeleti Webhely tulajdonságlapján, véletlenszerően választja az installáláskor
kliens IP-címének engedélyezése a felügyeleti Webhely tulajdonságlapján
nem mőködik, amíg nyitva van az IIS-konzol
− http://dns-név/iisadmin
kliens IP-címének engedélyezése az IISADMIN virtuális könyvtár tulajdonságlapján
− a Microsoft Terminálszolgáltatások segítségével (szerveren engedélyezni, kliensen telepíteni, XP: Távoli
asztal). Dokumentáció: c:\Winnt\Help\TermSrv.chm, TermCli.chm
Dokumentumok publikálása
Másolás a c:\InetPub\wwwroot mappába (a lokális hálózaton megosztható!)
Példa: IIS\Szevasz.htm
lekérés: http://gépnév/Szevasz.htm (gépnév helyett localhost is lehet)
A webhelyek felépítése
Webhelyek (web-sites)
Webhely: egy DNS-névvel (~IP-címmel) és egy port-számmal azonosított mappa (a tartalmával együtt)
Egy IIS-szerver (a Windows szerveren) több webhelyet is létre tud hozni (virtuális web-szerverek)
egy DNS-név, egy IP-cím: különbözı port-szám – nem szükséges regisztrálni
több DNS-név, több IP-cím: regisztrálni kell (egy hálózati kártya is elegendı)
több DNS-név, egy IP-cím: a HTTP fejléc host mezıjét használja a megkülönböztetésre
– regisztrálni kell a DNS-neveket
– SSL alatt és régebbi böngészıknél nem mőködik
– Webhely tulajdonságai, Webhely/Webhely azonosítása, Speciális, Állomásfejléc neve/értéke
Egy webhely: egy Home-könyvtár, egy alapértelmezett dokumentum, egy eseménynapló, saját operátorok
(webhely felügyelık), sávszélesség szabályozás, hozzáférés-szabályozás stb. (külön adminisztráció)
A telepítésnél létrejön egy webhely: az Alapértelmezett webhely (XP-n csak ez)
A Win2000 szerveren még a Felügyeleti webhely is (a távoli adminisztrációhoz)
A Win2000 Professional/Win XP változaton csak egy webhely létezhet (maga az alapértelmezett webhely)
Új webhely létesítése: a gép kiválasztása, Mővelet/Új/Webhely
A Kezdıkönyvtár (Home-könyvtár)
Egy webhely – egy Home-könyvtár
Logikailag a webhely gyökérkönyvtára (virtuális fıkönyvtára) – nem lehet „feljebb” lépni
Fizikailag: a szerver-gép egy alkönyvtára
egy megosztott könyvtár a lokális hálózat valamelyik számítógépén (elérési jogok állítása)
átirányítás egy másik URL-re (a Könyvtár fülnél a tulajdonságlapon)
az átirányítás almappákra vagy fájlokra is elıírható (az itt megadottat tölti le a böngészı)
A DNS-névvel (lokálisan a szerver nevével is) azonosítható (+ port-szám)
Változtatás: a webhely tulajdonságlapján, a Kezdıkönyvtár fülnél (célszerő megváltoztatni)
A default weblap
Default sorrend: Default.htm, Default.asp, index.htm iisstart.aps (installáláskor elkészül), Default.aspx
default.aspx – a Dot.Net installálása után
más típusú szervereken gyakran: index.htm(l)
változtatás a webhely tulajdonságlapján (Dokumentumok)
Példa: http://gépnév, átmásolni a Default.htm-et, és újra letölteni.
Virtuális könyvtárak
A Home-könyvtáron kívül lévı könyvtárak is a Home-könyvtár alá rendelhetık
Másik gép megosztott könyvtára is lehet
Létrehozás az MMC-vel: Mővelet/Új/Virtuális könyvtár
Létrehozás az Intézıvel (csak NTFS fájlrendszernél): egy mappa Webmegosztásával
Alias: rövid név (az elérés út helyett), ezzel lehet rá hivatkozni
Felhasználás: összetett webhely esetén a különbözı részekre rövidebb URL-lel lehet hivatkozni
A webalkalmazás (applikáció)
Webalkalmazás: egy adott mappához tartozó fájlok, alkönyvtárak összessége (a webhelyen belül)
pl. egy szerveren egy külön webhely a felhasználók weblapjai számára, egy-egy felhasználó egy-egy
alkalmazás
Egy alkalmazás: egy Global.asa(x) fájl, végrehajtási engedélyek, alkalmazásvédelem, default ASP-nyelv stb.
Létrehozás: Mővelet/Új/Virtuális könyvtár (virtuális könyvtár lesz belıle!)
A webhely egyben egy webalkalmazás is.
Az alkalmazás elindul, amikor az elsı felhasználó lekér egy weblapot (!), és leáll, amikor a web-szerver leáll.

Juhász T.: Internet-programozás 19


Az alkalmazások adminisztrációja
Végrehajtási engedélyek
Tulajdonságok/(Kezdı)Könyvtár
− nincs: sem programok, sem szkriptek végrehajtását nem engedélyezi
− csak parancsfájlok: csak a szkriptek (ASP) végrehajtását engedélyezi
− parancsfájlok és végrehajtható fájlok: szkriptek és bináris fájlok (.exe, .dll) végrehajtását is engedélyezi
célszerő külön mappába tenni (bin) és arra megadni
Alkalmazásvédelem
Tulajdonságok/(Kezdı)Könyvtár
− alacsony (IIS-folyamat): a web-szerver (IIS) folyamatában (Inetinfo.exe)
ha elszáll az alkalmazás, elszáll a szerver is (nem célszerő alkalmazni)
− közepes (készletben lévı): egyetlen folyamat az összes alkalmazás számára (DLLHost.exe)
ha elszáll egy alkalmazás, elszáll a többi is, de a webszerver nem áll le
− magas (elszigetelt – izolált): külön folyamat az alkalmazás számára (külön DLLHost.exe)
csak fontos alkalmazásokra célszerő elıírni (erıforrás-igényes megoldás)
Állítható a CGI fájlok idıkorlátja (Win2000)
a gép tulajdonságlapja, Szerkesztés/Kezdıkönyvtár/Konfiguráció/Folyamatbeállítások
Biztonsági beállítások
Webszerver: IUSR_gépnév (nem a kliens!!!) – a névtelen felhasználóknál alkalmazza
A home-könyvtárra célszerő csak Olvasás jogot és Csak parancsfájlok végrehajtási engedélyt adni.
Server Side Includes
Fájlok beillesztése a weblapokra
Több helyen felhasznált HTML-kód vagy szkript esetén:
<!-- #include file | virtual =”elérési út/fájlnév” -->
file: relatív elérési út esetén (az aktuális könyvtárhoz viszonyítva)
virtual: teljes elérési út egy virtuális könyvtárból (alkalmazás home-könyvtárából) kiindulva
Kiterjesztés: .stm, .shtm, .shtml (jelölni kell a szervernek!)
Az SSI fájlokat célszerő külön könyvtárba rakni (engedély: Csak parancsfájlok vagy Parancsfájlok és
végrehajtható fájlok)
javasolt kiterjesztés: .inc (include)
Egyéb SSI-lehetıségek
Pl. applikáció vagy parancsfájl futtatása (output: a weblapra):
<!-- #exec cgi=/scripts/guestbook.exe?FirstName+LastName -->
Egyéb lehetıségek
WebDAV: egy kliens menedzselheti a saját web-applikációját a HTTP 1.1 protokoll segítségével
adminisztráció (engedélyek), fájlok másolása, módosítása, törlése stb.
Lásd az IIS dokumentációját.

14. Szerveroldali programozás

Az alábbi példákban szereplı fájlok csak a web-szerverrıl letöltve mőködnek.


Szükség esetén törölni kell a proxyt az Internet Explorer beállításaiból.

Tk. 73-84. old.


HTTP: összeköttetésmentes protokoll
− a szerver elküldi a kliensnek a HTML fájlt a tartalmától függetlenül
− a böngészı külön-külön kéri le a benne lévı képeket stb.
CGI programozás
Common Gateway Interface: adatcsere a böngészık és a szerveren futó programok között
Régebben az őrlapok kéréseinek kezelése külön programokkal történt, melyek a CGI interface-en keresztül
kapták meg a paramétereket
A CGI programok gyakran a cgi-bin (vagy bin) mappában vannak (végrehajtási jog kell)
Lehet .exe, .cgi, gyakori a PERL használata (.pl kiterjesztés)
Perl: sztringek kezelésére kifejlesztett nyelv (interpreter kell hozzá, néhány webszerver tartalmazza)

Juhász T.: Internet-programozás 20


A paraméterek elérése:
QUERY_STRING környezeti változóból (szerver)
standard inputról (objektum), PASCAL: getenv (DOS unit)
A választ (általában HTML dokumentum!) a standard outputra kell küldeni, a szerver továbbítja a kliensnek
Példák:
− a környezeti változók értékének megjelenítése: Cgi_env.exe (forráskód: Cgi_env.c)
a szerveren a cgi-bin mappába kell másolni
végrehajtható fájlok engedélyezése a cgi-bin könyvtárra (és a Home-könyvtárra??? – öröklés nélkül)
lekérni a szerverrıl a Gomb.htm fájlt
− a GET és a POST metódusok összehasonlítása: GETUrlap.htm, POSTUrlap.htm
figyelni a címsorra és a content-length-re
Érdemes megnézni a webszerver eseménynaplóját
\Windows\system32\LogFiles\W3svc1 (Commanderben F4-gyel!)
Szép példa: IIS.htm (a Nemzetközi Őrállomás aktuális pozíciója) – cgi fájl a szerveren!
periodikusan frissíti!
CD-n lévı nem mőködik (változott a URL!), helyette: IIS.htm
Szerveroldali szkriptek
A szerver elıször végigolvassa a HTML kódot, végrehajtja a rá vonatkozó szkripteket
Az így létrejött elemeket beilleszti a szkriptek helyére (a felhasználó nem kapja meg a szkriptet)
a kliensoldali szkriptek megmaradnak
Elınyök:
− a szkriptek függetlenek a kliensprogramoktól (és platformoktól)
− rejtett szkriptek (szerzıi jogok)
− csökkenthetı a letöltendı dokumentumok mérete
Unix, Linux: például php
Microsoft: asp (IIS ismeri)
JavaScript, VBScript nyelven, szerveroldali objektumok
Active Server Pages (ASP)
Tk. 74-76. old.
Lásd még: IIS Documentation
Tartalmuk: szöveg, HTML-elemek, kliensoldali szkriptek, szerveroldali szkriptek
A mappára engedélyezni kell a parancsfájlok végrehajtását.
Csak a web-szerverrıl letöltve mőködnek!
A szkripteket interpreter dolgozza fel (↔ aspx)
Tiszta HTML-kódot küld vissza a kliensnek (a szerveroldali szkriptek megjegyzéseit is eltávolítja)!
Default nyelv a szerveren a VBS (beállítás: mmc, Tulajdonságok/Kezdıkönyvtár/Konfiguráció/Beállítások)
Lásd még: ASP_Guide.zip, tartalom: asgovr.htm
Szerveroldali szkriptek
In-line: <% … %> tagok között
néhány utasítás esetén használjuk, más elemekbe is beírható!!!
pl. <%= … %> (output direktíva) beírja az adott karaktersorozatot a HTML-kódba
Példa: Elso.asp (szerverre felmásolni, és onnan lekérni!)
forráskódot megnézni
Külön szkriptben: <SCRIPT> elem RUNAT=server attribútummal
általában eljárások, függvények
kötelezı megadni a language attribútumot!
ASP direktívák: @ után, üzenetek a szervernek a feldolgozás módjára vonatkozóan
pl. <%@ language=VBScript %> (nem állhat szóköz az egyenlıségjel egyik oldalán sem)
Általában nem eseményvezéreltek (kivéve a Global.asa-t, lásd késıbb)
pl. nem használható az InputBox, MsgBox stb.
Csak a szerveroldali objektumokat éri el!
Egy .asp lapon többféle nyelv is használható.
A szkriptek elhelyezése
Keverve a HTML-kóddal: Koszon1.asp
statikus a szöveg (nem programozható)
nehéz áttekinteni
lassúbb, mintha egybe lenne fogva (egyetlen SCRIPT elemben)
Elkülönítve a HTML-kódtól: Koszon2.asp
Még hatékonyabb megoldás: Koszon3.asp (több helyen is felhasználható a sztring)

Juhász T.: Internet-programozás 21


Megjegyzések
az ASP eltávolítja a %> és a <% közötti fehér karaktereket! Példa: Szokoz.asp
célszerő a változók kötelezı deklarációját elıírni az <% Option Explicit %> utasítással
eljárásokban, függvényekben deklarált (vagy értéket nyerı) változók lokálisak!
Eljárások
Nem használható bennük az output direktíva (helyette: Response.Write)
Hívás:
− az eljárás nevével (az argumentumlistát nem szabad zárójelbe tenni)
− call eljárásnév (az argumentumlistát zárójelbe kell tenni)
Call-lal hívhatók VBS függvények is, a visszatérési értéket nem veszi figyelembe.
Tömbök átadása: üres zárójelekkel
Beilleszthetık az #include direktívával is.
Példák
− Bruhaha.asp (HTML-tag attribútuma változó az ASP-kódban! Megnézni a letöltött forráskódot!)
− Feladat5-4.asp (szerveroldali változó felhasználása, tk. 75. old.)
− Valtozok.asp (szerveroldali szkript változói a kliensoldali szkriptben!)
Szerveroldali objektumok
Tk. 76-84. old.
Lásd még: IIS Documentation
Attribútumok, metódusok, kollekciók.
Dokumentumok: Objektumok.zip, Global.zip.
Kollekciók
Lényegében konténerek („tömbök”, index helyett névvel lehet hivatkozni az elemekre), azonosító: kulcs
a kollekció objektumainak lehetnek attribútumaik
Hivatkozás: objektum.kollekció(„név”), vagy ha egyértelmő: objektum(„név”)
pl. Request.Cookies(„allat”) vagy Request(„allat”) – nem célszerő!
Hivatkozni lehet az elem indexével is (1-gyel kezdıdik), de az változhat beszúrásnál vagy törlésnél
Iteráció a kollekcióban
A példák a Session objektumban tárolt összes változó (attribútum) kiírását mutatják be.
For … Each … In: az Each iterátor alkalmazásával
Dim strItem
For Each strItem In Session.Contents
Response.Write Session.Contents(strItem) & ”<br>”
Next
For … Next: a Count attribútum felhasználásával
Dim lngItem, lngCount
lngCount = Session.Contents.Count ’ az elemek száma a kollekcióban
For lngItem = 1 To lngCount
Response.Write Session.Contents(lngItem) & ”<br>”
Next
a JavaScript-ben célszerő lokális változóval helyettesíteni az lngCount-ot a ciklusfejben
A JS Enumerator objektumával: sorra veszi a kollekció elemeit
Metódusok: at End, item, moveFirst, moveNext
Példa:
var myCollection = new Enumerator(Session.Contents);
while (!myCollection.atEnd())
{
var x = myCollection.item();
Response.Write(Session.Contents(x) + ”<br>”)
myCollection.moveNext();
}
Response
Tk. 80-81. old.
Információküldés a felhasználónak (írás a készülı HTM fájlba), átirányítás, cookie-k kezelése stb.
Metódusok:
write: szöveget ír a készülı fájlba, csak eljáráson belül szükséges (egyébként <% = … %> vagy
egyszerően elég a szöveg)
pl. ResponseWrite.txt
redirect: átirányít egy másik weblapra, lásd még a Session objektumnál.

Juhász T.: Internet-programozás 22


Attribútumok:
pl. ContentType: pl. ha HTML forráskódot akarunk megjeleníteni:
<% Response.ContentType = "text/plain" %>
pl. Status: a HTTP válaszkódjának megváltoztatása, saját kód alkalmazása:
<% Response.Status = "555 Saját kód" %>
Kollekciók: pl. cookies
cookie küldése:
<% Response.Cookies("allat")="elefant" %>
<% Response.Cookies("allat").Expires="2001-12-31" %>
Request
Tk. 76-79. old.
− a szerverváltozók elérése
− GET query sztringje
− POST paraméterei
− cookie-k
− kliens hitelesítése (certification) stb.
Kollekciók: tk. 79. old., Form és QueryString: lásd késıbb.
ServerVariables: szerverváltozók értékei (leírás: Objektumok.zip-ben)
szerverváltozók kiírása: SrvVar.asp
elküldeni egy query sztringet (pl. ?v1=aa&v2=bb), frissíteni (QUERY_STRING)
SessionID-t megnézni (http_COOKIE, lásd késıbb).
példák szerverváltozók használatára: SValtozok.txt (include direktíva!!!)
Cookies:
cookie: azonosítóval (kulcs) ellátott karaktersorozat
a szerver küldheti a kliensnek, vagy fordítva
(dinamikus weblap is tárolhat a kliensen cookie-t)
a kollekció segítségével a cookie-k értéke beállítható és lekérdezhetı
ha már volt cookie ilyen azonosítóval, akkor a régi tartalom törlıdik
példák: Cookies.txt
Server
Tk. 83-84. old.
Kapcsolattartás a web-szerverrel. Fıleg szerveroldali ActiveX objektumok létrehozásához a CreateObject
metódussal. Szintaxis:
<% set SajatObjektum=Server.CreateObject(”komponensnév”) %>
Beépített ActiveX komponensek: Components.zip
Példa: Szamlal.asp, a lap letöltéseinek számlálása (az IIS 6.0 verziójától kezdve nem elérhetı).
Application
Tk. 81-82. old.
Alkalmazásszintő változók létrehozására alkalmas:
<% Application(”Udvozlet”) = ”Üdvözlet a weblapomon” %>
<%= Application(”Udvozlet”) %> – akármelyik weblapról elérhetı
Példa: ApplVar1.asp, ApplVar2.asp
Kollekciók: pl. Contents (a szkriptek által az alkalmazáshoz adott változókat és objektumokat tartalmazza)
Application.Contents.Remove(”strSzoveg”): törli az strSzoveg nevő változót
Application.Contents.RemoveAll: a kollekció minden elemét törli
Események: Application_OnStart, Application_OnEnd, eseménykezelés a Global.asa fájlban (lásd késıbb)
Metódusok:
Lock, Unlock: a változók értékadásának idejére
<% Application.Lock
Application(”NumVisits”) = Application(”NumVisits”) + 1
Application.UnLock %>
. . .
Ezt az alkalmazást eddig
<%= Application(”NumVisits”) %>-szor nézték meg.
Lásd még: Application.txt
a Global.asa fájlnak az alkalmazás Home-könyvtárában kell lennie, lásd: Global.zip
Session
Tk. 82-83. old.
Lásd késıbb
Egyéb objektumok
Pl. ASPError: hibakezeléshez, lásd az IIS dokumentációját.

Juhász T.: Internet-programozás 23


Kommunikáció a klienssel
Form-ok adatainak kezelése:
1. htm fájl küld adatokat asp-nek
2. asp küld adatokat egy másik asp-nek
3. asp küld adatokat saját magának (!)
A Request.QueryString kollekció
A kérés URL-jében a ? utáni sztringgel (query-sztring) tér vissza
A GET metódusnál használjuk (kézzel – szkriptben is beírható a query-sztring)
A Query_String rendszerváltozót helyettesíti
A kollekciót könnyebb elérni, könnyebb adatokra szétválasztani.
Korlátozott a teljes sztring hossza (a routerek redukálhatják a URL méretét)
Példák:
− Qstring.txt (példák a használatra)
− QueryString.htm, QueryString.asp (az ékezetes karakterek kezelését ld. a következı példában)
− Koszon.htm, Valasz.asp (kipróbálható az ékezetes karakterek átadása)
− Etel.htm, Lista.asp (több azonos nevő paraméter kezelése)
Lásd még: Tk. 76-78. old.
A Request.Form kollekció
A POST metódusnál használjuk (nem korlátozott a méret)
A QueryString-hez hasonló a kezelése (hivatkozás, indexelés stb.)
Példák:
− htm fájl küld adatokat asp-nek: Form1.htm, Resp.asp
probléma: nehéz áttekinteni az összetartozó fájlokat, hiányosan kitöltött rovatok esetén hibásan mőködik
− asp küld adatokat saját magának: Form2.asp
probléma: hiányosan kitöltött rovatok esetén hibásan mőködik
− rejtett mezık használata: Form3.asp
elıször még nincsen „rejtett” nevő mezı, ezért hibaüzenettel leállna
on error resume next: hiba esetén kihagyja a hibát okozó utasítást (itt az IF-et)
a következı utasítás végrehajtásával folytatja (itt az őrlap elkészítésével!)
− az összes név-érték pár kiíratása: Form4.asp
az iterátorváltozó (x) használható a HTML kódban!
Ha az asp saját magának küldi a választ, akkor hibás érték esetén a figyelmeztetés után újra lejön az őrlap
(egyébként a felhasználónak a Vissza gombbal kéne visszamenni az őrlapra): GetEmail.asp
A munkamenetek (Sessions)
HTTP: állapotnélküli protokoll (nem emlékszik az adott felhasználó/kliens elızı kérésére)
probléma pl. on-line vásárlásnál a kosár tartalmának követése
Megoldás: Session objektum + azonosító (ID) a kliens számára
azonosító a cookie-ban (ha nincs engedélyezve, nem követhetı a munkamenet)
Egy munkamenet (session) létrejön felhasználónként, ha
− egy új felhasználó lekér egy asp (!) lapot, és egy speciális fájl (Global.asa) tartalmaz egy Session_OnStart
eseménykezelı eljárást
− egy asp szkript értéket tárol a Session objektumban vagy hivatkozik egy a Global.asa-ban létrehozott
objektumra
− kérés érkezik egy a szerveren nem létezı SessionID cookie-val (pl. a lejárati idın túl küldi vissza)
A munkamenet befejezıdik, ha a felhasználó az elıírt idı alatt (Timeout) nem kér újabb lapot, vagy nem frissíti
az eddigit (default: 20 perc, beállítás az mmc-n az alkalmazás tulajdonságlapján a Könyvtár/Konfigurációnál)
a default értéket nem célszerő túl hosszúra venni (erıforrásigényes)
a default érték beállítható a szerveroldali szkriptben is: <% Session.Timeout = 5 %>
A munkamenet explicit lezárása: <% Session.Abandon %>, pl „Kilépés” gombhoz rendelve
Munkamenetek tiltása:
− szerveroldali szkriptben: <%@ EnableSessionState = False %> (egy asp lapon)
− az alkalmazás konfigurációjában
Tulajdonságok/Kezdıkönyvtár/Konfiguráció/Beállítások, Kapcsolatállapot engedélyezése
A SessionID
Minden Session kap egy egyedi ID-t, amit a szerver cooki-ban leküld a kliensnek, majd az újabb kérések esetén
ellenırzi, hogy ugyanarról a munkamenetrıl van-e szó.
Létrejön az alkalmazás elsı asp lapjának lekérésekor
Véletlenszerő karaktersorozat

Juhász T.: Internet-programozás 24


A kliens böngészıje tárolja (cookie), a kérések fejlécében küldi vissza
egy másik asp lap lekérésekor is ugyanazt az ID-t használja
amíg nem lép ki a böngészıbıl, addig ugyanazt az ID-t használja (akkor is, ha lejárt a default idı)
tárolás hosszabb idın keresztül: a cookie expiration date-jének segítségével
A szerver a memóriában tárolja
ha szükség van rá a késıbbiekben, akkor adatbázisban kell tárolni
A Session objektum
A Session objektumban az adott felhasználóra vonatkozó adatok tárolhatók a munkamenet idıtartamára
<% Session(”Nev”) = ”Kovács János” %>
Kedves <%= Session(”Nev”) %>
Többszöri használat esetén célszerő lokális változóhoz rendelni (értékadás)
Példák:
Session.asp: session-szintő változók létrehozása (username, age)
van egybıl SessionID!
A Global.asa fájl
Munkamenet vagy alkalmazásszintő változók, objektumok, eseménykezelı szkriptek tárolása
Az alkalmazás gyökérkönyvtárába kell tenni (egy alkalmazásnak csak egy Global.asa fájlja lehet)
Az alkalmazás eseményei: Application_OnStart, Application_OnEnd. Példa:
<script language=VBS runat=Server>
Sub Application_OnStart
Application(”NumberofVisitors”) = 0
End Sub
</script>
Munkamenet események: Session_OnStart, Session_OnEnd
Példa: a felhasználó átirányítása az alkalmazás kezdı weblapjára (ha nem azt tölti le elıször, Redirect.txt):
’ szkript a Global.asa fájlban
<SCRIPT RUNAT=Server Language=VBScript>
Sub Session_OnStart
kezdoLap = "/MyWeb/Elso.asp"
aktualisLap = Request.ServerVariables("SCRIPT_NAME")
' a lekért weblap URL-je
If strcomp(aktualisLap, kezdoLap, 1) Then
' összehasonlítja a két sztringet a
' kis- és nagybetők megkülönböztetése
' nélkül. 0, ha egyenlık.
Response.Redirect(kezdoLap)
' átirányít az adott weblapra.
End If
End Sub
</SCRIPT>
Átirányítás esetén a Redirect metódus hívása után szereplı egyetlen utasítás sem lesz végrehajtva!
A Global.asa tartalmazza az alkalmazás-szintő objektumokat is (pl. adatbáziskezelésnél).
A kód pufferelése
A szerver sorra végrehajtja az asp-lap szerveroldali szkriptjeit, és elkészíti a HTML-kódot. Nem lehet utólag
törölni már elkészült részeket. Ehhez pufferelni kell a készülı lapot a Response.Buffer attribútum True-ra
állításával (alapértelmezés: True). Engedélyezés/tiltás:
<% Response.Buffer = True | False %>
Az utasítás az asp fájl elsı sora legyen (ne kezdje el elıtte összeállítani a lapot)!!!
A puffer törlése:
ha a lap elkészült
a Response.Clear metódus hívásával
A puffer tartalmának elküldése a kliensnek:
a FLUSH metódusal (folytatja az asp feldolgozását)
az END metódussal (abbahagyja az asp feldolgozását)
A feldolgozás leállítása és a puffer elküldésének letiltása:
<% Response.Clear : … : Response.End %>
Példa: Rbuffer.txt

Juhász T.: Internet-programozás 25


15. A Microsoft .NET
– Hogyan tudta Isten 6 nap alatt megteremteni a világot?
– Nem kellett gondoskodnia a lefelé kompatibilitásról

Tankönyv 85-88. old.


Problémák a Windows és az Internet programozásában:
− Több mint 5000 különálló függvény (pl. „alert”)
− COM (1993) komponensek: elıre gyártott objektumok, függvények
Függ a programnyelvtıl (pl. karakterláncot másképp kódolnak)
Öröklés a továbbfejlesztésnél nem alkalmazható
− Különbözı platformok
− Memóriaszivárgás (hosszú ideig futó kiszolgálók, pl. web-szerverek)
− Verziókezelés hiánya
Új telepítések DLL-jei felülírják a régit
Emiatt egy másik alkalmazás nem fog mőködni (jóval késıbb derülhet ki)
Nehéz a felderítés (a mi programunk jó lenne, más okozta a hibát)
− Digitális bizonyítvány a letöltéseknél: letöltöm vagy nem
Jelenleg a legtöbb programot a webrıl telepítik (többet, mint CD-rıl)
Nem lehet korlátozni a letöltött kódot (pl. fájlhozzáférés)
Megoldás:
− Forráskód → fejlesztıeszköz → felügyelt kód (MS IL: Microsoft Intermediate Language)
Független a forráskód nyelvétıl, eltőnnek a különbségek
Fordítóprogramok kb. 20 nyelvre (Microsoft: Visual Basic, Jscript, C#, C++)
Teljeskörő objektumorientált nyelvek (Visual Basic is)
− CLR (Common Language Runtime): nyelvfüggetlen futtatórendszer
Futtatáshoz: futtatás elıtti fordítás (JIL: just-in time compiler)
A DLL-ek is IL-ben vannak (az osztályok és metódusok leírása: metaadatok formájában)
Névterekbe rendezett osztálykönyvtár (metódusok, attribútumok)
Az öröklés a nyelvek között is mőködik!
Verziókezelés
A kódhozzáférés szabályozása (pl. Internetrıl letöltött programok esetén)
Biztonsági házirend az assembly-k számára (jogok XML-ben megadva)
\Windows\Microsoft.NET\Framework\verziószám\ConfigWizards.exe
pl. a számítógép-szintő beállítások a Config\Machine.config fájlban (XML!)
Automatikus memóriakezelés (szemétgyőjtés), általában helyettesíti a destruktor hívását
Bonyolult algoritmusoknál nehéz áttekinteni, hogy mikor törölhetı egy objektum
COM objektumok beburkolása: NET objektumnak (és viszont a COM-ügyfelek számára)
Strukturált kivételkezelés (hibakezelés): információk egy hibakezelı objektumban
A programfuttatás folyamata:
A programbetöltı átadja a felügyelt kódot a CLR-nek
A CLR meghívja a JIT fordítóprogramot
A JIT gépi kódra fordít
A CLR végrehajtja a gépi kódot
Szükség esetén ismét meghívja a JIT-et, hogy fordítsa le az igényelt DLL-t is
Megadható, hogy tárolja a gépi kódot (nem kell ismételt hívásnál újra fordítani)
Megvalósítás: .NET keretrendszer (framework) – CLR és osztálykönyvtár
− Könnyő és gyors programírás (az algoritmussal kell foglalkozni, nem a gépies kódolással)
− Egyszerő telepítés
− Egyszerő Internet- és adatbázis hozzáférés
− Kliens-alkalmazások Web-hozzáférése (Web-szolgáltatások)
Névterek használata
Az operációs rendszer függvényeinek (és a felhasználói függvényeknek) azon halmaza, melyen belül minden
névnek egyedinek kell lennie.
Az operációs rendszer objektumai és függvényei a System névtérben vannak
dll fájlok a \Windows\Microsoft.NET\Framework\verziószám mappában
Az objektumok a System.Object ısosztályból származnak
Alárendelt névterek, még tovább tagolódhatnak
Teljesen minısített név (q-név, fully qualified name): az egymásba ágyazott névterek sorozata (minısítı elıtag)
+ a függvény neve. Ennek használatával a kód bármely részébıl meghívhatunk egy függvényt.
Névtér importálása: használatával elhagyható a minısítı elıtag

Juhász T.: Internet-programozás 26


Saját névterek: fájlonként több is lehet, több fájl is tartozhat egyhez (logikai egység)
Az assembly
Az alkalmazáshoz tartozó EXE és DLL fájlok logikai győjteménye
Helyettesíti a regisztrálást!
Erıforrásokat és metaadatokat tárolnak (az IL moduljai)
Tartalomjegyzék: manifeszt (azonos fájlban az erıforrásokkal vagy külön fájl is lehet)
Kezelés az SDK-val
Osztott használatú assembly-k a globális assembly gyorsítótárban (GAC, global assembly cache):
\Windows\assembly\GAC
Privát assembly: a dll az ügyfélalkalmazás könyvtárában van (nem kell regisztrálni)
Máshonnan nem hívható

16. A programfuttatási és fejlesztıi környezet


Részei:
− .NET keretrendszer (az operációs rendszer bıvítése) és fejlesztıi rendszer
− Microsoft Visual Studio.NET (IDE), illetve Microsoft Visual Studio 2005
(http://msdn.microsoft.com/vstudio/)
− ingyenes változatok : Visual Studio Express Edition (VB, VC#, VC++, VJ#, SQL-server,
Visual Web Development 2005 Express Edition
http://msdn.microsoft.com/vstudio/express
− (Web Matrix)
A .NET Framework
Keretrendszer, az installálást lásd az A) függelékben.
Tartalmazza az osztálykönyvtárakat, a CLR, JIL stb. komponenseket.
Konfiguráció állítható: Vezérlıpult/Felügyeleti eszközök, Microsoft .Net Framework Configuration, Microsoft
.Net Framework Wizards
A fejlesztıi rendszer (SDK)
Telepítés: osztálykönyvtárak, CLR, JIL stb. komponensek
A konfiguráció állítása: Vezérlıpult/Felügyeleti eszközök (mmc-re felvehetı)
Letöltés: http://msdn.microsoft.com/netframework/downloads/updates
131 MB, nekünk nem kell!
CD: \Programok\DotNetSDKsetup.exe
A Microsoft Visual Studio.NET 2003
Tankönyv 89-95. oldal
Letöltés: http://www.campus.hu → FTP szerver, Szoftverletöltések – fájlok
csak az NIIF tartományaiból (pl. megyei könyvtár)
7 CD (postán is megrendelhetı), licenszigazolás kérhetı
telepítés 2 óra (!?), maximális hardverigény
4. generációs (vizuális) fejlesztıeszköz
Windows-, konzol- (parancssori) és webes alkalmazások létrehozása
Beépítve: Visual Basic (.Net), Visual C#, Visual C++
Nem foglalkozunk a konzol- és Windows-alkalmazások írásával (lásd: Visual Basic)
Az integrált fejlesztıi környezet
IDE (Integrated Development Environment)
Dokkolható eszköztárak
IntelliSense
Szintaktikus hibákat aláhúzza
Region, #End Region direktívákkal kinyitható, becsukható egy adott kódrészlet
Strukturális egységekhez (ciklus, eljárás stb.) magától hozzáadja
A tervezést segítik az elıre elkészített stíluslapok, sablonok (templates), szerkezetek (layouts, navigáció) és
minták (themes) használata stb.
Menük, eszköztárak, nyomtatási kép, csatlakozás adatbázisokhoz, webszolgáltatásokhoz stb.
Saját vezérlıelemek fejlesztése, ActiveX objektumok felhasználása stb.
Lásd: Steven Holzner: Visual Basic .NET Fekete könyv (Perfact-Pro Kft., 2002), CD-vel
A web-projekt
Web-modell: alkalmazások vannak a web-szerveren (külön IP címekkel vagy egy-egy virtuális könyvtárban).
A Visual Studio a projekt segítségével kezeli az applikáció (alkalmazás) fájljait
A projekt fájl nem tartozik hozzá a webhez, csak az applikáció fájljaira mutat
A Visual Studióban különözı projektek (web, adatbázis, utility) hozhatók létre a fejlesztés során.

Juhász T.: Internet-programozás 27


A webalkalmazáshoz tartozó projektek összessége a solution
weblapok, adatbázisok, fejlesztıi eszközök
Web-projekt felvehetı egy létezı solution-ba, vagy létrehozható egy új solution-nal együtt.
Solution → Projects → Items (fájlok)
A továbbiakban csak a webalkalmazásokkal foglalkozunk.

17. Az ASP.NET
Tankönyv 96-106. old.
Web-őrlap vezérlıelemek referenciája (HTML és szerveroldali vezérlıelemek):
http://samples.gotdotnet.com/quickstart/aspplus/doc/webcontrolsref.aspx
Web-őrlapok szintaxisa:
http://samples.gotdotnet.com/quickstart/aspplus/doc/webformssyntaxref.aspx
HTML, ASP, ASP.NET
Statikusan tárolt weblapok kezelése (HTML):
A felhasználó beírja a URL-t a böngészıbe
A böngészı elküldi a kérést a kiszolgálónak
A kiszolgáló megkeresi és visszaküldi a kért fájlt
A böngészı megformázza és megjeleníti az oldalt
Dinamikusan generált weblapok (ASP):
A felhasználó beírja a URL-t (vagy kitölt és elküld egy őrlapot!)
A böngészı elküldi a kérést a kiszolgálónak
A szerver az adatok alapján (általában adatbázis-kezeléssel) létrehozza a kért oldalt
A böngészı megformázza és megjeleníti az oldalt
Feltételek:
− Adatbáziskezelés, lekérdezés, módosítás
− A beküldött adatok fogadása, a visszaküldött weblap generálása
Vezérlıelemek használata a nyers HTML-kód írása helyett (Visual Studio)
− Hitelesítés (authentication) és engedélyezés (authorization)
− Felhasználói munkamenetek (session) kezelése, pl. bevásárlókosár nyilvántartása
Az ASP hátrányai:
− Bonyolult feladatokhoz nehéz alkalmazni
− Keveredik a HTML-kód és a szkript, nehéz áttekinteni
Az ASP.NET egy programozói keretrendszer, amely megkönnyíti a szerveroldali programozást.
− Elkülöníti a HTML kimenetet és a programozott eljárásokat (mögöttes kód!)
− Automatikusan kezeli a HTML-szerkezeteket
− Lehetıvé teszi objektumorientált alkalmazások fejlesztését
− Jelenleg: VC#, VB, VJ#, VC++
Eszköz: web-őrlapok használata (web-form)
Web-őrlapok
Olyan keret weblapok, amelyeknek a segítségével a web-szerver dinamikus weblapokat tud létrehozni.
A weblap programozása a Windows-alkalmazások programozásához hasonlít
Text fájlok @Page direktívával és .aspx kiterjesztéssel.
Elemei objektummodelt alkotnak – hivatkozni lehet rájuk (attribútumok, metódusok, események)
Az esemény a kliensoldalon következik be, az eseménykezelés a szerveren történik!!!
A kimenet egy HTML-kód, amit a kliensnek küld el!
A bennük lévı kód az elsı lekéréskor lefordításra kerül – megmarad a szerveren
Beállítható egy folyamat maximális futási ideje (memóriaszivárgás, összeomlás ellen)
Beépített szolgáltatások az alkalmazásfejlesztéshez (biztonság, adatbáziskezelés)
Intelligens/integrált fejlesztıi keretrendszer (IDE)
Objektumok felhelyezése az egérrel (automatikusan generálja a kódot)
HTML-szintaxis helyettesítése tulajdonságlappal
A web-őrlapok (aspx) futtatása
− A böngészı elküldi a kérést a szervernek
− Az IIS betölti a futtatómodulba
− A futtatómodul lefordítja az oldalt (JIT fordítás) – a lefordított kód tárolása további kérésekhez
− A futtatórendszer betölti a lefordított osztályt és létrehozza a mögöttes kód objektumát
− A mögöttes kód létrehozza a vezérlıelemeket
− A vezérlıelemek elıállítják az aktuális állapotnak megfelelı HTML-kódot!
− A weblap elküldése az ügyfélnek, formázás, megjelenítés

Juhász T.: Internet-programozás 28


Szerveroldali vezérlıelemek (web-vezérlıelemek)
Tankönyv 97-102. old.
Megnövekedett szám, funkciók, programozási lehetıségek
Teljeskörő objektumorientált programozás
Például:
DropDownList legördülı lista választás listáról vagy szöveg beírása (↔ ListBox)
Image kép grafika megjelenítése
Calendar naptár dátum választásához
Panel panel más vezérlıelemek tárolásához
DataGrid adatrács megjelenítés táblázatos formában, szerkesztés, rendezés!
Repeater ismétlı adathalmaz (dataset) rekordjainak megjelenítéséhez
DataList adatlista Repeater formázási és tördelési lehetıségekkel
ChexBoxList, RadioButtonList: jelölınégyzet és választógomb lista az elemek csoportba szervezéséhez
Table, TableRow,TableCell: új táblázat, sor, cella létrehozása
Szintaxis: <asp:vezérlıelem_név attribútumok> … </asp:vezérlıelem_név>
Képesek a böngészı típusának meghatározására – ehhez illesztik a kódot (pl. alkalmazzák a DHTML-t –
kliensoldali szkripteket)
Toplevel, downlevel böngészık
Az öröklés segítségével saját vezérlıelemek is készíthetık.
A vezérlıelemek állapotának tárolása
Beviteli vezérlıelemek (szövegmezı, jelölınégyzet stb.): a szerver automatikusan visszaküldi az eredeti
állapotot (postback data) a HTTP fejrészében
Megjelenítési vezérlıelemek (címek, adatrács stb.): a __VIEWSTATE rejtett vezérlıelemben kódolva
(munkamenet – session kezelés). Kikapcsolás: az EnableViewState attribútum False-ra állításával.
Webszolgáltatások
Adatküldés ügyfélprogramoknak (a böngészık helyett – túlságosan korlátozott felület)
Nem a szervernek kell megformáznia a megjelenítést
Felhasználói felülettel nem rendelkezı programok is bekapcsolódhatnak (pl. mérlegkészítés)
Nem PC-alapú hardver használata (pl. mobiltelefon)
Jelenlegi rendszerek (vírusirtók frissítése, médiakeresık) egyediek
Webszolgáltatás: a webes ügyfelek számára hozzáférhetıvé tett .NET objektum (webmethod attribútum)
Public és private metódusok is lehetnek benne
Egy adott gépen futó program meg tud hívni egy máshol lévı, más által megírt függvényt
A weben található szolgáltatások beleépülnek a programba (pl. helyesírásellenırzı stb.)
Eszközök: HTTP protokoll, XML kódolás
.asmx és .vb fájlok, lefordítva dll fájlok a bin mappában
Protokollok: GET, POST, SOAP
SOAP: XML-típus a függvényhívások és paraméterátadások leírásásra (Simple Object Access Protocol)
Az .asmx fájlt kéri le
Aszinkron hívás lehetısége (nem kell várni az eredményre)
A webszolgáltatás leírása: WSDL (Web Service Descriptor Language)
Automatikusan elıáll a kód alapján (!)
Lekérés: fájlnév.asmx?WSDL
ADO.NET
Adatbáziskezelı szolgáltatások a web-őrlapokon
Lásd késıbb.
Az ASP.NET további lehetıségei
Lásd: C) Függelék.

18. A Web Matrix


Egyszerősített fejlesztıi környezet az ASP.NET-hez
Aspx fájlok, vezérlıelemek, Web-szolgáltatások, stíluslapok, XML sémák és dokumentumok, SQL szkriptek,
assembly-k, konfigurációs fájlok (web.config, global.asax) stb. készítése
Visual Studio .Net/2005 inkább nagyobb léptékő, team-munkához való (project-alapú megoldások)
Visual Studio: mögöttes VB-kód, Web Matrix: inline-kód (lehet mögöttes is).

Juhász T.: Internet-programozás 29


Web Matrix:
− 1 Mbájt installációs fájl
− könnyő, gyors installáció
− igénytelen a hardver és szoftver környezettel szemben
− saját (lokális) web-szerver
− szőkített lehetıségek (hiányzik pl. az objektumok listája)
− nem készít automatikusan assembly-t, de a parancssor segítségével létrehozható
− nincs beépített .Net Framework referencia, de teljes listát ad az osztályokról, linkekkel a .Net SDK-hoz (ha
installálva van) és az online MSDN .Net referenciaoldalakhoz
− freeware program!!!
Az integrált fejlesztıi környezet (IDE)
Elindítani a Web Matrixot (Start menü), új fájl a wwwroot-ba.
Editor ablak: Design, HTML, Code, All nézet
Menüsor
Edit:
− Add Snippet: a kijelölt kódrészletet a Toolbox-ba teszi
− Edit Tag: az aktuális tag külön ablakban szerkeszthetı (Design nézet, JEK a tagra)
− Edit Templates: a DataList vezérlıelem esetén (lásd késıbb)
− Comment Selection: a kijelölt részt megjegyzéssé alakítja (HTML és Code nézet)
View:
− Start (F5): a böngészıben mutatja meg a lapot (lásd késıbb!)
− Toolbox (F2): ki/be kapcsolja a Toolbox-ot
− Glyphs: ki/be kapcsolja a „horgonyokat” (nem látható elemek, pl. FORM)
− Grid: a rács ki/be kapcsolása az abszolút pozícionáláshoz
Layout:
− Absolute Position: abszolút pozícionálás ki/be kapcsolása (növeli a HTML-kód hosszát!)
HTML:
− Hiperlink, táblázat beszúrása, kijelölt rész <div>, illetve <span> konténerbe helyezése
Workspace:
− New Project parancsikon: FTP-kapcsolat felvétele a Workspace ablakba (távoli szerverhez, Framework kell
rá)
A legfontosabb menüparancsok a menüsor alatti két eszközsorban láthatók (pl. Start: ►)
On-line keresı!
Az Editor ablak
Design: a dokumentum látványa
HTML: a tagok és a szövegek
Code: a kódok (szkriptek)
All: a lap-direktívák, a HTML és a Code együtt
Klasszikus megjelenítés (csak Source és Preview fülekkel): Preview módban.
Átkapcsolás: Tools/Preferences/Web Editing
A Toolbox
HTML Elements: szerveroldali vezérlıelemek a System.Web.UI.HtmlControls névtérbıl
Web Controls: szerveroldali vezérlıelemek a System.Web.UI.WebControls névtérbıl
Custom Controls: saját (vagy „külsı”) vezérlıelemek tárolására
My Snippets: saját kódrészletek tárolására (fájlba exportálhatók és importálhatók)
Code Wizards: varázslók speciális blokkok létrehozásához (Code és All nézetben)
Mozgatással az Editor ablakba helyezhetık.
Beállítások: JEK a Toolbox-ra (pl. Snippet-ek átnevezése)
A „Project” ablak (Workspace, Data, Open Items)
Workspace: JEK-kel új fájl létrehozására is használható (Add New File/Folder)
Data: kapcsolódás SQL vagy MSDE szerverhez (táblák kezelése, tárolt eljárások)
Open Windows: váltás a megnyitott dokumentumok között
A „Properties” ablak (Properties, Classes, Community)
Properties: az aktuális elem tulajdonságai és eseményei (Design nézet)
BED beilleszt egy üres eseménykezelıt (a szerveroldali eseményekre)
Property Pages ikon: összetett kontrollok esetén (pl. DataGrid) megnyitja a tulajdonságlapot
(Propery Builder, van Auto Format is)
Classes: a .NET Framework összes névterének összes osztálya (BED megnyitja a leírását)
Önállóan a Start menübıl is megnyitható
Community: Web Matrix linkek

Juhász T.: Internet-programozás 30


Az Objektum-böngészı
Megnyitás: BED egy osztályra a Classes ablakban
Megnyitható külön a Start menübıl is!
Listázza a névtereket, mindegyikben az osztályokat és az interfészeket
Egy-egy tag kiválasztásánál megadja a statikus mezıket, konstruktorokat, tulajdonságokat, metódusokat és
eseményeket.
Fájltípusok a Web Matrix-ban
Az új fájlok sablonjai a \Program Files\Microsoft ASP.NET Web Matrix\verzió\Templates mappában
(felülírhatók!)
A (General) szekció fájljai általában üres keretek, a többi szekció fájljai már kódot is tartalmaznak.
Minden új lapnál meg kell adni a nyelvet (VB.NET vagy C#)
(General) szekció
ASP.NET lap aspx szerver-oldali form-mal
ASP.NET User Control ascx @Control direktívával
HTML Page htm üres head és body elemmel
XML Web Service asmx felülírható minta Public Fuction kerettel. Meg kell adni hozzá az
osztály nevét és a névteret
Class File vb vagy cs osztálydefiníció kerettel. Meg kell adni hozzá az osztály nevét és a
névteret.
Style Sheet css üres BODY{} szelektorral
Global.asax asax applikáció és session-szintő üres eseménykezelıkkel
Web.config config magyarázat a benne lévı megjegyzésekben
XML File xml <?xml … ?> utasítással
XSL Transform xslt xsl stíluslap gyökérelemmel
XML Schema xsd XML-séma (XSD) gyökérelemmel
ASP.NET HTML Handler ashx definíciós keretekkel. A Class definíciójában meg kell adni a
ProcessRequest eseményt és az IsReusable tulajdonságot.
Text File txt üres textfájl
SQL Script sql üres fájl egy SQL megjegyzéssel
Data Pages szekció: adatbázisok listázását, lekérdezését, módosítását végzı őrlapok (lásd késıbb)
Mobile Pages szekció: mobil oldalak létrehozása (HTML vagy WML). Installálni kell hozzá a Microsoft
Mobile Internet Toolkit-et (MMIT).
Output Caching szekció: példák a szerver terhelésének és az adatforgalomnak a csökkentésére
Security szekció: login, logout lapok és a hozzájuk szükséges konfigurációs fájl készítése
Web Services szekció: példák Web-szolgáltatások készítéséhez
A Web Matrix web-szervere
Csak lokálisan használható (a Sajátgépen).
Az elsı Start parancsra (F5) indítható el.
Megadható a port (80: szokásos Web-szerver port, 8080: proxy port – ezt ajánlja fel).
Kezelés: JEK a tálcán az ikonra
Home-könyvtár megnyitása böngészıben, leállítás, újraindítás, tulajdonságok (pl. URL!).
Ha kiléptünk a Web Matrixból, le kell állítani a Web-szerverét, mert újra nem tudja elindítani, ha már fut
(ugyanazon a port-számon)

19. Web-őrlapok
Web-őrlapok kezelése
Új web-őrlap készítése
File/New vagy JEK a Workspace ablakban a megfelelı mappára (pl. wwwroot), New Item – fıleg így!
ASP.NET Page, Location, Filename (Koszonj.aspx), Language kijelölése
Teljes képernyıs megjelenítés: BEK a címsorra
* a fájlnév után: nincs mentve.
Label, Textbox, Button web-kontrollok elhelyezése (új sorba) – megnézni HTML nézetben.
Properties
Label1.Text: Írd be a neved!, TextBox1.BackColor, Button1.Text: Köszönj! (az ID is átírható)
Eseménykezelés
BED a gombra, átvált Code nézetbe, és beszúr egy üres onClick eseménykezelıt (két argumentum):
Label1.Text = "Helló " & TextBox1.Text & "!"
Az All nézet ellenırzése. A Visual Studio esetén kérhetı a kód elkülönítése (Koszonj.aspx.vb lenne).

Juhász T.: Internet-programozás 31


Abszolút pozícionálás
Az elem(ek) kijelölése, Layout/Absolute Position
Hosszú lesz a kód!
A Web-őrlapok megjelenítése
Megjelenítés a böngészıvel
Mentés, Start a Web Matrix szerverével (tulajdonságok, a Root URL ellenırzése)
közben kommunikáció a szerverrel!
Megnézni a HTML kódot (Nézet/Forrás)
Kipróbálni pl. Calendar Web-kontrollt, nagyon sok tulajdonsága állítható (van pl. Auto Format). Megnézni a
HTML kódot (Naptar.aspx).
Eseménykezelı:
Label1.Text = "Helló " & TextBox1.Text & _
", a választott dátum: " & Calendar1.SelectedDate
Mentés, frissítés.
Az IIS használata
Átváltás más Web-szerverre (pl. IIS-re) a Web Matrix szerverének leállításával.
Start az IIS Virtual Root alapján, meg kell adni az Applikáció nevét. Ilyen néven létrehoz egy virtuális
könyvtárat az IIS-en, ami az adott mappára mutat.
Visszatérés a Web Matrix Web-szerverére csak a program újraindításával.
Egyéb lehetıségek
A Page osztály és a Page objektum
Lásd Tk. 103-104. old.
Mögöttes-kód használata
Tk. 105-106. old.
Példa: Koszonj1.aspx, Koszonj1.vb
A kód hozzákapcsolása az aspx fájlhoz: a @Page direktíva Inherits és Src attribútumaival.
a lap most a SajatKod osztályból származik
Célszerő importálni a felhasznált névtereket (így nem kell a teljesen minısített nevet használni)
A saját osztályt a Page osztályból kell leszármaztatni (hatóköre: Public!)
Változóként deklarálni kell azokat a vezérlıelemeket, melyekre a kódban hivatkozunk
WithEvents: az objektum eseményeit is átveszi

20. Webszolgáltatások készítése


Tankönyv 141-146. old.
Szoftverek összekapcsolása, információcsere az Interneten.
Új webszolgáltatás létrehozása
JEK a wwwroot mappára, Add New Item, XML Web Service
név: Kivon, Class: AlapMuvelet, Name Space: Sajat
Meg kell adni az osztályt és a névteret is!
A létrejött lapon szerepel egy példa (Add)
Átírni kivon-ra, javítani a mőveletet
Mentés a wwwroot mappába, Start, létrejön egy leíró lap (Kivon.asmx).
Service Description: a formális definíció XML-kódja
Ki lehet próbálni (BEK: kivon), a szerver hajtja végre és küldi vissza XML-ben az eredményt!
Bemutatja a SOAP, a HTTP GET és a HTTP POST protokollal a használatát
A webszolgáltatás fordítása
Tools/WebSevice Proxy Generator (az asmx lap bezárható)
WSDL URL: az asmx lap teljes URL-je (http://localhost/kivon.asmx)
WSDL: Web Sevices Description Language. A WSDL informálja a klienseket a szolgáltatás
használatáról. A WSDL elérése: http://localhost/Kivon.asmx?WSDL
(a formális definíciót leíró XML fájlt adja vissza)
Namespace: Sajat
Output Directory: hová kerüljenek a fájlok (ahová majd a szolgáltatást behívó lap kerül)
Source File, Generate Assembly tetszıleges, meghagyható a default. Ezek fogják tárolni a saját osztályainkat és
a metódusokat.
BEK: Generate, OK, Cancel

Juhász T.: Internet-programozás 32


A megadott mappában létrejön egy VB forrásfájl (MyProxyClass.vb, megnézni), és egy bin mappában a
lefordított dll fájl (bin\MyProxyClass.dll).
A webszolgáltatás meghívása
A kliens weblap elkészítése: JEK a wwwroot mappára, Add New Item, ASP.NET Page, név: Szamol.aspx
Web-kontrollok: 3 TextBox és egy Button (TextBox1 – TextBox2 = TextBox3, Számolj!)
OnClick metódus:
Dim wsProxy as New Sajat.AlapMuvelet
TextBox3.Text = wsProxy.kivon(CInt(TextBox1.Text), CInt(TextBox2.Text))
Mentés (wwwroot), Start (szükség esetén az IIS-szerverrıl letölteni).

21. Távoli szerver használata


Elıkészítés
FTP-szerver installálása (IIS része), engedélyezése
FTP-vel elérhetı mappa felvétele virtuális mappaként a web-szerveren
FTP-kapcsolat felvétele
JEK a Workspace ablakban, New Workspace/Add FTP Connection (vagy a Workspace menübıl)
A távoli gép használata
Rovatok kitöltése (ftp://…, http://…, név, jelszó!)
Fájlmőveletek használhatók a távoli szerveren (új fájl, új mappa, törlés)!
Fájok vonszolhatók (másolás) a sajátgéprıl a távoli gépre (és viszont) – kissé kényelmetlen
Pl. Koszonj.aspx átmásolása, megnyitás a távoli géprıl (BED)
Start, URL-t megnézni a címsorban! Kipróbálni a mőködést, figyelni közben az állapotsort.
Megváltoztatni a HTML-nézetben a háttérszínt (<body bgcolor=”red”>)
Mentés (a távoli gépre ment!), Start.
A kapcsolat bontása
JEK a host-ra a Workspace ablakban, Delete (!).

22. Az MSDE
Microsoft SQL Server Desktop Engine
Az SQL szerverrel egyenértékő, kliens/szerver adatbázis-motor
MSDE 1.0: SQL 7.0-hoz, MSDE 2.0: SQL 2000-hez
Access:
− fájl-alapú architektúra
− fájl szinten végzi a módosításokat
− az adatbázist letölti a kliensre és ott történik meg a lekérdezés
− nem képes tárolt eljárások kezelésére
− hiba esetén csak az utolsó mentett változathoz tud visszatérni
SQL-szerver:
− relációs adatbázis-kezelı rendszer (szolgáltatásként fut a gépen).
− a lekérdezést a szerveren futtatja
− tranzakciók kezelése
− naplózás, a napló alapján a megszakadt tranzakciók (pl. lemezhiba, hálózati hiba, áramszünet stb.) elıtti
állapot helyreállítása
MSDE (↔ SQL szerver):
− nincsen grafikus felhasználói felület (vezérlés parancssorral)
− nincsen korlátozva a felhasználók száma, de kisebb hálózatokra (egyszerre maximum 5 felhasználó) van
optimalizálva
− nincsen full text indexing
− egy adatbázis mérete maximum 2 Gbájt.
Kézi indítás: C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqlmangr.exe /n
leteszi a tálcára az állapotjelzıkhöz
Célszerő a Start/Programok/Indítópultról kitenni az asztalra
Az adatbázisok helye: \Program Files\Microsoft SQL Server\MSSQL\Data

Juhász T.: Internet-programozás 33


Access XP fájlok konvertálása MSDE formátumba
Access: Eszközök/Adatbázis-segédeszközök//Továbbfejlesztı Varázsló, Létezı adatbázis használata vagy Új
adatbázis létrehozása
Szerver és adatbázis neve, Megbízható kapcsolat használata (vagy bejelentkezési azonosító, jelszó)
Az exportálásra kerülı táblák kijelölése

23. Adatbáziskezelés az ASP.NET-ben


ADO.NET (ActiveX Data Objects): adatobjektumok rendszere az adatbázisok kezeléséhez
− adatátadás XML formátumban
− kapcsolat nélküli (disconnected) adatkezelés!
Szerkezet: tk. 107. old.
A legfontosabb objektumok (tk. 108. old.):
− sqlConnection (adatkapcsolat): kapcsolódik az adatforráshoz (SQL szerver)
paraméter: connectionString
pl.: "server='localhost'; trusted_connection=true; Database='Cimlista'"
más adatszolgáltatók esetén: OleDBConnection (Open Database Connection – ODBC)
− sqlCommand (adatparancs): az adatbázison végrehajtandó SQL parancs vagy tárolt eljárás
paraméterek: adatkapcsolat (objektum), SQL parancs (queryString)
pl.: "SELECT * FROM [Cimlista]"
− DataAdapter (adatillesztı): végrehajtja az adatbázison az adatparancsot (SQLDataAdapter/OleDbAdapter)
paraméter: sqlCommand objektum
− DataSet (adathalmaz): egy vagy több táblázat, lekérdezés (rekordhalmaz) győjteménye, az adatillesztı tölti fel
dataAdatper.Fill(dataSet)
Részletesebben lásd tk. 108-124. old.

24. Adatbáziskezelés a Web Matrix-ban


A hozzáférési jogok miatt a Web Matrix saját Web-szerverét használjuk.
Az adatbázisokhoz való kapcsolódáskor néha a localhost helyett be kell írni a gép nevét!

Az alábbi feladatok egymásra épülnek!

Kapcsolódás az SQL szerverhez


A Visual Studio.NET segítségével lásd tk. 124-125. old.
Kapcsolódás az SQL szerverhez: Workspace ablak, Data fül, Add Database Connection ikon
Server: be kell írni a gép nevét (localhost néha nem elég), utána a Database legördülı menüjében felsorolja a
létezı adatbázisokat. (Az MSDE-t akkor is installálni kell a gépre, ha egy másik gépen lévı adatbázis-szervert
használunk, különben hibaüzenetet kapunk.)
Új adatbázis létrehozása: Create a new database, név: Cimlista
A kapcsolat lezárása: BEK az adatbázisra, Close Database Connection ikon.
Kapcsolódás egy létezı adatbázishoz: Add Database Connection, Server, Database választása (Cimlista).
Táblák kezelése
Új tábla létrehozása: BEK a Tables csomópontra, majd a New Database Object ikonra. Táblanév: Cimlista
Új mezık (Columns) létrehozása: New, tulajdonságok beállítása (Properties)
Name: Data Type: Required:
ID Int  Primary Key (lehetne Auto-increment,
Nev VarChar  Field Size: 21 ne legyen!)
Varos VarChar  Field Size: 12
Utca VarChar  Field Size: 20
OK, Több táblát is létre lehet hozni.
A táblák módosítása
A tábla megnyitása: BEK a táblára és az Edit ikonra, vagy BED a táblára.
A tábla szerkezetének módosítása: Edit/View Table Design
csak üres tábla szerkezete módosítható
Új rekord: Enter vagy üres sor
Auto-increment esetén a kulcs-mezı Read-only, az üres új rekordra negatív
A tabulátorral is lehet lépkedni a mezık között.

Juhász T.: Internet-programozás 34


Törlés: rekord kijelölése, Delete, nem figyelmeztet!
A kapcsolat lezárása.
A Data Transformation Services (DTS)
Az SQL-szerver része, külön is futtatható (MSDE kell hozzá)
Dinamikusan csatolja a szerverhez az adatbázist, a Web-Matrix-ból nem szerkeszthetı (de használható!)
szerkeszthetı adatbázishoz elıször létre kell hozni egy üres táblát (pl. a Web Mátrix-szal), majd a DTS-
sel feltölteni
Indítás a CD-rıl: \Programok\DTS\dtswiz.exe
DTS Import/Export Wizard: Tovább (elıször lassan indul)
Choose a Data Source
Data Source: Microsoft Access (nem a Driver Do Microsoft Access-t!!!)
File name: …, Select File: Ea4\Adat\Cimlista.mdb (ne a CD-n lévı fájlt hasznájuk!), Tovább
Choose a destination
Destination: Microsoft OLE DB Provider for SQL Server (default)
ODBC-t nem célszerő használni, mert lassúbb
Server: gépnév
Use Windows Authentication (default)
Database: Cimlista (új is létrehozható!!!), Tovább
Specify Table Copy or Query: Copy tables and views…, (default), Tovább
Select Source Tables and Views: (Select All), Transform … (megnézni!)
Column Mappings: Delete rows in destination table
Transformations: megváltoztathatók a beállítások
OK (kipróbálható a Preview), Tovább
Save, schedule and replicate package: Run immediately (default), Tovább
Completing the DTS Import/Export Wizard: Befejezés
Ha kész: OK, Done

25. Adatbáziskezelés a Web-en


Adatok listázása
Új ASP.NET lap létrehozása, név: Cimlista.aspx
Megnyitni a Cimlista adatbázist, ellenırizni a létrejött táblát.
A Cimlista táblát feltenni egérrel a weblapra!
Létrejön egy SQLDataSourceControl és egy MxDataGrid objektum!
SQLDataSourceControl: tartalmazza az adatbáziskezeléshez szükséges objektumokat
ConnectionString: server='localhost'; trusted_connection=true; Database='Cimlista'
SelectCommand: SELECT * FROM [Cimlista]
Mentés, Start (a Web Matrix saját web-szerverével).
Lapozható, default érték: 10 sor oldalanként (nagyobb táblánál navigációs gombok)
beállítás az MxDataGrid1 objektum AllowPaging és a PageSize tulajdonságnál
Mentés, Futtatás, Frissítés!!! – néha újra kell indítani az Explorert, mert a saját cache-ébıl veszi elı
Rendezhetı: BEK a címsorra (rendezés növekvı/csökkenı sorrendben)
A táblázat formázása
Az MxDataGrid vezérlıelem kiválasztása, Properties ablak, Fields tulajdonság (kollekció)
Mezıknél Appearance/HeaderText, Style beállítása
Paraméteres lekérdezések létrehozása
Rákérdez a mezık értékére, és csak a megfelelı rekordokat listázza ki.
Egyparaméteres lekérdezés
Új ASP.NET lap létrehozása, név: Varos.aspx
TextBox, Button, DataGrid vezérlıelemek felhelyezése (Web Controls)
Code-nézetben a Code Builders Toolbox-ból a SELECT Data Method felhelyezése (vagy BED)
Kapcsolódás az SQL szerver Cimlista adatbázisához
SELECT parancs létrehozása a Query Builder Wizard-dal:
* (összes mezı kiválasztása) a Cimlista táblában, közben lásd: Preview
BEK: WHERE gomb, Left Operand/Column: Varos
Operator: = (default)
Right Operand/Filter: @Varos (default) – paraméterként várja a várost
OK, ellenırizni a beírt SQL parancsot, Next

Juhász T.: Internet-programozás 35


Test Query: kipróbálni, Next
Caption: GetValaszt (ez lesz a lekérdezés neve), metódus: Dataset (default)
(DataReader: csak online-ban mőködik, Dataset: offline-ban is mőködik, tk. 108. old.)
Finish, a Code-nézetben megmutatja a kódot
végignézni az objektumokat
Design-nézet, BED a Button-ra, beírni:
DataGrid1.DataSource = GetValaszt(TextBox1.Text)
DataGrid1.DataBind()
Mentés, Start.
Többparaméteres lekérdezés
Példa: adott ID tartományba esı ID és NEV mezık listázása.
Varos.aspx mentése Parameterek.aspx néven.
Még egy TextBox felhelyezése, a GetValaszt függvény törlése (lehetne javítani, de újból létrehozzuk)
SELECT Data Method felhelyezése
SELECT parancs:
ID és NEV mezık kiválasztása
WHERE: ID >= @ID1 (!) AND ID <= @ID2
név: GetValaszt
Meghívás a Buttonl_Click eseménykezelıben: GetValaszt(TextBoxl.Text, TextBox2.Text)
Mentés, Start.
Legördülı listák használata
Az adatbázisban szereplı értékek közül kell választani.
Megnyitni a Varos.aspx lapot (File/RecentFiles), mentés Lista.aspx néven.
Törölni a TextBox és a Button vezérlıelemeket, feltenni helyettük egy DropDownList vezérlıelemet.
A DropDownList AutoPostBack tulajdonságát True-ra állítani (ezért nem kell a Button!)
A Code-ablakban törölni a Button1 eseménykezelıjét
A Code Builders Toolbox-ból feltenni a lap aljára egy SELECT Data Method vezérlıelemet (Code-ablak)
Server: a gép neve, Database: Cimlista, OK
A Query Builder-ben:
Tables: Cimlista, Columns: Varos, Next
Test Query, Next
A következı Wizard-ablakban a metódus neve: GetVaros, DataSet (default), Finish
A legördülı lista inicializálása a Code-ablakban:
Sub Page_Load(Sender As Object, E As EventArgs)
If Not Page.IsPostBack Then ’ csak elıször kell inicializálni!
DropDownList1.DataTextField = "Varos"
DropDownList1.DataSource = GetVaros()
DropDownList1.DataBind()
End If
End Sub
Eseménykezelı a legördülı listához (BED a Design-ablakban)
default esemény: SelectedIndexChanged
Az eseménykezelı eljárás keretét létre kell hozni (pl. BED az objektumra), csak utána szabad
bemásolni az alábbi törzset (így rendeli hozzá a web-kontrollhoz, lásd a HTML-kódot!)
DataGrid1.DataSource = GetValaszt _
(DropDownList1.Items(DropDownList1.SelectedIndex).Text)
DataGrid1.DataBind()
Mentés, Start.
Probléma: egy város többször is szerepel a listában.
Megoldás: a GetVaros függvényben a QueryString-et megváltoztatni: "SELECT DISTINCT ..."
Probléma: a legördülı lista elsı elemének választására elıször nem reagál.
Megoldás: A PageLoad eljárásban a DropDownList1.DataBind() után:
DropDownList1.Items.Insert(0, "-- Városok --")
A DataList vezérlıelem használata
Több beállítási lehetıséggel rendelkezik, mint a DataGrid.
Több tábla összekapcsolására is alkalmas.
Példa: egy adott városban lakó személyek listája – a feladat DataList vezérlıelemmel
Megnyitni a Varos.aspx lapot, elmenteni Lakos.aspx néven.
Törölni a DataGrid vezérlıelemet, feltenni egy DataList vezérlıelemet.

Juhász T.: Internet-programozás 36


Sablon létrehozása (egy rekordra): JEK, Edit Templates, Select: Item Templates, Item Template (default)
Template Design: „A lakos neve:”, feltenni utána egy Label vezérlıelemet (az Edit ablakba!)
A Label1 DataBindings tulajdonságánál (Properties ablak tetején): …
Text: Custom binding expression
DataBinder.Eval(Container.DataItem, "Nev")
OK (a vezérlıelem neve szögletes zárójelbe került - mezıhöz van kapcsolva)
Edit ablak: OK
A Code ablakban átírni a Button1 onClick eseménykezelıjénél a DataGrid1-et DataList1-re
Mentés, Start.
A lista formázása: a HTML-ablakban, pl.:
<asp:DataList id="DataList1" runat="server"
BorderColor="Black" BorderStyle="Solid" BorderWidth="2">
. . .
</asp:datalist>
Rekordok módosítása
Sok kódot kell írni, egyszerőbb az elıre elkészített sablonok segítségével.
Az SQL szerver pubs minta-adatbázisával mőködnek.
A DTS segítségével fel kell venni a pubs adatbázist (Ea4\Adat\pubs.mdb) az MSDE-re
Database: <New>, Name: pubs, Data/Log file size: 1 MB/1 MB. Tables: Select All
A pubs adatbázis módosítása
Web Matrix: File/New, Templates: Data Pages, Editable Data Grid, Filename: Author.aspx
A sablon alapján kaptunk egy mőködı weblapot.
A weblap azonnal kipróbálható: Edit (Update, Cancel), Delete, Add new item
A többi sablon (Template) is erre az adatbázisra épül (az utolsó kivételével)
Simple Stored Procedure: Northwind adatbázis (minta-adatbázis az SQL szerverhez)
Módosítás a sablonok segítségével
Más adatbázishoz a kódot módosítani kell a ' TODO: kezdető megjegyzéseknek megfelelıen!
Példa: a Cimlista adatbázis módosítása (az Author.aspx-et elmenteni Modosit.aspx néven)
Célszerő F2-vel kikapcsolni a Toolbox-ot.
Módosítások:
1. sor: ' TODO: update the ConnectionString and Command values for your application
3. sor: database=Cimlista;
4. sor: "SELECT ID, Nev, Varos, Utca from Cimlista"
74. sor: ' TODO: update the Command value for your application (Edit/Go To, Ctrl+G)
80. sor: "INSERT INTO Cimlista(ID, Nev, Varos, Utca) VALUES (@ID, @Nev,
@Varos, @Utca)"
82. sor: "UPDATE Cimlista SET Nev = @Nev, Varos = @Varos, Utca = @Utca
WHERE ID = @ID"
85-87. sor:
UpdateCommand.Parameters.Add("@ID", SqlDbType.Int).Value = ID
UpdateCommand.Parameters.Add("@Nev", SqlDbType.VarChar, 21).Value = Nev
UpdateCommand.Parameters.Add("@Varos", SqlDbType.VarChar, 12).Value =
Varos
88. sorral kiegészíteni:
UpdateCommand.Parameters.Add("@Utca", SqlDbType.VarChar, 20).Value = Utca
135. sor: ' TODO: update the Command value for your application
137. sor: Dim DeleteCommand As New SqlCommand ("DELETE from Cimlista
where ID=’” & keyValue & ”’”, myConnection)
Sajnos hiányzik egy TODO felirat a 70. sor fölül
70-72. sor (átírni):
Dim ID As Integer = CType(e.Item.Cells(2).Controls(0), TextBox).Text
Dim Nev As String = CType(e.Item.Cells(3).Controls(0), TextBox).Text
Dim Varos As String = CType(e.Item.Cells(4).Controls(0),
TextBox).Text
73. sorral kiegészíteni:
Dim Utca As String = CType(e.Item.Cells(5).Controls(0), TextBox).Text
Át kell írni az AddNew_Click szubrutint is (ki kell egészíteni az ID kezdıértékével):
189. sor: Dim rowValues As Object() = {0, "", "", ""}
HTML-kód 9. sor: DataKeyField="ID"
Át lehet írni a feliratokat és a hibaüzeneteket is (Edit/Find, Message.Text)

Juhász T.: Internet-programozás 37


26. XML fájlok kezelése
XML fájl létrehozása
File/New/XML File (Megrendel.xml), átmásolni a Megrendel.txt tartalmát
Mentés, bezárás
Az Online Server Control Gallery
XML web-szervíz a www.asp.net-en.
Új aspx fájl létrehozása (Megrendel.aspx)
JEK: Toolbox/Custom Controls, Add Online Toolbox Components (várni a letöltésre)
Categories: Data & XML Controls, XMLEditGrid, Install (JEK-kel: Remove, Reset)
\Program Files\Microsoft ASP.NET Web Matrix\version\Components-be kerül
Az XML fájl megjelenítése, szerkesztése
Feltenni az aspx lapra az XMLEditGrid Custom Control-t
XmlFile tulajdonság: Megrendel.xml (célszerő ugyanabba a mappába tenni)
Lehet pl. Auto Format
Mentés, Start, kipróbálni.
Csak a saját Web-szerverrel vannak ikonok.
Ábrák a \Program Files\ASP.NET\CIient Files\Swarren_XmlEditGrid\version mappában
Formázás: Auto Format vagy Property Builder a Properties ablakban, Format szekció
Mentés, Start

27. Irodalomjegyzék
ASP.NET QuickStart Tutorial (http://www.asp.net/Tutorials/quickstart.aspx)
Endrıdi Tamás: Internet alapú alkalmazásfejlesztés (Gábor Dénes Fıiskola, 2002)
Holzner, S.: Visual Basic .Net Fekete könyv (Perfact-Pro Kft., 2002)
Homer, A. – Sussman, D.: Inside ASP.NET Web Matrix (Wrox Press, 2002)
(letölthetı: http://www.alanddave.com/books/webmatrix/download/webmatrix.pdf)
Juhász T. – Kiss Zs.: Tanuljunk programozni. Visual Basic Script, objektumok, web.
(ComputerBooks, 2004)
Lee, T. – Davies, J.: Microsoft Windows 2000 TCP/IP Protocols and Services Technical Reference
(Microsoft Press, 2000)
Microsoft ASP.NET Web matrix Project Guided Tour
(http://www.asp.net/webmatrix/tour/getstarted/intro.aspx)
Microsoft Internet Information Services 5.0 Documentation (Microsoft Press, 2000)
Microsoft Visual InterDev 6.0 Web Technologies Reference (Microsoft Press, 1998)
Pardi, W.J.: XML in Action Web Technology (Microsoft Press, 1999)
Platt, D.S.: Bemutatkozik a Microsoft .Net (Szak Kiadó, 2001)
Platt, D.S.: Data Access in .Net (az elızı könyv 2. kiadásának 6. fejezete, 2002,
letölthetı: http://www.rollthunder.com/download/C06615713.exe)
Young, M.J.: Step by Step XML (Microsoft Press, 2000)

Juhász T.: Internet-programozás 38


FÜGGELÉK

A) Telepítési útmutató
Minden letölthetı a www.microsoft.com és a www.asp.net-rıl (freeware programok!)
A CD-n a Programok mappában találhatók a telepítı fájlok.
Az IIS telepítése
Start/Vezérlıpult/Programok telepítése és törlése/Windows összetevık hozzáadása:
Internet Information Services (kéri a Windows XP CD-t)
Részletek
Ne legyen feltelepítve: FrontPage 2000 Server Extensions (defaultban benne van?)
Nem kell: SMTP szolgáltatás
Kell: IIS beépülı modul, World Wide Web szolgáltatás (default)
Szükséges lemezterület: 12 Mbájt, telepítési idı: néhány perc
Ellenırzés a Vezérlıpulton
Felügyeleti eszközök/Szolgáltatások: Webes közzététel, Elindítva
Ellenırzés böngészıvel: gépnév <enter>, bejön egy üdvözlı weblap (localstart.asp) és a dokumentáció.
Konzol: Start/Futtatás/mmc, Fájl/Beépülı modul hozzáadása, Hozzáadás, Internet Information Services
Ellenırzés a konzolon: kinyitni a mappákat, Alapértelmezett webhely – fut
Beállítások a konzolon
Alapértelmezett webhely, Tulajdonságok,
Kezdıkönyvtár: c:\inetpub\wwwroot (átírható, pl. másik meghajtóra)
Dokumentumok: Alapértelmezett dokumentum engedélyezése (nyitó oldal!): default.htm
Készíteni egy egyszerő default.htm fájlt a c:\inetpub\wwwroot mappába (nem kell htm formátum!)
Az MSDE telepítése
MSDE része a .NET Framework SDK-nak és az Office XP Professional-nak
MSDE-nek nincs GUI-ja, parancssorból használható
Az Access 2000-en és a Web Matrix-on keresztül használható
Telepítés
A CD-n Programok\Msde\Setup.exe (Microsoft SQL Server Desktop Engine)
Egy-két perc alatt telepíti (üzenet nélkül végez!)
Indítás – kezelés
Bootoláskor automatikusan indul (Tálca!)
SQL Server Service Manager: JEK a tálcán az ikonra, kikapcsolható az autostart (JEK, Open)
Kézi indítás: C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqlmangr.exe /n
leteszi a tálcára az állapotjelzıkhöz
Célszerő a Start/Minden program/Indítópultról kitenni az asztalra
Az adatbázisok helye: \Program Files\Microsoft SQL Server\MSSQL\Data
A .NET Framework telepítése
Része a .NET Framework SDK-nak és a Visual Studio .NET 2003-nak (ekkor már nem kell telepíteni)
Telepíthetı: Win 98, 98 SE (mindkettınél csak a megfelelı nyelvi változatra – magyar nincs!), ME, NT 4
(server, workstation) SP 6a-val, 2000 (professional, server) SP2-vel, XP (home, professional)
2003 Server része?
Legalább 5.5-ös Internet Explorer kell hozzá (csak a fejlesztéshez, az applikációk bármilyen böngészıvel
megtekinthetık).
Minimális hardverigény: Pentium 133 MHz, 128 Mbájt RAM (256 Mbájt javasolt).
Telepítés: a CD-n Programok\DotNetFX.exe (mindenre Igen, Next, OK)
Néhány percig tart, néha újra kell indítani a gépet (szól)
.Net Framework Service Pack 2 telepítése
A CD-n Programok\DotNetSP2.exe (minden OK, accept)
1-2 perc alatt végez, újra kell indítani a gépet (szól)
Ellenırzés: Vezérlıpult/Felügyeleti eszközök, Microsoft .Net Framework Configuration, Microsoft .Net
Framework Wizards
A Webmatrix telepítése
Telepíthetı: Win 2000 (professional, server – SP2), Win XP (home, professional).
Az adatbáziskezeléshez SQL Server 7.0 (SP2), SQL Server 2000 vagy MSDE. Mobil webek fejlesztéséhez:
Mobile Internet Toolkit (lásd a CD-n: Programok\Mobileit.exe).

Juhász T.: Internet-programozás 39


Telepítés: a CD-n Programok\WebMatrix.msi (minden Next, accept!, Install)
Legalább 5.5-ös Internet Explorer szükséges
Másodpercek alatt telepíti
Indítás: Start/Minden program/Microsoft ASP.NET Web Matrix/ASP.NET Web Matrix

A CD-n lévı többi programot nem kell telepíteni!

Microsoft Script Editor


Office 2000 CD-rıl
Start/Beállítások/Vezérlıpult, Programok telepítése, Programok módosítása (ha már telepítve van az Office),
Módosítás, Hozzáadás vagy eltávolítás (vagy közvetlenül a CD-n: Setup.exe)
Office eszközök, HTML-forráskódszerkesztı és Webes parancsnyelv telepítése (A Sajátgéprıl fut), Frissítés
Indítás: \Program Files\Microsoft Visual Studio\Common\Ide\Ide98\Mse.exe (célszerő parancsikont készíteni)
Office XP CD-rıl
Telepítés ugyanúgy, mint az Office 2000-ben (Office eszközök, HTML forráskódszerkesztı, Webes
parancsnyelv és Webes hibakeresés)
Indítás: \Program Files\Microsoft Office\Office10\Mse7.exe (parancsikon!)
Nem mőködik az IntelliSense!

B) Az ADRotator objektum használata


Bannereket váltogat letöltésnél vagy frissítésnél (AD: advertisement - reklám)
− rotátor fájl (ad.asp): a weblap a bannerekkel (ezt kell lekérni a kliensre).
− redirect fájl (adredir.asp): Ez a fájl irányítja tovább a felhasználót a banner-nek megfelelı URL-re (a cég
weblapja). A kattintás bejegyzést hoz létre a Web-szerver activity log-fájljában. Így összeszámolható, hogy
melyik linket hányszor választották.
− listafájl (adrot.txt): megadja a banner képfájlokat, a linkeket és a gyakoriságot.
1. rész: globális paraméterek (kulcsszó - érték)
- REDIRECT URL: a linkek választásának számlálását végzı fájlra (pl. redirect.asp)
- WIDTH/HEIGHT/BORDER: a képek attribútumai (hogy egyformák legyenek)
- egyik sem kötelezı, ekkor csak egy * kell a fájl elejére
2. rész: - a képfájl URL-je
- a képhez tartozó link (ha nincs: -)
- ALT szöveg
- gyakoriság (0 és 4 milliárd között)
pl. 2, 3 és 5 esetén a három kép 20, 30 és 50 %-os gyakorisággal kerül kiválasztásra
Létrehozás: <% set SajatAd=Server.CreateObject(„MSWC.AdRotator”) %>
Példa: ad*.* fájlok és az Images mappa, letöltés: ad.asp

C) Az ASP.NET további lehetıségei


A webalkalmazások kezelése
A konfiguráció tárolása: Web.config (pl. hozzáférési engedélyek stb.)
Az alkalmazás saját mappájában, XML formátumban
Csak az alatta lévı szintekre (mappákra) vonatkozik
Az alacsonyabb szinten lévı felülbírálja a fölötte lévıt (a rendszergazda letilthatja)
Legmagasabb szint: machine.config
Állapotkezelés
Az egyes munkamenetek elkülönítése, az állapotok tárolása (session sate management)
Session objektumokkal
Aspx oldal lekérésénél jön létre
A session objektumot a szerver tárolja, az adott felhasználóhoz kötıdik
Egyedi azonosító a URL-hez illesztve (automatikusan, nem kell programozni)
A programozó adatokat tárolhat benne (nı a URL hossza!)
Név=”érték” (karakteres attribútum)
Példa: Session(”DemoString”) = TextBox1.Text
. . .
Label2.Text = Session(”DemoString”).ToString

Juhász T.: Internet-programozás 40


A Session objektum törlése: a Session.Abandon metódus meghívásával
A Web.config fájl sessionState elemének timeout attribútumában megadott perc múlva magától
törlıdik!
Munkamenet állapot tárolása a futó folyamatoktól függetlenül: a sessionState mode attribútum StateServer-re
állításával a Web.config fájlban
A munkamenet-állapotot külön folyamat (process) tárolja (megtalálható a rendszerszolgáltatások között
– el kell indítani a folyamatot)
Egy folyamat kiakadása nem teszi tönkre a többi felhasználó munkamenet-állapotát
Másik gépen is tárolható a folyamat (Web-farm), a web.config-ban be kell állítani a
stateConnectionString attribútumot
Tárolható SQL-szerveren is (!) az SqlConnectionString beállításával
Az alkalmazásból hivatkozni lehet az Application objektumra is.
Hitelesítés és engedélyezés
Hitelesítés (authentication): név és jelszó
Engedélyezés (authorization): hozzáférési jogok
Hitelesítési eljárások:
− Nincs (bárki megnézheti a lapot)
− Windows (A munkacsoportban/tartományban nyilvántartott Windows/hálózati felhasználónév és jelszó)
− Forms: az oldalkérés fejrészében (süti), enélkül bejeletkezési oldalhoz irányít
− Passport: külsı (Microsoft) hitelesítési szolgáltatón keresztül
Azonosítók és jelszók tárolása: Microsoft Passport webkiszolgáló (www.passport.com)
Jelenleg ingyenes
A hitelesítési kérelmet a kiszolgáló a Microsoft-hoz továbbítja, onnan kapja a sütit
Univerzális, egy lépéses és biztonságos
A Passport-kompatíbilis helyeken használható (lista: www.passport.com)
Jövıbeli áremelések? Microsofttal szembeni bizalmatlanság?
A védelmet nem igénylı mőveleteknél ne használjunk hitelesítést!
A szállítási protokoll (HTTP) nem használ titkosított átvitelt!
SSL (Secure Socket Layer) protokoll – csak szükség esetén (lassúbb)
Őrlapos hitelesítés (forms)
A felhasználó maga hoz létre fiókot azonosítóval és jelszóval (vagy megkapja a cégtıl, pl. bankok esetén)
Hitelesítést igénylı oldal kérése esetén:
Az ASP.NET érzékeli a belépésre jogosító süti hiányát
Átirányítja a felhasználót a bejelentkezı oldalra
A bejelentkezés után elıállítja a titkosított adatokat tartalmazó sütit, és visszairányítja a felhasználót a kért
oldalra
A további kérések fejrészükben már tartalmazzák a belépésre jogosító sütit
Őrlapos hitelesítés elıírása: a web.config authentication elemében
Elıször a loginUrl lapnak adódik át a vezérlés (itt tud a felhasználó bejelentkezni)
Hozzáférés-engedélyezés
A web.config fájl authorization szakaszával
Allow/deny elemek: engedélyezik/megtagadják a hozzáférést
*: mindenki
?: nem hitelesített (névtelen) felhasználók
Felhasználócsoportok (roles) is képezhetık (tartományi csoport is használható)
Több egymást követı szabály: az ellenırzés az elsı feltétel teljesülésénél véget ér
Kiszolgálószintő folyamatkezelés
A machine.config fájl processModel elemében
A munkafolyamatok újraindítása
− Timeout: meghatározott idınként
− RequestLimit: meghatározott számú oldal lekérése után
− MemoryLimit: a memória meghatározott százalékának elfogyasztása után

Juhász T.: Internet-programozás 41

You might also like