Objektmodell för ASP 3.0
Förord
I denna artikel tänkte jag presentera Microsoft Active Server Pages 3.0 objektsmodell. I objektmodellen ser du samtliga objekt som finns att tillgå för att programmera i ASP. Jag kommer även skriva en kortfattad förklaring för var och ett av objekten så du får en liten förståelse till vad de kan användas för.Innehåll
»»
»
»
»
»
»
Objektmodell för ASP 3.0
Request
Objektet request gör det möjligt för scriptet att hämta information som klienten skrivit, skickat eller presenterat via url. Detta inkluderar http servervariabler som identifierar webbläsare, användare, cookies mm. Objektet klarar även att komma åt certifikat som kan användas med SSL eller andra krypterade kommunikationsprotokoll eller egenskaper för att hantera en connection.- ClientCertificate
En samling värden av alla fält och data som klienten presenterar till servern när åtkomst av en sida eller resurs görs. Varje värde är read-only. - Cookies
En samling värden för alla cookies som finns på klientens system. Endast cookies som skapats av den aktuella domänen kan läsas. - Form
En samling av alla värden på förekommande html-element som finns inom <form> taggar som skickats där postmetoden är ”post”. - QueryString
En samling av alla namn och värden som skickas via URL från sidan där metoden på <form> är ”get”. - ServerVariables
En samling för alla förekommande http-huvud och dess värden som skickas från klienten tillsammans med en request tillsammans med värden av flera miljövariabler för webbservern. - TotalBytes
Ett värde som innehåller totalt antal bytes som body-taggen innehåller som skickas av klienten. - BinaryRead
Hämtar antal tecken data från klienten när data skickas till servern som en del av post-anropet. Denna returnerar en variant array (eller SafeArray). Denna metod kan inte användas om asp-kod redan har refererat till Request.Form. Likaså kan inte Request.Form användas efter du använt dig av BinaryRead metoden.
Response
Response objektet används för att skicka tillbaka data till klienten på ett eller annat sätt. Det kan vara att skriva text, html, skicka filer eller skriva en cookie till klienten.- Cookies
Skickar eller sparar en cookie som skall lagras på klientens dator. - Buffer = True|False
Detta kan läsas eller skrivas. Det specifierar hur datat skall skickas från en aspsida i IIS till klienten. Antingen skickas sidan när allting är buffrat och klart (true) eller så skickas delar av koden till klienten vartefter den skapas (false). Detta måste sättas som första raden på asp-sidan. Om buffer är satt till false så tillåts du inte köra response.Redirect ”url”. I ASP 3.0 är default buffer satt till true, tidigare versioner är default false.
Response.Buffer = True - CacheControl “Public|Private”
Du kan läsa eller skriva till CacheControl genom att sätta “Public” eller ”Private”. Private motverkar att proxyservern cachar sidan utan laddar om den från källan (dvs domänen). Om du har en statisk sida kan du gott och väl använda ”Public” för snabbare presentation.
Response.CacheControl = ”Public” - CharSet=”värde”
Lägger till en bodytagg för sidans teckenset (content-type).
Response.CharSet = ”ISO-LATIN-7” - ContentType ”MIME-typ”
Du kan specificera vilket innehåll i body-taggen som sidan kommer innehålla. Om inget anges är det ”text/html”. ContentType berättar för webbläsaren vad innehållet förväntas vara. Exempel:
Response.ContentType ”text/xml” - Expires
Med Expires kan du specificera hur lång tid i minuter som sidans innehåll är aktuellt. Om användaren går till samma sida innan den upphör så hämtas sidan från den lokala webbläsarens cache. För att påtvinga webbläsaren att hämta en ny sida – ange:
Response.Expires = 0 - ExpiresAbsolute
Specificerar som ovan längden på tid för att sidan skall vara aktuell. Här kan du specificera den exakta tiden, likaså datum då sidan är för gammal att använda. - IsClientConnected
Denna funktion returnerar en indikator om klienten fortfarande är ansluten och laddar sidan från servern. Denna funktion kan användas om klienten går till en annan sida utan att den aktuella sidan processats klart.
If Not Response.IsClientConnected Then
Response.End
End If - PICS (”sträng”)
Skapar en PICS header och adderar den till http-huvudet. PICS header definierar innehållet av en sida enligt regler såsom sex, språk osv. - Status = ”text”
Med kommandot kan du sätta och läsa status värdet som kommer skickas till klienten I http-headern för att exempelvis returnera om det gick bra.
Response.Status = ”200 OK” ‘ eller
Response.Status = “404 Not Found” - AddHeader (“namn”,”data”)
Skapar en egen header genom att använda namn och innehåll. Detta ersätter inte befintlig header med samma namn. Då headern har skapats, kan den inte ersättas. Du måste ange detta före någon html-kod skickas till klienten.
Response.AddHeader ”pragma”,”no-cache” - AppendToLog(”text”)
Adderar en sträng till webbserverns loggfil.
Response.AppendToLog ”sid200.asp – rutinen kördes ok.” & now() - BinaryWrite
Används för att skriva till användaren eller till en bild. Du kan skicka upp en fil till användaren alternativt skriva ut en bild hämtat från databas odyl.
Response.BinaryWrite DataStream - Clear
Med kommandot Clear kan du rensa informationen från IIS innan sidan är klar. Du kan inte radera en header men resterande innehåll.
Response.Write ”test”
Response.Clear - End
Stannar asp från pågående arbete. All kod efter detta kommandot kommer inte att presenteras för webbläsaren.
Response.Write ”Stannar här”
Response.End - Flush
Skickar allt data som IIS håller i buffern till användaren då Response.Buffer = True. Detta kan användas för att skicka delar av data i exempelvis en lång presentation till klienten.
Response.Buffer = True
For a = 1 to 255
Response.Write chr(a) & “
”
Response.Flush
Next - Redirect(“url”)
Skickar webbläsaren till att ladda en annan sida ifrån den sida som körs.
If NotLoggedIn Then
Response.Redirect “login.asp”
End If - Write
Med kommandot Response.Write så skriver du till sidan som sedan presenteras i webbläsaren.
Response.Write ”Dagens datum är: ” & Now()
Session
Sessionsobjektet skapas för varje användare då första anropet till en asp-sida sker från domänen. Denna session är tillgänglig så länge timeoutperioden inte är uppnådd.- Contents
En samling av alla variabler och dess värden som är lagrade I denna specifika sessionens objekt och inte är definierade som <object> element. - StaticObjects
En samling av alla variabler som är lagrade I ett sessionsobjekt via <object> - CodePage
Definierar vilken codepage som kommer användas för att visa sidans innehåll i webbläsaren. Codepage är ett numeriskt värde av ett teckenset och olika språk har olika codepages.
Session.CodePage = 1252 ’ Amerika
Session.CodePage = 932 ’ Japan - LCID
LCID definierar den lokala inställningen sett från inställningar för datum, symboler osv. Rutinen fungerar även för funktioner såsom FormatCurrency. För att på en amerikansk webbserver visa svenskt datum så skriver du:
Session.LCID = 1032 - SessionID
Returnerar ett id för den aktuella sessionen som automatiskt genereras av webbservern då den skapas. Dessa sessionsid är endast unika så länge inte webbservern är omstartad. Efter en omstart kan samma sessionsid alltså förekomma igen.
Response.Write ”Ditt sessionsid=” & Session.SessionId - TimeOut
Med denna timeout kan du bestämma hur många minuter en session skall finnas efter att sessionen är död, exempelvis då användaren stänger webbläsaren. Detta kan ändras per sida och default är 20 minuter. För hemsidor med många besökare kan värdet sänkas. Du kan även sätta detta i global.asa
Sub Session_OnStart()
Session.TimeOut = 5
End Sub - Contents.Remove(“variabel”)
Du kan radera en variabel från Session.Contents genom detta kommando.
Session.Contents(”hemsida”) = “www.pellesoft.nu”
Session.Contents.Remove(”hemsida”) - Contents.RemoveAll()
Raderar samtliga variabler och värden från Session.Contents samlingen - Abandon
Avslutar den aktuella sessionen och förstör alla befintliga objekt. Du kan fortfarande komma åt aktuella sessionsvariabler även då du kallat rutinen. Dock så kommer nästa asp-sida inte att hitta något utan startar en ny session och då kan endast värden definierade i global.asa läsas.
If TooManyTries Then
Session.Abandon
End If - OnStart
I global.asa startas detta då en session startar. Detta sker före den första sidan som kallas och körs. Detta används för att initialisera variabler, skapa objekt och köra annan kod.
Sub Session_OnStart()
Application(“currentusers”) = Application(“currentusers”) + 1
End Sub - OnEnd
Inträffar i global.asa när en användares session dör. Detta är antingen om du kör session.abandon eller om sessionen gjort timeout. Alla existerande variabler raderas och tas bort. En test har visat att inte 100% av alla sessioner som dör kör denna rutin.
Sub Session_OnEnd()
Application(“currentusers”) = Application(“currentusers”) - 1
End Sub
Application
Applikationsobjektet skapas när ASP.DLL laddas då första anropet görs för en aspsida. Den tillåter dig lagra variabler och objektreferenser som sedan är tillgängliga för samtliga sidor som användarna öppnar.- Contents
En samling av alla variabler samt dess värden som lagrats i Applikationsobjektet och är inte definerade genom ett objekt-element. Detta inkluderar Variant arrayer och referenser.
Contents.Remove(“variabel”) – raderar en specifik variabel från applikationsobjektet
Contents.RemoveAll – raderar samtliga variabler från applikationsobjektet - StaticObjects
En samling av alla variabler som är lagrade i Applikationsobjektet genom ett objektelement. - Lock
Låser applikationsobjektet så att endast den aktuella asp-sidan har tillgång att ändra innehållet. Detta används för att inte två samtidiga användare skall kunna ändra innehållet samtidigt när man läser och uppdaterar något värde.
Application.Lock
Application(“CurrentData”) = 1 - UnLock
Frigör åter applikationsobjektet så man åter kan läsa och ändra innehållet.
Application.Lock
Application(“CurrentData”) = 1
Application.UnLock - OnStart
Inträffar då den första instansen för en användare frågar efter en webbsida i applikationen samt före användaren kör sidan. Detta används för att initiera variabler, skapa objekt eller köra annan programkod före.
Sub Application_OnStart()
End Sub - OnEnd
Aktiveras då asp-applikationen avslutas. Det är exempelvis när webbservern stängs ner. Det sker när den sista användarens session har avslutats samt efter all kod där du anger Session.Abandon. Alla existerande variabler rensas när det avslutas.
Sub Application_OnEnd()
End Sub
Server
Serverobjektet servar med en serie metoder och funktioner som är användbara tillsammans med asp-script. Det som du säkert kommer använda mest är Server.CreateObject metoden som ser till att du instansierar com objekt för aktuell sida eller session. Det är även metoder för att översätta strängar till korrekt format i en URL samt html genom att ersätta icke godkända tecken till ett godkänt format.- ScriptTimeOut
En integer som default är 90. Egenskapen sätter eller returnerar antalet sekunder som scriptet på den aktuella sidan får ta innan servern stoppar körningen och rapporterar ett felmeddelande. Detta stannas automatiskt och frigör allting från minnet som innehåller fel som kan tänkas låsa en körning såsom en lång loop. Detta förhindrar servern att överlastas med felaktiga körningar. Du kan behöva öka värdet om det tar lång tid att köra – ett exempel kan vara en funktion för att ladda upp filer eller bilder från användarens webbläsare.
Value = Server.ScriptTimeOut
If Value < 90 Then Server.ScriptTimeOut = 180 - CreateObject(“identifiering”)
Med CreateObject skapar du en instans av ett objek (en komponent, applikation eller ett scriptingobjekt) som identifieras av ”identifiering” , och returnerar en referens till det som kan användas i programkoden. Detta kan ske i global.asa på en virtuell applikation för att skapa objekt i session, eller applikations-scoopet. Objektet kan identiferas genom dess ClassId (ex. ”{CLSID:FEC9-…-32A7}” eller genom dess ProgId sträng såsom ”ADODB.Connection”.
Set con = Server.CreateObject(”ADODB.Connection”) - Execute(”url”)
Funktionen stoppar pågående programkörning av aktuell sida och går istället till en annan sida som du specificerar. Användarens aktuella miljö såsom session tas med till den nya sidan. Efter att den sidan är klar med sin körning så skickas åter fokus tillbaks till originalsidan och körningen fortsätter vidare.
Response.Write “före anrop”
Server.Execute ”sparadata.asp”
Response.Write “efter anrop” - GetLastError()
Denna funktion returnerar en referens till ett ASPError objekt som innehåller detaljer från det senast förekomna felet som uppstod då asp kördes. Informationen som finns i ASPError objektet inkluderar filnamn, radnummer, felkod mm.
Set objError = Server.GetLastError()
Response.Write objError.Line - HTMLEncode(“sträng”)
Funktionen returnerar en sträng som är en kopia av det som skickas in. Tecken såsom inte är korrekta html-tecken ersätts. Exempel >< blir < och > - MapPath(“url”)
Funktionen returnerar den fysiska sökvägen och dess filnamn av en fel eller källa som specificerats I dess url. Du kan se kommandot som funktionen FileFind.
Path = Server.MapPath(”databas.mdb”)
Returnerar ex: (“c:\inetpub\wwwroot\db\databas.mdb”) - Transfer(“url”)
Stannar körningen av den aktuella sidan och skickar fokus till en annan sida som du anger via url. Användarens aktuella session osv förs över till den nya sidan. Till skillnad från .Execute metoden så återgår inte fokus till den kallande sidan utan avslutas när den nya sidans script har gått färdigt.
Server.Transfer ”logout.asp” - URLEncode(”sträng”)
Returnerar en sträng som är en kopia av vad som skickades in via ”sträng” men returnerar strängen ersatt av exempelvis ? och & samt mellanslag så de blir en korrekt url. Exempelvis blir det %3F, %26, + och %20. Netscape behöver främst detta stöd.
comments = “detta är kommentarer”
Url = http://test.asp?data= & Server.UrlEncode(comments)
ASPError
Objektet ASPError är ett nytt objekt i ASP 3.0 och finns tillgängligt genom att först anropa GetLastError metoden. Det finns detaljerad information om det sista felet som gjordes i asp och rutinen används med fördel på den sedvanliga 500-felmeddelande sidan.- ASPCode
En integer returneras med det felnummer som gerererats av IIS. - ASPDescription
En detaljerad förklaring av felet om det är asp-relaterat - Category
Indikerar källan av felet, exempelvis om felet beror på ASP , programspråk eller ett objekt. - Column
Returnerar vilken teckenposition i koden som genererade felet. - Desciption
En kort förklaring av felet - File
Namnet på den fil där felet uppstod - Line
Nummer på den rad som genererade felet - Number
Felkoden för ett normalt com-objekt, oftast presenterat som exempelvis -825128784 - Source
Ett urklipp ur den aktuella koden där felet har uppstått.
Set objError = Server.GetLastError()
Response.Write “filnamn:” & objError.File
Response.Write “rad:” & objError.Line
0 Kommentarer