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>