ASP Soubor Global.asa
Soubor Global.asa
Soubor Global.asa je volitelný soubor, který může obsahovat deklarace objektů, proměnných a metod, ke kterým má přístup každá stránka v aplikaci ASP.
V rámci Global.asa lze použít všechny platné skripty prohlížeče (JavaScript, VBScript, JScript, PerlScript atd.).
Soubor Global.asa může obsahovat pouze následující:
- Události aplikace
- Události relací
- deklarace <objektu>
- Deklarace TypeLibrary
- direktivu #include
Poznámka: Soubor Global.asa musí být uložen v kořenovém adresáři aplikace ASP a každá aplikace může mít pouze jeden soubor Global.asa.
Události v Global.asa
V Global.asa můžete říci aplikaci a objektům relace, co mají dělat, když se aplikace/relace spustí, a co dělat, když aplikace/relace skončí. Kód pro toto je umístěn v obslužných rutinách událostí. Soubor Global.asa může obsahovat čtyři typy událostí:
Application_OnStart – nastane, když PRVNÍ uživatel zavolá první stránku v aplikaci ASP. K této události dochází po restartování webového serveru nebo po úpravě souboru Global.asa. K události "Session_OnStart" dojde bezprostředně po této události.Session_OnStart – K této události dochází POKAŽDÉ, když NOVÝ uživatel požádá o svou první stránku v aplikaci ASP.
Session_OnEnd – K této události dochází POKAŽDÉ, když uživatel ukončí relaci. Uživatelská relace končí poté, co uživatel po určitou dobu nepožádal o stránku (ve výchozím nastavení je to 20 minut).
Application_OnEnd - Tato událost nastane poté, co LAST uživatel ukončil relaci. K této události obvykle dochází, když se webový server zastaví. Tento postup se používá k vyčištění nastavení po zastavení aplikace, jako je odstranění záznamů nebo zápis informací do textových souborů.
Soubor Global.asa by mohl vypadat nějak takto:
<script language="vbscript" runat="server">
sub Application_OnStart
'some code
end sub
sub Application_OnEnd
'some code
end sub
sub Session_OnStart
'some code
end sub
sub Session_OnEnd
'some code
end sub
</script>
Poznámka: Protože nemůžeme použít oddělovače skriptů ASP (<% a %>) k vkládání skriptů do souboru Global.asa, vkládáme podprogramy do prvku HTML <script>.
<objekt> Prohlášení
V Global.asa je možné vytvořit objekty s rozsahem relace nebo aplikace pomocí tagu <object>.
Poznámka: Značka <object> by měla být mimo značku <script>!
Syntax
<object runat="server" scope="scope" id="id"
{progid="progID"|classid="classID"}>
....
</object>
Parameter | Description |
---|---|
scope | Sets the scope of the object (either Session or Application) |
id | Specifies a unique id for the object |
ProgID | An id associated with a class id. The format for ProgID is [Vendor.]Component[.Version]
Either ProgID or ClassID must be specified. |
ClassID | Specifies a unique id for a COM class object. Either ProgID or ClassID must be specified. |
Příklady
První příklad vytvoří objekt rozsahu relace s názvem „MyAd“ pomocí parametru ProgID:
<object runat="server" scope="session" id="MyAd"
progid="MSWC.AdRotator">
</object>
Druhý příklad vytvoří objekt oboru aplikace s názvem "MyConnection" pomocí parametru ClassID:
<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>
Objekty deklarované v souboru Global.asa mohou být použity jakýmkoli skriptem v aplikaci:
GLOBAL.ASA:
<object runat="server" scope="session" id="MyAd"
progid="MSWC.AdRotator">
</object>
You could reference the object "MyAd" from any page in the ASP application:
SOME .ASP FILE:
<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>
Prohlášení TypeLibrary
TypeLibrary je kontejner pro obsah souboru DLL odpovídající objektu COM. Zahrnutím volání TypeLibrary do souboru Global.asa lze přistupovat ke konstantám objektu COM a kódem ASP lze lépe hlásit chyby. Pokud vaše webová aplikace spoléhá na objekty COM, které deklarovaly datové typy v knihovnách typů, můžete deklarovat knihovny typů v Global.asa.
Syntax
<!--METADATA TYPE="TypeLib"
file="filename"
uuid="id"
version="number"
lcid="localeid"
-->
Parameter | Description |
---|---|
file | Specifies an absolute path to a type library.
Either the file parameter or the uuid parameter is required |
uuid | Specifies a unique identifier for the type library.
Either the file parameter or the uuid parameter is required |
version | Optional. Used for selecting version. If the requested version is not found, then the most recent version is used |
lcid | Optional. The locale identifier to be used for the type library |
Chybové hodnoty
Server může vrátit jednu z následujících chybových zpráv:
Error Code | Description |
---|---|
ASP 0222 | Invalid type library specification |
ASP 0223 | Type library not found |
ASP 0224 | Type library cannot be loaded |
ASP 0225 | Type library cannot be wrapped |
Poznámka: Tagy METADATA se mohou objevit kdekoli v souboru Global.asa (uvnitř i vně tagů <script>). Doporučuje se však, aby se značky METADATA objevily v horní části souboru Global.asa.
Omezení
Omezení toho, co můžete zahrnout do souboru Global.asa:
- Nelze zobrazit text napsaný v souboru Global.asa. Tento soubor nemůže zobrazit informace
- Objekty Server a Application můžete používat pouze v podprogramech Application_OnStart a Application_OnEnd. V podprogramu Session_OnEnd můžete použít objekty Server, Application a Session. V podprogramu Session_OnStart můžete použít jakýkoli vestavěný objekt
Jak používat podprogramy
Global.asa se často používá k inicializaci proměnných.
Níže uvedený příklad ukazuje, jak zjistit přesný čas, kdy návštěvník poprvé vstoupí na webovou stránku. Čas je uložen v proměnné Session s názvem „started“ a k hodnotě proměnné „started“ lze přistupovat z libovolné stránky ASP v aplikaci:
<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>
Global.asa lze také použít k řízení přístupu ke stránce.
Níže uvedený příklad ukazuje, jak přesměrovat každého nového návštěvníka na jinou stránku, v tomto případě na stránku s názvem „newpage.asp“:
<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>
A do souboru Global.asa můžete zahrnout funkce.
V níže uvedeném příkladu se podprogram Application_OnStart objeví při spuštění webového serveru. Potom podprogram Application_OnStart zavolá další podprogram s názvem „getcustomers“. Podprogram "getcustomers" otevře databázi a načte sadu záznamů z tabulky "customers". Sada záznamů je přiřazena k poli, kde k ní lze přistupovat z libovolné stránky ASP bez dotazování na databázi:
<script language="vbscript" runat="server">
sub Application_OnStart
getcustomers
end sub
sub getcustomers
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs=conn.execute("select name from customers")
Application("customers")=rs.GetRows
rs.Close
conn.Close
end sub
</script>
Příklad Global.asa
V tomto příkladu vytvoříme soubor Global.asa, který počítá počet aktuálních návštěvníků.
- Application_OnStart nastaví proměnnou aplikace "návštěvníci" na 0 při spuštění serveru
- Podprogram Session_OnStart přidá jedničku do proměnné „návštěvníci“ pokaždé, když přijde nový návštěvník
- Podprogram Session_OnEnd odečte jednoho od „návštěvníků“ pokaždé, když je tento podprogram spuštěn.
Soubor Global.asa:
<script language="vbscript" runat="server">
Sub Application_OnStart
Application("visitors")=0
End Sub
Sub Session_OnStart
Application.Lock
Application("visitors")=Application("visitors")+1
Application.UnLock
End Sub
Sub Session_OnEnd
Application.Lock
Application("visitors")=Application("visitors")-1
Application.UnLock
End Sub
</script>
Chcete-li zobrazit počet aktuálních návštěvníků v souboru ASP:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%>
online now!</p>
</body>
</html>