2. ASP-i sisseehitatud objektid Eelmises peatükis sai mainitud, et ASP on objekt-orienteeritud. See tähendab, et teatud vajaminevad meetodid(protseduurid)/omadused(andmed) on koondatud üheks tervikuks. Et aga enda poolt programmeeritud objekte kasutada, tuleb need ASP-is kõigepealt luua. ASP-i on sisse ehitatud 5 vajalikku objekti, mis aitavad suhelda kasutajaga ja võimaldavad jagada infot kasutajate vahel. Nendest objektidest annab lühiülevaate järgnev tabel: Objekt Eesmärk Request Kasutajalt info saamiseks Response Kasutajale info saatmiseks Server ASP keskkonna tööks vajalik objekt (suhtlemine failisüsteemiga, ActiveX-objektid jt) Session Kasutaja konkreetse sessiooniga seotud info hoidmiseks Application Kõikidele kasutajatele ühise info hoidmiseks Objektide süntaks sõltub konkreetsest programmeerimiskeelest (skriptikeelest), aga kuna VBScript on vaikimisi kasutatav keel, siis võetakse allpool aluseks selle keele süntaks. Objektid võivad sisaldada kogumeid: hulk omavahel mingil moel ühendatud elemente objektis, mille poole pöördutakse samal viisil. Objektide poole saab pöörduda kasutades objekti meetodeid ja omadusi. Meetod on protseduur, mis tegutseb objektil. Meetodi üldine süntaks on järgmine: Objekt.Meetod parameetrid. Näiteks: Response.Write Tere Maailm! Omadus on nimeline atribuut objektil, mis tavaliselt iseloomustab objekti. Omaduse üldine süntaks on järgmine: Objekt.Omadus parameetrid. Näiteks: Server.Scripttimeout = 10 2.1 Kasutajalt info saamine Et kasutaja (klientprogrammi) poolt saadetud infot skriptides lugeda, on ASP-is sisseehitatud objekt Request, millega antakse juurdepääs igasugusele infole, mida klientprogramm saadab: * HTTP protokolli ja serveri standardinfo e. keskkonnamuutujad (kogum ServerVariables) * HTML-vormilt POST-meetodiga saadetud info (kogum Form) * Päringuparameetrid (GET-meetod, kogum QueryString) * Niinimetatud küpsised (cookies), millega on võimalik kasutaja kohta infot säilitada, et siis edaspidi näiteks kasutajat ära tunda vm (kogum Cookies) * Kliendi sertifikaadid (kogum ClientCertificate). Sertifikaate kasutatakse kasutaja ja WWW-serveri vahelise ühenduse turvalisuse suurendamiseks. Info saamiseks mõnest kogumist kehtib järgmine süntaks: Request.Kogum(muutuja) muutuja tähistab seda muutujat, mille infot soovitakse saada. Samuti võib kasutada üldist süntaksit: Request(muutuja) Sellisel juhul vaadeldakse läbi kõik kogumid (järjekorras: QueryString, Form, Cookies, ServerVariables, ClientCertificate), kuni leitakse esimene muutuja, mis vastab muutujale ning tagastatakse selle väärtus. Kui sellist muutujat ei leita, tagastatakse spetsiaalväärtus EMPTY. 2.1.1 Otseselt kasutajalt saadud info Kasutaja saab infot edastada URL-i (Uniform Resource Locator) kaudu sisestades oma info küsimärgiga (?) eraldatult URL-i järel või siis mingi HTML-vormi kaudu. Viimase võimaluse korral edastatakse spetsiaalse kodeeringuga. Kui kasutada kogumeid Form ja QueryString, siis ei pea muretsema kodeeringu pärast, see tehakse ära kogumisiseselt. Kogumite Form ja QuerySrting korral kehtib järgmine süntaks: Request.Kogum(parameeter)[(indeks)|.väärtusi] Siin parameeter on ülalmainitud muutujanimi, (indeks) tähistab mitmeväärtuselise muutuja korral, et soovitakse indeksiga määratud muutujat ja väärtusi annab mitmeväärtuselise muutuja väärtuste arvu. Mitmeväärtuseline muutuja tekib näiteks, kui HTML-vormis määrata elemendil SELECT atribuut MULTIPLE (st. valikunimekirjast on võimalik valida mitu väärtust). 2.1.2 Küpsised Küpsis on teatav tunnus, mille klientprogramm saadab WWW-serverile või WWW-server saadab klientprogrammile. Küpsistega saab kasutaja kohta infot säilitada: kasutaja äratundmiseks järgmise külastuse ajal, kasutaja jooksva seisundi säilitamiseks ja muuks. Küpsiste väärtuste saamiseks on kogumil Cookies järgmine süntaks: Request.Cookies(küpsis)[(võti)|.atribuut] Siin küpsis tähistab ülalmainitud muutujanime (ehk siis küpsist), parameetrit (võti) kasutatakse küpsise alamosade saamiseks (kui sellised leiduvad). Atribuut - siin saab olla ainult üks atribuut: HasKeys, mis (mõeldud ainult lugemiseks) annab teada, kas küpsisel on alamosasid (mille poole pöörduda parameetriga (võti)). 2.1.3 Keskkonnamuutujad Keskkonnamuutujad on WWW-serveri (ja klientprogrammi) poolt edastatav HTTP päis. Keskkonnamuutujate kiireks kasutamiseks on kogum ServerVariables. Enamkasutatavad keskkonnamuutujad ja nende tähendused on toodud järgnevas tabelis: Muutuja Tähendus QUERY_STRING Päringu info, mis edastatakse serverile URL-I järel küsimärgiga eraldatult. Selle info saab kiiremini kätte ka kogumist QueryString. REMOTE_ADDR Kasutaja arvuti Interneti (IP) aadress. REQUEST_METHOD Millise päringu klientprogramm WWW-serverile saatis (GET, HEAD, POST jm). SCRIPT_NAME Virtuaalne tee skriptini. SERVER_NAME WWW-serveri nimi. SERVER_SOFTWARE WWW-serveri tarkvara nimi ja versioon. HTTP_REFERER URL, millelt antud lehele tuldi (kasutades linke või HTML-vorme). Mõned muutujanimed võivad erineda sõltuvalt WWW-serveri tarkvarast. 2.2 Kasutajale info saatmine Kasutajale/klientprogrammile info saatmiseks on loodud objekt Response. Objekti üldine süntaks on järgmine: Response.kogum|omadus|meetod Kogumeid on ainult üks: Cookies - sellega saab saata kliendile küpsiseid. Omadused: Buffer - määrab, kas HTML-väljundit puhverdatakse (säilitatakse töö käigus serveril ja väljastatakse peale töö lõppu kõik korraga) ContentType - määrab väljundi tüübi Expires - määrab aja, mille jooksul HTML-leht klientprogrammis oma kehtivuse kaotab ExpiresAbsolute - määrab täpse aja (kuupäev ja kellaaeg), millal HTML-leht kehtivuse kaotab Status - määrab HTML-lehe staatusrea (tavaliselt pannakse see WWW-serveri poolt) Meetodid: AddHeader - lisab HTTP päisesse rea (sellega saab skript lisada oma päiseridu). AppendToLog - lisab WWW-serveri log-faili stringi BinaryWrite - väljastab kõik sümbolid neid teisendamata Clear - kustutab puhverdatud info (kui seda pole veel väljastatud) End - lõpetab ASP-faili töötlemise ja tagastab HTML-i Flush - väljastab puhverdatud info (info puhverdamine peab olema määratud) Redirect - suunab klientprogrammi ümber teisele URL-le Write - väljastab teksti klientprogrammile 2.2.1 Kasutajale teksti saatmine ASP-skriptist (st. eraldajate <% ja %> vahelt) saab klientprogrammile teksti saata objekti Response meetodi Write abil, mille süntaks on: Response.Write muutuja muutuja võib olla suvaline skriptikeele poolt toetatud muutuja (või ka string). Teksti saatmiseks kasutajale ei pea alati kasutama meetodit Write, seda saab teha ka eelmises peatükis mainitud eraldajatega <%= ja %> või lõpetades enne teksti väljastust skripti osa ja kirjutades selle järel väljastatava teksti. Seega on järgnevad read samaväärsed: <%Response.Write

Tere tulemast!

%>

Tere tulemast!

<%=

Tere tulemast!

%> 2.2.2 Kasutaja mujale suunamine Selle asemel, et kasutajale HTML-teksti saata, võib klientprogrammi suunata teisele HTML-lehele (URL-ile), kasutades meetodit Redirect, mille süntaks on: Response.Redirect URL Tuleb tähele panna, et ümbersuunamist saab teha ainult siis, kui HTTP päis on veel lõplikult väljastamata, st. ei ole alustatud HTML-teksti väljastust. Vastasel juhul väljastab ASP veateate. Kui aga kasutatakse info puhverdamist, siis võib suvalises kohas ümbersuunamist välja kutsuda. 2.2.3 Küpsiste saatmine Küpsise saatmiseks kasutatakse meetodit Cookies, mis loob uue küpsise kui sellist juba ei leidu. Meetodi süntaks on järgmine: Response.Cookies(küpsis)[(võti)|.atribuut] = väärtus Siin küpsis tähistab nime, võti võimaldab tekitada küpsisele alamosasid, väärtus on küpsisele antav väärtus. Atribuut määrab küpsise lisainfo ja see võib olla: Expires - määratleb kuupäeva (ja kellaaja), millal küpsis kaotab kehtivuse. Domain - kui on määratud, siis küpsis saadetakse ainult HTTP-päringutele, mis on tehtud sellesse domeeni. Path - määrab (virtuaalse) tee, millistele päringutele küpsis saadetakse. Kui see pole määratletud, siis võetakse tee skriptini. Secure - määrab, kas küpsis on turvaline (kasutatakse ainult HTTPS-päringute korral). HasKeys - ainult lugemiseks mõeldud atribuut, mis määrab kas küpsis sisaldab alamosasid. 2.3 ASP-i ActiveX objektid Vahel on vaja ASP-skriptis suuremaid võimalusi kui konkreetne skriptikeel pakub, näiteks failisüsteemi poole pöördumine, andmebaasidega suhtlemine jm. Selleks on võimalik kasutada ActiveX objekte. Kui objekt on loodud, ei pea iga kord temas sisalduvaid protseduure/omadusi uuesti defineerima, vaid piisab objekti väljakutsumisest. Serveripoolsed ActiveX objektid on loodud töötama WWW-serveris koos rakendustega. ASP pakub viit standardset ActiveX objekti: * Andmebaasidega suhtlemise objekt * Nn. reklaami objekt * Klientprogrammi omaduste objekt * Failisüsteemiga suhtlemise objekt (selle pikemalt ei peatuta) * Linkide haldamise objekt (sellel pikemalt ei peatuta) Et AcitveX objekte (objekti protseduure, andmeid jm) ASP-skriptides kasutada, tuleb nad kõigepealt kättesaadavaks teha (luua objekti esindaja). Selleks on ASP-i klass Server ja selle meetod CreateObject. Järgmine rida loob klientprogrammi omaduste objekti esindaja, mille poole pöördutakse edaspidi nime bc kaudu: Set bc = Server.CreateObject("MSWC.BrowserType") Objekti esindaja loomiseks võib kasutada ka spetsiaalmärgendit . Järgnev rida loob samuti klientprogrammi omaduste objekti esindaja bc: Viimast võimalust kasutatakse siiski harvemini. 2.3.1 Andmebaasidega suhtlemine Andmebaasidega suhtlemise objekt võimaldab juurdepääsu erinevat tüüpi andmebaasidele. Selle objekti kaudu saab väljastada andmebaasis olevat infot, teha erinevaid päringuid, lisada ja muuta andmeid andmebaasis. Objekti esindaja loomise süntaks on järgmine: Set objekt = CreateObject("ADODB.Connection") Pikem ülevaade andmebaasidega suhtlemisest antakse järgmises peatükis. 2.3.2 Reklaam HTML-lehel võib väljastada järjest vahetuvaid pilte ja linke (reklaame). Piltide nimed ja lingid säilitatakse eraldi failis ja objekt väljastab neid sealt. Objekt luuakse järgmise lausega: Set objekt = Server.CreateObject("MSWC.Adrotator") Järgmine reklaam väljastatakse lausega: objekt.GetAdvertisement(failinimi) Siin failinimi viitab failile, kust reklaame võetakse. Iga kord, kui kasutaja pöördub lehe poole, väljastab objekt järgmise reklaami. 2.3.3 Klientprogrammi äratundmine Tänapäeva klientprogrammide rohkuses on raske ise orienteeruda ja erinevatel klientprogrammidel on erinevad võimalused (Java toetus, taustamuusika toetus jne). Selleks, et selles rohkuses paremini orienteeruda, on loodud spetsiaalne objekt, mis aitab ära tunda enamlevinumad klientprogrammid ja säilitab nende kohta infot. Selleks on loodud spetsiaalne fail, kus on kirjas suurema osa klientprogrammide nimed ja nende võimalused. Klientprogramm saadab WWW-serverile oma nime ja versiooni ja objekt võrdleb neid oma andmetega ning vastavalt sellele on võimalik ASP-skriptil tegutseda. Objekti esindaja luuakse järgmise lausega: Set BrowserType = Server.CreateObject("MSWC.BrowserType")