ASP Global.asa 파일

Global.asa 파일은 선택적인 파일로, ASP 애플리케이션의 각 페이지에서 접근할 수 있는 객체, 변수 및 메서드의 선언을 포함할 수 있습니다.

Global.asa 파일

Global.asa 파일은 선택적인 파일로, ASP 애플리케이션의 각 페이지에서 접근할 수 있는 객체, 변수 및 메서드의 선언을 포함할 수 있습니다. 모든 법적인 브라우저 스크립트는 Global.asa에서 사용할 수 있습니다.

Global.asa 파일은 다음과 같은 내용을 포함할 수 있습니다:

  • Application 이벤트
  • Session 이벤트
  • <object> 선언
  • TypeLibrary 선언
  • #include 명령

주석:Global.asa 파일은 ASP 애플리케이션의 루트 디렉토리에 저장되어야 하며, 각 애플리케이션은 하나의 Global.asa 파일만 가질 수 있습니다.

Global.asa 이벤트

Global.asa에서는 application과 session 객체가 시작과 종료 시에 무엇을 할지 알릴 수 있습니다. 이 작업을 수행하는 코드는 이벤트 오퍼레이터에 배치됩니다. Global.asa 파일은 네 가지 유형의 이벤트를 포함할 수 있습니다.

Application_OnStart - 첫 번째 사용자가 ASP 응용 프로그램에서 첫 번째 페이지를 호출할 때마다 발생하는 이벤트입니다. 이 이벤트는 웹 서버가 재시작되거나 Global.asa 파일이 편집된 후에 발생합니다. "Session_OnStart" 이벤트는 이 이벤트가 발생한 후 즉시 발생합니다.

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

Session_OnEnd - 사용자가 session을 종료할 때마다 발생하는 이벤트입니다. 설정된 시간(기본 이벤트는 20분) 내에 페이지가 요청되지 않으면 session이 종료됩니다.

Application_OnEnd - 마지막 사용자가 그의 session을 종료한 후에 발생하는 이벤트입니다. 일반적으로, 이 이벤트는 웹 서버가 중지될 때 발생합니다. 이 서브 프로그램은 응용 프로그램이 중지되면 설정을 지우거나 텍스트 파일에 정보를 쓰는 등의 작업을 수행합니다.

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>

주석:Global.asa 파일에서 ASP 스크립트 구분자 (<%와 %>)를 사용할 수 없기 때문에, HTML의 <script> 요소를 사용해야 합니다.

<object> 선언

Global.asa 파일에서 session 또는 application 범위의 객체를 생성할 수 있습니다.

주석:<object> 태그는 <script> 태그 외에 위치해야 합니다.

문법:

<object runat="server" scope="scope" id="id"
{progid="progID"|classid="classID"}>
....
</object>
파라미터 설명
scope 객체의 범위(사용범위)(Session 또는 Application)를 설정합니다.
id 객체에 독특한 id를 지정합니다.
ProgID

ClassID와 연관된 id입니다. ProgID의 형식은: [Vendor.]Component[.Version]입니다.

ProgID 또는 ClassID가 지정되어야 합니다.

ClassID

COM 클래스 객체에 독특한 id를 지정합니다.

ProgID 또는 ClassID가 지정되어야 합니다.

인스턴스

첫 번째 인스턴스는 "MyAd" 이름의 인스턴스를 생성하여 ProgID 파라미터를 사용한 session 범위 객체를 생성합니다:

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

두 번째 인스턴스는 "MyConnection" 이름의 인스턴스를 생성하여 ClassID 파라미터를 사용합니다:

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

이 "MyAd" 객체를 ASP 애플리케이션의 어떤 페이지에서도 참조할 수 있습니다:

어떤 .ASP 파일:

<%=MyAd.GetAdvertisement("/banners/adrot.txt")%> 

TypeLibrary 선언

TypeLibrary (타입 라이브러리)는 COM 객체에 해당하는 DLL 파일을 포함한 컨테이너입니다. Global.asa에 TypeLibrary 호출을 포함하면 COM 객체의 상수에 접근할 수 있으며, ASP 코드도 오류를 더 잘 보고할 수 있습니다. 타입 라이브러리에 이미 선언된 데이터 타입의 COM 객체에 의존하는 웹 사이트의 애플리케이션이 있다면, Global.asa에서 타입 라이브러리를 선언할 수 있습니다.

문법:

<!--METADATA TYPE="TypeLib"
file="filename"
uuid="typelibraryuuid"
version="versionnumber"
lcid="localeid"
-->
파라미터 설명
file 타입 라이브러리를 가리키는 절대 경로를 정의합니다. 파일 또는 uuid 파라미터 중 하나는 필수입니다.
uuid 타입 라이브러리에 대한 유일한 식별자를 정의합니다. 파일 또는 uuid 파라미터 중 하나는 필수입니다.
version 선택 사항. 버전을 선택합니다. 지정된 버전이 없으면 가장 가까운 버전을 사용합니다.
lcid 선택 사항. 타입 라이브러리의 지역 식별자를 사용합니다.

에러 값

서버는 다음 중 하나의 오류 메시지를 반환합니다:

에러 코드 설명
ASP 0222 Invalid type library specification
ASP 0223 타입 라이브러리를 찾을 수 없습니다.
ASP 0224 타입 라이브러리를 로드할 수 없습니다.
ASP 0225 타입 라이브러리를 포장할 수 없습니다.

주석:METADATA 태그는 Global.asa 파일의 어느 위치에나 위치할 수 있습니다. <script> 태그의 내부와 외부 모두 가능합니다. 그러나 Global.asa 파일의 상단에 METADATA 태그를 위치시키는 것이 좋습니다.

제한

Global.asa 파일에서 참조할 수 있는 내용에 대한 제한:

Global.asa 파일 내의 텍스트를 표시할 수 없습니다. 이 파일은 정보를 표시할 수 없습니다.

Server와 Application 객체는 Application_OnStart와 Application_OnEnd 서브루프에서만 사용할 수 있습니다. Session_OnEnd 서브루프에서는 Server, Application, Session 객체를 사용할 수 있습니다. 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은 서버가 시작될 때 Application 변수 "visitors"의 값을 0으로 설정합니다。

새 사용자가 방문할 때마다, Session_OnStart 서브루틴은 변수 "visitors"에 1을 증가시킵니다。

Session_OnEnd 서브루틴이 트리거될 때마다, 이 서브루틴은 변수 "visitors"에서 1을 감소시킵니다。

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 파일은 현재 사용자 수를 표시합니다:

<html>
<head>
</head>
<body>
<p>지금オン라인에 <%response.write(Application("visitors"))%> 명이 있습니다!</p>
</body>
</html>