ASP Global.asa 파일


Global.asa 파일

Global.asa 파일은 ASP 응용 프로그램의 모든 페이지에서 액세스할 수 있는 개체, 변수 및 메서드 선언을 포함할 수 있는 선택적 파일입니다.

유효한 모든 브라우저 스크립트(JavaScript, VBScript, JScript, PerlScript 등)는 Global.asa 내에서 사용할 수 있습니다.

Global.asa 파일에는 다음 항목만 포함될 수 있습니다.

  • 신청 이벤트
  • 세션 이벤트
  • <객체> 선언
  • TypeLibrary 선언
  • #include 지시문

참고: Global.asa 파일은 ASP 응용 프로그램의 루트 디렉터리에 저장해야 하며 각 응용 프로그램에는 Global.asa 파일이 하나만 있을 수 있습니다.


Global.asa의 이벤트

Global.asa에서는 응용 프로그램/세션이 시작될 때 수행할 작업과 응용 프로그램/세션이 종료될 때 수행할 작업을 응용 프로그램 및 세션 개체에 알릴 수 있습니다. 이에 대한 코드는 이벤트 핸들러에 배치됩니다. Global.asa 파일에는 네 가지 유형의 이벤트가 포함될 수 있습니다.

Application_OnStart - FIRST 사용자가 ASP 응용 프로그램의 첫 번째 페이지를 호출할 때 발생합니다. 이 이벤트는 웹 서버를 다시 시작한 후 또는 Global.asa 파일을 편집한 후에 발생합니다. "Session_OnStart" 이벤트는 이 이벤트 직후에 발생합니다.

Session_OnStart - 이 이벤트는 새 사용자가 ASP 응용 프로그램에서 첫 페이지를 요청할 때마다 발생합니다.

Session_OnEnd - 이 이벤트는 사용자가 세션을 종료할 때마다 발생합니다. 사용자 세션은 지정된 시간(기본적으로 20분) 동안 사용자가 페이지를 요청하지 않으면 종료됩니다.

Application_OnEnd - 이 이벤트는 마지막 사용자가 세션을 종료한 후에 발생합니다. 일반적으로 이 이벤트는 웹 서버가 중지될 때 발생합니다. 이 절차는 레코드 삭제 또는 텍스트 파일에 정보 쓰기와 같이 애플리케이션이 중지된 후 설정을 정리하는 데 사용됩니다.

Global.asa 파일은 다음과 같을 수 있습니다.

<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>

참고: ASP 스크립트 구분 기호(<% 및 %>)를 사용하여 Global.asa 파일에 스크립트를 삽입할 수 없기 때문에 HTML <script> 요소 안에 서브루틴을 넣습니다.



<객체> 선언

<object> 태그를 사용하여 Global.asa에서 세션 또는 응용 프로그램 범위의 개체를 만들 수 있습니다.

참고: <object> 태그는 <script> 태그 외부에 있어야 합니다!

통사론

<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.

첫 번째 예는 ProgID 매개변수를 사용하여 "MyAd"라는 세션 범위의 개체를 만듭니다.

<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>

두 번째 예는 ClassID 매개변수를 사용하여 "MyConnection"이라는 응용 프로그램 범위의 개체를 만듭니다.

<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>

Global.asa 파일에 선언된 개체는 응용 프로그램의 모든 스크립트에서 사용할 수 있습니다.

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")%>

TypeLibrary 선언

TypeLibrary는 COM 개체에 해당하는 DLL 파일의 내용에 대한 컨테이너입니다. Global.asa 파일에 TypeLibrary에 대한 호출을 포함하면 COM 개체의 상수에 액세스할 수 있으며 ASP 코드에서 오류를 더 잘 보고할 수 있습니다. 웹 응용 프로그램이 형식 라이브러리에서 데이터 형식을 선언한 COM 개체에 의존하는 경우 Global.asa에서 형식 라이브러리를 선언할 수 있습니다.

통사론

<!--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

오류 값

서버는 다음 오류 메시지 중 하나를 반환할 수 있습니다.

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

참고: METADATA 태그는 Global.asa 파일의 모든 위치에 나타날 수 있습니다(<script> 태그 내부 및 외부 모두). 그러나 METADATA 태그는 Global.asa 파일의 상단 근처에 표시하는 것이 좋습니다.


제한

Global.asa 파일에 포함할 수 있는 항목에 대한 제한 사항:

  • Global.asa 파일에 작성된 텍스트는 표시할 수 없습니다. 이 파일은 정보를 표시할 수 없습니다
  • Application_OnStart 및 Application_OnEnd 서브루틴에서는 서버 및 응용 프로그램 개체만 사용할 수 있습니다. Session_OnEnd 서브루틴에서 서버, 응용 프로그램 및 세션 개체를 사용할 수 있습니다. Session_OnStart 서브루틴에서 내장 객체를 사용할 수 있습니다.

서브루틴 사용법

Global.asa는 종종 변수를 초기화하는 데 사용됩니다. 

아래 예는 방문자가 웹 사이트에 처음 도착한 정확한 시간을 감지하는 방법을 보여줍니다. 시간은 "started"라는 세션 변수에 저장되며 "started" 변수의 값은 애플리케이션의 모든 ASP 페이지에서 액세스할 수 있습니다.

<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>

Global.asa를 사용하여 페이지 액세스를 제어할 수도 있습니다.

아래 예는 모든 신규 방문자를 다른 페이지(이 경우 "newpage.asp"라는 페이지)로 리디렉션하는 방법을 보여줍니다.

<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>

그리고 Global.asa 파일에 기능을 포함할 수 있습니다.

아래 예에서 Application_OnStart 서브루틴은 웹 서버가 시작될 때 발생합니다. 그런 다음 Application_OnStart 서브루틴은 "getcustomers"라는 다른 서브루틴을 호출합니다. "getcustomers" 서브루틴은 데이터베이스를 열고 "customers" 테이블에서 레코드 세트를 검색합니다. 레코드 세트는 데이터베이스를 쿼리하지 않고 모든 ASP 페이지에서 액세스할 수 있는 배열에 할당됩니다.

<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>

Global.asa 예

이 예에서는 현재 방문자 수를 계산하는 Global.asa 파일을 만듭니다.

  • Application_OnStart는 서버가 시작될 때 응용 프로그램 변수 "visitors"를 0으로 설정합니다.
  • Session_OnStart 서브루틴은 새 방문자가 도착할 때마다 변수 "visitors"에 1을 추가합니다.
  • Session_OnEnd 서브루틴은 이 서브루틴이 트리거될 때마다 "방문자"에서 하나를 뺍니다.

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>

ASP 파일에 현재 방문자 수를 표시하려면:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%> online now!</p>
</body>
</html>