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>