Latest web development tutorials

ASP에서 Global.asa

Global.asa 파일

Global.asa 파일이 선언 될 수 ASP의 모든 페이지에 액세스 응용 프로그램 변수와 메소드 있습니다 포함 할 수있는 선택적 파일입니다.

모든 합법적 인 브라우저 스크립트 (자바 스크립트 등 PerlScript 것, VBScript를, JScript의이)가 Global.asa에 사용될 수있다.

를 Global.asa 파일은 다음을 포함 할 수 있습니다 :

  • 응용 프로그램 이벤트
  • 세션 이벤트
  • <개체> 문
  • TypeLibrary 문
  • 사용법 #include 지시문

주 : Global.asa 파일을 ASP 응용 프로그램의 루트 디렉토리에 저장되어야하며, 각각의 애플리케이션은 하나 Global.asa 파일을 가질 수있다.


를 Global.asa 이벤트

응용 프로그램 / 세션이 무엇을 시작하는 때를 Global.asa에서 응용 프로그램 및 세션 개체를 알 수 있습니다, 때 수행하는 응용 프로그램 / 세션의 끝. 이 작업을 수행하는 코드는 이벤트 핸들러에 배치됩니다. Global.asa 파일은 이벤트의 네 가지 유형을 포함 할 수 있습니다 :

이 Application_OnStart - 사용자가 제 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>

참고 : 우리는 (<%와 %>) Global.asa 파일에 스크립트를 삽입 ASP 스크립트 구분 기호를 사용할 수 없기 때문에, 우리는 HTML 내부에 <script> 요소에 배치 루틴을 처리해야합니다.


<개체> 문

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

참고 : <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를 매개 변수를 사용하여 첫 번째 인스턴스 :

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

您可以从 ASP 应用程序中的任意页面引用 "MyAd" 对象:

某个 .ASP 文件:

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

参数 描述
file 规定指向类型库的绝对路径。

file 参数或者 uuid 参数,两者缺一不可。

uuid 规定了类型库的唯一的标识符。

file 参数或者 uuid 参数,两者缺一不可。

version 可选。用于选择版本。如果没有找到需要的版本,将使用最接近的版本。
lcid 可选。用于类型库的地区标识符。

오류 값

서버는 다음과 같은 오류 메시지 중 하나를 반환 :

错误代码 描述
ASP 0222 无效的类型库规范
ASP 0223 没有找到类型库
ASP 0224 无法加载类型库
ASP 0225 无法包装类型库

참고 : Global.asa 파일에서 메타 데이터태그 어디서나 (내부와 <script> 태그가 될 수 밖에)가 나타납니다 파일. 그러나, 우리는 여전히 Global.asa 파일의 상단에 배치 메타 데이터 태그를 추천합니다.


제한된

약 Global.asa 파일이 정의 된 내용을 참조 할 수 있습니다 :

  • 텍스트를 표시 할 수 없습니다 Global.asa 파일. 이 파일은 정보를 표시 할 수 없습니다.
  • 당신은 서버를 사용하고 응용 프로그램의 Application_OnStart 및 다음 Application_OnEnd 서브 루틴을 개체. 이 Session_OnEnd 서브 루틴에서는 서버, 응용 프로그램 및 세션 개체를 사용할 수 있습니다. Session_OnStart 서브 루틴에서는 모든 내장 객체를 사용할 수 있습니다.

서브 루틴을 사용하는 방법

Global.asa에 일반적으로 변수를 초기화하는 데 사용됩니다.

다음의 예는 먼저 도착 웹 사이트 방문자의 정확한 시간을 감지하는 방법을 보여줍니다. 시간이라는 이름의 세션 객체에 저장되어있는 "시작", 그리고 값은 변수가 모든 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"서브 루틴은 데이터베이스를 열고 "고객"테이블에서 레코드 세트를 검색합니다. 이 레코드는 데이터베이스에 질의하지 않고, 임의의 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는 응용 프로그램 변수 "방문자"로 설정 0입니다.
  • 새로운 방문자가 방문하기 위해 올 때마다 Session_OnStart 서브 루틴은 변수 "방문자"더하기 하나 일 것이다.
  • 이 Session_OnEnd 서브 루틴이 트리거 될 때마다, 서브 루틴 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 파일에서 :

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