Nagy Gergely. ASP programozás JScript nyelven



Hasonló dokumentumok
PHP. Adatbázisok gyakorlat

Bevezetés a programozásba I.

HTML. Ismerkedés a JavaScripttel. A JavaScript lehet ségei. A JavaScript kód helye. Önálló JavaScript fájlok

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

AWK programozás, minták, vezérlési szerkezetek

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

AWK programozás, minták, vezérlési szerkezetek

Szkriptnyelvek. 1. UNIX shell

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

WEB PROGRAMOZÁS 3.ELŐADÁS. Űrlapok

AWK programozás Bevezetés

Java és web programozás

1 Kezd lépések. 1.1 Felhasználók azonosítása. 1.2 Menüpontok. 1.3 Bejelentkezés. icard

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Operációs rendszerek gyak.

WEBFEJLESZTÉS 2. MUNKAMENET-KEZELÉS, HITELESÍTÉS

Szabadkai Műszaki Szakfőiskola. Web programozás. dr Zlatko Čović

A JavaScript főbb tulajdonságai

1. Alapok. #!/bin/bash

Bevezetés a programozásba I.

A WEB programozása - JavaScript 6 dr.gál Tibor őszi előadás. A Windows Scripting Host (WSH)

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

3. Osztályok II. Programozás II

Regionális forduló november 18.

ELTE SAP Excellence Center Oktatóanyag 1

A JavaServer Pages (JSP)

Szövegek C++ -ban, a string osztály

7. fejezet: Mutatók és tömbök

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

A WEB programozása - JSP1 dr.gál Tibor őszi félév

Flex tutorial. Dévai Gergely

PHP gyorstalpaló, avagy a Hello World-től az űrlapellenőrzésig

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Az SQL*Plus használata

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Adóhátralék kezelés egyszerűen. Használati útmutató

Java II. I A Java programozási nyelv alapelemei

1. Alapok. Programozás II

BarAck.Net. Internetes csomagkezel. Felhasználói kézikönyv V 1.0. (2011. július 20.)

Az autorizáció részletes leírása

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

NONPROFIT ÉRDEKVÉDELMI SZERVEZETEK FEJLESZTÉSE (PL.3346) Java-script nyelv. programozás alapjai. Haramia László

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

PC Connect. Unique ewsletter. program leírás

KFKI Unified Messaging Server (UMS) Felhasználói Útmutató

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

Szülői modul. Belépés a TANINFORM rendszerbe. Főoldal

PHP-MySQL. Adatbázisok gyakorlat

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben

BASH SCRIPT SHELL JEGYZETEK

Python tanfolyam Python bevezető I. rész

Smalltalk 2. Készítette: Szabó Éva

A JavaServer Pages (JSP)

Programozás I gyakorlat

HTML alapok. A HTML az Internetes oldalak nyelve.

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Használati utasítás.

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

Programozás II. 2. Dr. Iványi Péter

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Információs technológiák 2. Gy: CSS, JS alapok


Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

Egyetemi könyvtári nyilvántartó rendszer

II. év. Adatbázisok és számítógépek programozása

Powershell 2. gyakorlat

chmod umask chown, chgrp

Algoritmus terv 3. Fejezet: Folyamatok meghatározása

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Java II. I A Java programozási nyelv alapelemei

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Java és web programozás

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

Java Programozás 11. Ea: MVC modell

Internet programozása. 1. előadás

Ügyviteli rendszerek hatékony fejlesztése Magic Xpa-val mobilos funkciókkal kiegészítve. Oktatók: Fülöp József, Smohai Ferenc, Nagy Csaba

Munka állományokkal. mv: áthelyezés (átnevezés) rm: törlés. rmdir: üres könyvtár törlése. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

Model View Controller alapú alkalmazásfejlesztés

Programozási nyelvek II. JAVA

Ügyviteli rendszerek hatékony fejlesztése Magic Xpa-val mobilos funkciókkal kiegészítve. Oktatók: Fülöp József, Smohai Ferenc, Nagy Csaba

Java és web programozás

Erasmus+ Elektronikus pályázati űrlap. Technikai útmutató pályázók részére

C++ programozási nyelv Konstruktorok-destruktorok

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

ETR Pénzügyi közönségszolgálat

Listák, szótárak, fájlok Listák, szótárak, fájlok

Java és web programozás

és az instanceof operátor

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Javacript alapismeretek

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

JavaServer Pages (JSP) (folytatás)

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Web-technológia PHP-vel

Átírás:

Nagy Gergely ASP programozás JScript nyelven Budapest, 2008

A HTML kód és a szkript kapcsolata 1 A HTML kód és a szkript kapcsolata Az ASP m ködése Az ASP (Active Server Page) szkript egy szerver-oldalon futó program. A internetes oldal látogatója jóformán semmit sem érzékel a jelenlétéb l; ha megnézi a böngész segítségével az oldal forrását, ott nem talál kódot illetve ha talál, az kliens-oldali szkript. Egy ASP szkript a szerveren fut le és el állítja azt a HTML kódot, amit a böngész megkap. Azért hívják a segítségével készített oldalakat dinamikusnak, mert azok a letöltéskor generálódnak és így lehet ség van arra, hogy egy oldal személyreszabottan jelenjen meg, vagyis letöltésr l letöltésre dinamikusan változzon például megjelenjen rajta a letöltés pontos id pontja, vagy egy felhasználó neve, a felhasználó számára az utolsó megnyitás óta érkezett üzenetek, stb. A felhasználó a szkripttel linkekre klikkeléssel, illetve HTML rlapok (formok) kitöltésével tud kommunikálni. Egy oldalra való bejelentkezés például úgy történhet, hogy a felhasználó a böngész ben megjelen szövegdobozokba beírja a nevét és a jelszavát, majd megnyom egy gombot, amelynek a típusa submit (elküldés). Ennek hatására egy az rlapban megadott szkript fut le, amely át tudja venni az rlap elemeinek az értékét. A szkript egy a szerveren lév fájlban, vagy adatbázisban megkeresi a megadott felhasználónevet és a hozzátartozó jelszót. Egyezés esetén a böngész számára egy olyan oldalt küld el, amelyet csak a bejelentkezett felhasználók láthatnak, ellenkez esetben pedig valmilyen hibaüzenetet ír ki, vagy ismét a bejelentkez oldalt küldi el a böngész nek. Így az adatok kezelése mind a szerveren történik, a felhasználó semmit sem láthat mindebb l. Az ASP szkript egy magas szint programnyelven készül. Alapértelmezés szerint ez a nyelv a VBS (Visual Basic Script), de egy egyszer utasítással megadhatjuk nyelvként a JScriptet, amely egy a Java nyelvb l létrehozott szkriptnyelv. Ennek következményeként egy Java nyelvben jártas programozó azonnal megérti, azonban vannak különbségek bizonyos alapvet nyelvi elemek szintjén is (pl. függvények deníciója) és természetesen mint minden szkript nyelv a JScript is nagyon gyengén típusos (ami sok helyen inkább átok, mint áldás). Jelen dokumentum feltételezi, hogy olvasója ismeri a JScript nyelvet 1 és ezért csak egy-két nyelvi elemre hívja fel a gyelmet, teljes bevezet t nem ad. Az ASP szkriptek elhelyezése a HTML kódban Egy ASP honlap fájljai közt nem kell, hogy legyen egy htm, vagy html kiterjesztés sem. Az ASP szkriptet és HTML kódot vegyesen tartalmazó fájlok kiterjesztés jellemz en asp. Az ilyen fájlokat a szerver úgy értelmezi, hogy a HTML kódokat egy-az-egyben beemeli a böngész számára elküldött oldalba, a szkript részletek pedig értelmezi, és a kimenetüket írja bele a letöltött fájlba. Az ilyen elemek felváltva, tetsz leges sorrendben követhetik egymást, s t, akár egy HTML elemen beül is szerepelhet egy rövid szkript, ami például kiíratja egy változó értékét. Minden internetes oldalnak van egy kezd lapja, amelyet el ször letölt a böngész, ha egy adott linkre látogat. Ennek HTML kód esetén index.html a neve. Az ASP esetén ezt a fájlt default.asp-nek hívják. Természetesen a HTML oldalon belül a szkripteknek el kell különülniük egymástól. Erre az a megoldás, hogy egy olyan HTML elembe kell helyezni, amelyet egy egyszer HTML értelmez gyelmen kívül hagy, egy ASP-re felkészített pedig felismeri és végrehajtja azt. Ez az elem ASP-ben:... ahol a három pont helyére kerülhet a JScript kód. Amint azt már említettük, egy utasításban meg kell adni a szerver számára, hogy ha nem VBS-ben, hanem JScriptben szeretnénk programozni. Valójában ezzel az utasítással kell kezd dnie az oldalnak: @language = "javascript" Nézzünk meg egy nagyon egyszer teljes szkriptet: @language = "javascript" <html> <head> var uzenet = "Helló világ"; 1Egy kit n, szórakoztató és a jelen jegyzetnél sokkal részletesebb bevezetést ad a nyelvbe és használatába a következ linken található segédlet: http://eloquentjavascript.net

A HTML kód és a szkript kapcsolata 2 </head> <body> <table> <tr> <td> <b>ezt üzenem mindenkinek: = uzenet!</b> </td> </tr> </table> </body> </html> Változók deklarálása Változókat a var kulcsszó segítségével deklaráhatunk. Mivel a nyelvben a típusokat teljesen szabadon kezelhetjük, ha egyszer en leírunk egy azonosítót a var után, akkor már kész is vagyunk. Az inicializálatlan változó értéke: undefined. Természetesen inicializálhatunk is rögtön létrehozáskor, ahogy ezt a fenti példában is láthattuk: var szoveg = "Helló világ!"; Figyeljük meg, hogy a VBS-sel ellentétben, de a Javával és a legtöbb magas szint nyelvvel összhangban az utasításokat pontosvessz (;) zárja. Ha azonban bizosítani szeretnénk, hogy egy változó típusa ténylegesen olyan legyen, mint aminek szánjuk, akkor az osztályok példányosításához hasonló szintaktikát kell alkalmaznunk: var felhasznalo = new String("ismeretlen"); var egyszam = new Number(23); var logikai = new Boolean(true); Az els példakód azt is megmutatta, hogy miként tudjuk kiíratni egy változó értékét a HTML kódban: A bejelentkezett felhasználó: <b> = felhasznalo </b>. HTML kód generálása szkriptb l A szkript beépített Response objektuma segítségével lehet HTML kódot írni. Ehhez a Write() metódust használhatjuk: Response.Write("<h1>Helló világ!</h1>"); Értékek átvétele a felhasználótól Értékek átadása az URL-ben Változók értéke átadható az URL-ben így teszik ezt például a keres oldalak. Az URL általános alakja: URL?val1=ert1&val2=ert2 A változók értéke a beépített Request objektum segítségével kapható meg: var v1 = Request.QueryString("val1"); Ekkor értéket elküldeni a következ képpen tudunk:

A HTML kód és a szkript kapcsolata 3 var url = "www.honlapom.hu"; var val1 = "ert1"; var val2 = 23; var teljes = url + "?val1=" + val1 + "&val2=" + val2; <a href="=teljes">ide klikkelj</a> Értékek átadása az rlapokon keresztül Az rlapok a HTML kód beépített elemeib l épülnek fel. Az form elemben meg kell adni a célszkriptet és el kell helyezni az rlapon egy küld (submit) gombot. Más nem is utal arra, hogy egy szkript fogja feldolgozni az adatokat, ugyanis itt minden automatizáltan történik. A formon átküldött információk nem látszanak kív lr l, s t olyan információ is átküldhet így, amit nem a felhasználó adott meg ezek a rejtett (hidden) adatok. Lássunk el ször egy rlapot a HTML kódban: <form name="loginform" action="checkuser.asp" method="post"> <font class="text">user name:</font> <input type="text" name="txtusername" /> <br><font class="tiny"> </font><br> <font class="text">password:</font> <input type="password" name="txtpassword" /> <br><font class="tiny"> </font><br> <input type="submit" name="btnsubmit" value="ok" /> </form> A fenti rlap két beviteli mez t és egy gombot tartalmaz. Az egyik beviteli mez egy egyszer szövegmez, ahová a felhasználó nevet kell beírni, a második egy jelszó mez (type="password"), amely minden bevitt karakter helyett egy csillagot ír ki. A mez k name paramétere segítségével lehet hivatkozni a bevitt értékekre, amiket szintén a Request objektum segítségével kérhetünk el. A form fejében megadott szkript akkor aktivizálódik, amikor a felhasználó a submit gombra kattint. Az rlap elemeinek elkérése a következ képp történik a checkuser.asp szkriptben: var username = Request.Form("txtUserName"); var password = Request.Form("txtPassword"); Néha el fordulhat, hogy a form adataival együtt szeretne a programozó átadni valamilyen kiegészít információt is, amit nem a felhasználó vitt be. Erre használható a HTML nyelvben elérhet hidden beviteli mez, ami nem jelenik meg az oldalon, de a szkript értéket adhat neki, és a feldolgozó oldal ugyanúgy éri el, mint a látható elemek értékeit. Az alábbi példa azt mutatja be, hogy hogyan lehet megvalósítani azt, hogy ugyanaz az oldal dolgozza fel a formon bevitt értékeket, mint amelyiken maga a form van. Ebben a feladatban az jelenti a problémát, hogy amikor az oldal el ször betölt dik, még nem vittek be semmilyen adatot, így nem is dolgozhatóak fel az adatok. Ilyenkor ha lekérjük az értékeket, akkor azok üresek. Ezt használja ki az alábbi szkript 2 : @ language = "javascript" <html> <head> var user = new String(); var pass = new String(); var loggedin = new Boolean(); var loggingin = new Boolean(); loggingin = Request.Form("logging") == "logging"; loggedin = false; 2A Session-kezelésr l az 5. oldalon található b vebb információ

if (loggingin) { user = Request.Form("usr"); pass = Request.Form("pwd"); if (loggingin && user!= "") { loggedin = true; Session("name") = user; Session("rights") = "user"; </head> <body> if (!loggedin) { <form name="loginform" action="default.asp" method="post"> Név: <input type="text" name="usr" size=25 /><br> Jelszó: <input type="password" name="pwd" size=25 /><br> <input type="hidden" name="logging" value="logging" /> <input type="submit" value="bejelentkezés" /> </form> else { </body> </html> var line = new String(); line = "User: " + Session("name") + " is logged in with "; line += Session("rights") + " rights"; Response.Write(line); A HTML kód és a szkript kapcsolata 4 Sütik készítése és használata A sütik (cookies) olyan apró adatcsomagok, amiket a felhasználó gépén helyezhet el egy honlap. Ezek segítségével lehet egy felhasználót azonosítani, illetve személyessé tenni a honlapot az elmentett preferenciái alapján. A böngész kben le lehet tiltani a sütik fogadását ilyen esetben a honlap nem m ködik megfelel en. A sütikben egyszer információkat tárolhatunk például egy felhasználónevet. Minden sütihez tartozik egy dátum, amikor lejár. Ha ezután kérdezi le a honlap, úgy fog t nni, mintha nem létezne. Így lehet például automatikusan kiléptetni egy felhasználót egy adott id után. Egy egy napig érvényes süti létrehozását mutatja be az alábbi kódrészlet: var Tomorrow=new Date(); Tomorrow.setDate(Tomorrow.getDate() + 1); var myexpire = new String((Tomorrow.getMonth() + 1) + "/" + Tomorrow.getDate()); myexpire += "/" + Tomorrow.getFullYear(); Response.Cookies("userCookie") = username; Response.Cookies("userCookie").Expires = myexpire; Látható, hogy a sütit a Response objektum segítségével hozzuk létre. A Cookies() metódus el keresi a megadott nev sütit és a segítségével felülírható annak tartalma. Ha a süti még nem létezett, akkor létrehozza. A Cookies() metódus által visszaadott objektum Expires tulajdonsága segítségével lehet beállítani a lejárat dátumát, amit hh/nn/éé alakban kell megadni. A fenti kódból az is látható, hogy miként kell a dátumokat kezelni JScriptben. Ha példányosítjuk a Date osztályt az alapértelmezett konstruktorával, akkor az objektumot az aktuális dátummal inizializálja. A sütik adatának lekérése hasonlóan történik, mint a felülírásuk, de olvasni a Request objektummal kell:

A HTML kód és a szkript kapcsolata 5 var username = Request.Cookies("userCookie"); Ha nem létezik a süti, akkor egy üres stringet kapunk. Így ki lehet zárni, hogy valaki a link ismeretében ránavigáljon egy olyan oldalra, ahová elvben csak bejelentkezéssel lehet bejutni. A sütikben el lehet tárolni összetettebb információt is. Ilyenkor nem közvetlenül az értéküket írjuk, hanem különböz mez neveket adunk meg így tulajdonképpen rekordokként kezeljük ket: Response.Cookies("person")("surname") = "Doe"; Response.Cookies("person")("firstname") = "John"; Response.Cookies("person")("country") = "us"; Response.Cookies("person")("age") = "27"; A fenti kódban a person nev süti surname, rstname, country és age mez it írtuk. A sütiket nem szokták törölni, helyette az értékeket írják át üresre, így a következ ellen rzéskor úgy fog t nni, hogy nem léteznek. A Session objektum használata A Session objektum automatikusan létrejön, amikor egy felhasználó kapcsolódik egy kiszolgálóhoz és mindaddig megmarad, amíg a kapcsolat tart. Így akár több oldalon keresztül is tárolható benne információ. Minden felhasználó csak a saját Session objektumát látja, azok egyediségér l a rendszer gondoskodik. Bár az adatok a szerveren tárolódnak, de az azonosításhoz a rendszer sütiket használ, tehát ilyenkor is szükséges, hogy a böngész ben engedélyezve legyenek a sütik. A Session objektumnak különböz mez ket és azoknak értéket a következ módon tudunk adni: Session("name") = "John Doe"; Session("rights") = "superadmin"; A lekérdezés is ugyanígy történik (var s = Session("name")). A Session objektum mez it a Contents nev gy jteményével érjük el, aminek mérete a length tulajdonsággal kérdezhet le: for (var i = 0; i < Session.Contents.Count; i++) { Response.Write(Session.Contents(i) + "<br>"); A Session objektum f bb tulajdonságait és metódusait az 1. táblázat foglalja össze. 1. táblázat A Session objektum metódusai, tulajdonságai Név Funkciója Abandon() Befejezi a munkamenetet és felszabadítja a Session változókat LCID Ez a tulajdonság a munkamenethez kapcsolódó, az országspecikus, a megjelenítést meghatározó kódot adja meg, állítja be (location ID) Remove([elemindex elemnév]) Adott index, vagy nev elemet kitöröl az objektumból RemoveAll() Kitörli az objektum elemeit SessionID Ez a tulajdonság az adott munkamenethez rendelt azonosítót adja meg TimeOut Ez a tulajdonság azt mondja meg, hogy meddig lehet passzív a felhasnzáló anélkül, hogy a hozzárendelt Session objektum megsz nne A Session objektummal kapcsolatos példa található a 3. oldalon.

Fájlkezelés 6 A felhasználó átirányítása Bizonyos esetekben szükséges a felhasználó átirányítása egy másik oldalra. Például egy honlapra való bejelentkezéskor a felhasználónevet és jelszót ellen rz szkript vagy a belépési pontra irányítja a felhasználót, vagy vissza a bejelentkez oldalra, ha nem helyes adatokat adott meg. Erre a célre a Response objektum Redirect metódusát használhatjuk: if (!checklogin(usr, pwd)) Response.Redirect("login.asp"); else Response.Redirect("yourein.asp"); Küls szkript beszerkesztése, futtatása Ha sok segédfüggvényre van szüksége az oldalunknak, pláne, ha azokat több helyen is felhasználjuk, akkor érdemes azokat kiemelni egy külön fájlba, amit egyszer en beszerkeszthetünk bárhová: @language = "javascript" <html> <head> <!-- #include file = "funs.asp" --> </head> <body>... </body> </html> Megtehetjük azt is, hogy egy adott utasítás hatására lefuttatunk egy szkriptet, aminek a nevét ráadásul egy változóból is megadhatjuk, így maga a szkript állíthatja el a futtatandó program nevét. Ehhez a Server objektum Execute metódusát használhatjuk: if (menureq!= "logout") { var s = menureq + ".asp"; Server.Execute(s); A fenti kód segítségével megvalósíthatunk egy olyan oldalt, ahol az egyes menüpontok olyan linkek, amelyek visszamutatnak ugyanarra az oldalra, csak az URL-ben átadják a kívánt menüpontot. Az oldalnak azt a részét, amelyik az egyes menükt l függ en változik külön asp fájlokba írjuk és a fenti kód segítségével a megfelel helyre betöltjük: <html> <head> var menureq = Request.QueryString("menu"); if (menureq == "") menu = "intro"; </head> <body> <a href="default.asp?menu=intro">bemutatkozás</a><br> <a href="default.asp?menu=gallery">galéria</a><br> <a href="default.asp?menu=blog">blog</a> var s = menureq + ".asp"; Server.Execute(s); </body> </html>

Fájlkezelés 7 Fájlkezelés Szkriptek segítségével a szerver található fájlokat írhatjuk, illetve olvashatjuk. Így lehet például fórumokat létrehozni, illetve például felhasználók adatait eltárolni természetesen mindezt adatbázisokban is tárolhatjuk. A fájlkezeléssel kapcsolatban nagyon fontos megemlíteni, hogy a szervereken nagyon komolyan veszik a jogosultságokat, így a szkript a fájlok egy jelent s részéhez nem férhet hozzá, nem módosíthatja a tartalmat. Jellemz, hogy a webszolgáltatók csak egy dedikált alkönyvtárra adnak írási jogot. Az els lépés az állományokkal való munka megkezdésekor, hogy a FileSystemObject (FSO) osztálynak el kell kérni kell egy példányát. Ezt a következ képpen tehetjük meg: var fso = new Server.CreateObject("Scripting.FileSystemObject"); vagy var fso = new ActiveXObject("Scripting.FileSystemObject"); Ennek az osztálynak a metódusai segítségével tudunk létrehozni egy fájlváltozót, ami közvetlen kapcsolatot létesít egy tényleges állománnyal. Például egy szöveges fájl megnyitása olvasásra: var myfile = fso.opentextfile(server.mappath("../../data/myfile.txt"), 1, false); Látható, hogy a Server osztály CreateObject metódusával tudunk elkérni egy FSO objektumot és szintén ez az osztály segít abban, hogy egy stringet a szerveren lév elérési útvonalra képezzünk le (MapPath()). Az OpenTextFile() függvény els paramétere tehát a fájl neve elérési útvonallal együtt. A második paraméter a megnyitás módja, aminek értékei: 1: csak olvasásra (ForReading) 2: csak írásra (ForWriting) 8: hozzáírásra (ForAppending) A harmadik paramétere egy opcionális, logikai érték, ami azt mondja meg, hogy amennyiben nem létezik a megnyitandó fájl, akkor létrehozza-e. Ez alapértelmezés szerint hamis. A visszatérési értéke egy szövegfolyam típusú változó, aminek a segítségével hozzáférünk a zikai fájlhoz. A szövegfolyam WriteLine(str), illetve ReadLine(str) metódusaival tudjuk írni, illetve olvasni a fájlt. A fájl végének elérését az AtEndOfStream tulajdonság segítségével tudjuk leelen rizni. Miután befejeztük a fájllal való munkát, le kell zárni a folyamot a Close() metódussal. Egy fájl írása tehát: var fso = new ActiveXObject("Scripting.FileSystemObject"); var fstr = ""; var d = new Date(); var line = "Az id : [" + d.tolocalestring() + "]\n"; var filename = "main"; var pathfile = "../../DATA/"; var forumfileext = pathfile + filename + ".txt"; var ForAppending = new Number(8); var myfile = fso.opentextfile(server.mappath(forumfileext), ForAppending); myfile.writeline(line); myfile.close(); Az olvasás pedig a következ képpen történhet: var fso = new ActiveXObject("Scripting.FileSystemObject"); var fstr = ""; var pathfile = "../../DATA/"; var filename = "main"; var fileext = pathfile + filename + ".txt"; var myfile = fso.opentextfile(server.mappath(forumfileext), 1, false);

while (!myfile.atendofstream) { fstr = myfile.readline(); Response.Write("<font class=\"text\">" + fstr + "</font></br>"); myfile.close(); Speciális adattípusok a JScriptben 8 Egy alkönyvtár fájljainak a kilistázása a files gy jtemény-objektum segítségével történik. A következ példa egyben azt is megmutatja, hogy miként lehet egy gy jteményhez enumerátort kérni és annak segítségével végigmenni rajta: function ShowFolderFileList(folderspec) { var fso, f, f1, fc, s; fso = new ActiveXObject("Scripting.FileSystemObject"); f = fso.getfolder(server.mappath(folderspec)); fc = new Enumerator(f.files); s = ""; for (;!fc.atend(); fc.movenext()) { s += fc.item(); s += "<br>"; return(s); Speciális adattípusok a JScriptben Tömbkezelés A tömbök dinamikusan jönnek létre JScriptben, ami azt jelenti, hogy mindig pont akkora méret ek, amekkorára szükség van és dinamikusan nyújtózkodnak. Létrehozni háromféleképpen lehet egy tömböt: var t1 = new Array(); // üres tömb var t2 = new Array(8); // 8 elem tömb var t3 = new Array("baba", "alma", "kék"); // 3 elem tömb a felsorolt elemekkel Egy tömb mindenkori elemszámát a length tulajdonság adja meg. A push() metódus egy új elemet szúr be a végére, a pop() pedig elvesz egy elemet és vissza is adja visszatérési értékként. Az alábbi kódrészlet egy fájl sorait teszi be egy tömbbe úgy, hogy minden elem a fájl egy sora lesz, majd kiírja ket kisbet ssé konvertálva: var lines = new Array(); while (!file.atendofstream) { lines.push(file.readline()); for (var i = 0; i < lines.length; i++) { var s = new String(); s = lines[i] Response.Write(s.toLowerCase()); Két tömböt a concat() metódussal f zhetünk össze: t1.concat(t2). Egy tömb elemeit egy stringgé f zhetjük össze úgy, hogy megadhatjuk a közéjük kerül elválasztó stringet: var str = t1.join(", "). A reverse() metódus egy fordított sorrend tömbbel tér vissza. Ha az eredeti tömb nem volt folytonos, a visszatérési tömbben az adott helyeken undefined érték elemek lesznek. A slice(start, [end]) metódus résztömbbel tér vissza, az adott kezd indext l az opcionálisan adott befejez ig. A sort() metódus rendezi a tömböt. Ha nem adunk meg paramétert, akkor ASCII szerint rendezi növekv sorba. Megadható paraméterként egy függvény, ami két elemr l megmondja, hogy milyen viszonyban vannak ekkor a függvény alapján rendez. A függvény visszatérési értékének a következ konvenciót kell teljesítenie: negatív, ha az els elem kisebb a másodiknál, nulla, ha a két elem egyenl és pozitív, ha az els elem nagyobb.

Speciális adattípusok a JScriptben 9 Stringkezelés A JScript nyelvben a karakterláncokat a String osztály segítségével tárolhatjuk és dolgozhatjuk fel. A stringkonstansokat idéz jelek közt kell megadni: "helló világ!". Az üres stringet a "" jelöli. A karakterláncok kezelését operátorok, tulajdonságok (property) és metódusok segítik. Használható a + operátor stringek egymáshoz f zésére: var s = new String("Jó"); s += "napot"; s = s + "!"; Stringek összehasonlítására használhatóak a ==, <, >, stb. operátorok. A leghasznosabb stringekkel kapcsolatos tulajdonság a length, ami a karakterlánc hosszát adja meg: var s = new String("Hello világ!"); var hossz = s.length; A 2. táblázat összefoglalja a String osztály lényeges metódusait. 2. táblázat A String osztály fontosabb metódusai Metódus neve Funkciója bold() A string tartalmát a HTML <B> </B> utasítások közé helyezi (hasonló metódusok még: anchor(name), big(),...) charat(index) A string index-ik karakterét adja (els index: 0) charcodeat(index) A string index-ik karakterét adja Unicode-ban (els index: 0) concat(str2) A string után f zik str2-t fontcolor(szin) Célstring: <font color="szin">szöveg</font> (hasonló: fontsize(size)) fromcharcode(code1, code2,...) A paraméterként kapott számokat karakterkódként értelmezve stringet hoz létre indexof(alstring, kezdoindex) Alstringet keres a kezdoindex-ik pozíciótól; ha elhagyjuk a második paramétert, akkor a string elejét l keres. Sikertelen keresés esetén -1-et ad vissza. lastindexof(alstring, kezdoindex) Alstringet keres a kezdoindex-ik pozíciótól visszafelé; ha elhagyjuk a második paramétert, akkor a string végét l keres link(link) HTML linket készít, amelyben a hypertext a string tartalma lesz, és a linket paraméterként kell megadni match(regexp) Reguláris kifejezést illeszt a stringre, és a találatokat egy tömbben adja vissza replace(regexp, csereszoveg) A stringben az adott reguláris kifejezés alapján keres és minden sikeresen illesztett részletet kicserés a csereszovegre. search(regexp) A regexpre illeszked mintát keres a stringben és sikeres találta esetén annak kezd pozíciójával tér vissza, különben -1-el slice(start, [vege]) A stringb l az adott pozíciók közti részt vágja ki (vege opcionális) split(str) A stringet feldarabolja, az str paraméter az elválasztó karaktert adja meg, vagy egy reguláris kifejezést substr(start, [hossz]) Ugyanaz, mint a slice, de itt a kivágandó karakterek számát kell megadni második paraméterként tolowercase() Kisbet ssé alakítja a stringet touppercase() Nagybet ssé alakítja a stringet A Dictionary osztály A Dictionary osztály asszociatív tömböt valósít meg. Példányosítása: var dic = Server.CreateObject("Scripting.Dictionary"); vagy var dic = new ActiveXObject("Scripting.Dictionary");

Speciális adattípusok a JScriptben 10 Metódus neve Add(kulcs, adat) Exists(kulcs) Keys() Items() 3. táblázat A Dictionary osztály metódusai Funkciója Az adott kulcs-adat párt beilleszti a szótárba Logikai visszatérési értéke igaz, ha az adott kulcs már szerepel A kulcsokat tartalmazó dinamikus tömböt ad vissza Az elemeket tartalmazó tömbbel tér vissza A Dictionary osztály metódusait a 3. táblázat tartalmazza. A Keys() és Items() metódusok használata: function KeysDemo() { var a, d, i, s; // Create some variables. d = new ActiveXObject("Scripting.Dictionary"); d.add ("a", "Athens"); // Add some keys and items. d.add ("b", "Belgrade"); d.add ("c", "Cairo"); a = (new VBArray(d.Keys())).toArray(); // Get the keys. s = ""; for (i in a) // Iterate the dictionary. { s += a[i] + " - " + d(a[i]) + "<br>"; return(s); // Return the results. function ItemsDemo() { var a, d, i, s; // Create some variables. d = new ActiveXObject("Scripting.Dictionary"); d.add ("a", "Athens"); // Add some keys and items. d.add ("b", "Belgrade"); d.add ("c", "Cairo"); a = (new VBArray(d.Items())).toArray(); // Get the items. s = ""; for (i in a) // Iterate the dictionary. { s += a[i] + "<br>"; return(s); // Return the results. A Dictionary osztály tulajdonságait a 4. táblázat tartalmazza. 4. táblázat A Dictionary osztály tulajdonságai Metódus neve Funkciója Count Az elemek számát adja meg Item(kulcs) Visszaadja az adott kulcshoz tartozó értéket; így meg is lehet azt változtatni Key(kulcs) Egy adott kulcs megváltoztatására való ezzel csak felülírni lehet, lekérdezni nem

Tartalomjegyzék 11 Tartalomjegyzék A HTML kód és a szkript kapcsolata 1 Az ASP m ködése................................................ 1 Az ASP szkriptek elhelyezése a HTML kódban................................ 1 Változók deklarálása............................................... 2 HTML kód generálása szkriptb l........................................ 2 Értékek átvétele a felhasználótól........................................ 2 Értékek átadása az URL-ben....................................... 2 Értékek átadása az rlapokon keresztül.................................. 3 Sütik készítése és használata........................................ 4 A Session objektum használata..................................... 5 A felhasználó átirányítása............................................ 6 Küls szkript beszerkesztése, futtatása..................................... 6 Fájlkezelés 7 Speciális adattípusok a JScriptben 8 Tömbkezelés................................................... 8 Stringkezelés................................................... 9 A Dictionary osztály............................................... 9 Tartalomjegyzék 11