게시 된 시리즈에서는 응용 프로그램 객체와 세션 객체의 두 가지 ASP 객체에 대해 논의하여 응용 프로그램 개체 및 세션 객체에서 제공하는 컬렉션, 메소드, 속성 및 이벤트에 액세스 할 수 있습니다. 이 섹션에서는 프로그래밍 관점 에서이 두 객체를 연구합니다.
· ASP DLL이로드되고 ASP 웹 페이지에 대한 첫 번째 요청이 응답 할 때 응용 프로그램 객체를 만듭니다. 이 개체는 모든 방문자가 열리는 모든 웹 페이지에 사용할 수있는 변수 및 개체를 저장할 수있는 저장 장소를 제공합니다.
· 방문자가 사이트에서 처음으로 ASP 페이지를 요청하면 그에 대한 세션 객체를 작성하고 기본 시간 초과 기간 (또는 스크립트에 의해 결정된 시간 초과 기간)까지 유효합니다. 이 객체는 세션 활동 중에 방문자가 열린 웹 페이지에만 사용할 수있는 변수 및 개체를 저장할 수있는 저장 장소를 제공합니다.
관계
1. ASP 응용 프로그램 개체 멤버의 개요
이 섹션에서는 응용 프로그램 개체의 수집, 메소드 및 이벤트에 대해 설명합니다 (응용 프로그램 객체에는 속성이 없습니다). 세션 객체 (속성 포함)는 다음 섹션에 설명되어 있습니다. 그런 다음 이러한 객체로 달성 된 작업을 계속 탐색하여 각 객체의 각 구성원이 어떻게 작동하는지 더 자세히 설명합니다.
1. 응용 프로그램 객체 모음
응용 프로그램 객체는 글로벌 애플리케이션 공간에 저장된 변수와 객체에 액세스하는 데 사용할 수있는 두 가지 컬렉션을 제공합니다. 수집 및 설명은 다음과 같습니다.
테이블 응용 프로그램 개체의 수집 및 설명
| 모으다 | 설명 |
| 내용물 | <botort> 요소를 사용하여 정의 된 응용 프로그램 객체에 저장된 모든 변수 (및 해당 값) 세트는 없습니다. 변형 어레이 및 변형 유형 개체 인스턴스에 대한 참조 포함 |
| 정적 콥 | <bood> 요소를 사용하여 정의 된 응용 프로그램 객체에 저장된 모든 변수 (및 해당 값)의 모음 |
2. 응용 프로그램 객체의 방법
Application Object Method를 사용하면 글로벌 응용 프로그램 공간에서 값을 삭제하여 해당 공간 내의 변수에 대한 동시 액세스를 제어 할 수 있습니다. 방법과 지침은 다음 표에 나와 있습니다.
테이블 애플리케이션 객체의 방법 및 설명
| 방법 | 설명 |
| contents.remove (variable_name) | Application.Content Collection에서 Variable_name이라는 변수를 제거하십시오 |
| contents.removeall () | 응용 프로그램에서 모든 변수를 제거하십시오 |
| 잠그다() | 현재 ASP 페이지 만 컨텐츠에 액세스 할 수 있도록 응용 프로그램 객체를 잠그십시오. 두 사용자가 값을 동시에 읽고 수정할 수있는 방법에 의해 수행되는 동시 작업을 보장하는 데 사용됩니다. |
| 터놓다() | 응용 프로그램 객체에서 ASP 웹 페이지를 잠금 해제하십시오 |
런타임 동안 application.staticobjects 컬렉션에서 변수를 삭제할 수 없습니다.
3. 응용 프로그램 개체의 이벤트
응용 프로그램 객체는 다음 표에서 볼 수 있듯이 시작 및 종료 될 때 트리거되는 두 가지 이벤트를 제공합니다.
테이블 응용 프로그램 개체의 이벤트 및 설명
| 이벤트 | 설명 |
| onstart | ASP가 시작될 때, 사용자가 웹 페이지를 실행하도록 요청하기 전에, 어떤 사용자가 세션 객체를 생성하기 전에. 변수 초기화, 객체 생성 또는 기타 코드를 실행하는 데 사용됩니다. |
| onend | ASP 응용 프로그램이 종료 될 때 트리거됩니다. 마지막 사용자 세션이 종료 된 후에 발생하고 해당 세션의 Onend 이벤트의 모든 코드가 실행되었습니다. 결국 응용 프로그램에있는 모든 변수가 취소됩니다. |
ASP의 세션 객체 멤버 개요
이 섹션에서는 세션 객체의 모든 멤버를 간략하게 설명합니다.
1. 세션 객체 모음
세션 객체는 사용자의 로컬 세션 공간에 저장된 변수와 객체에 액세스하는 데 사용할 수있는 두 세트를 제공합니다. 이 컬렉션과 설명은 다음 표에 나와 있습니다.
테이블 세션 객체의 설정 및 설명
| 모으다 | 설명 |
| 내용물 | 이 특정 세션 객체에 저장된 모든 변수 및 해당 값의 콜렉션 및 이러한 변수 및 값은 <bood> 요소를 사용하여 정의되지 않습니다. 변형 어레이 및 변형 유형 개체 인스턴스에 대한 참조 포함 |
| 정적 콥 | 이 세션에 저장된 모든 변수의 컬렉션은 <bood> 요소를 사용하여 정의 된 객체 |
2. 세션 객체의 특성
세션 객체는 네 가지 속성을 제공합니다. 이러한 속성 및 설명은 다음 표에 나와 있습니다.
표 3-7 세션 객체의 속성 및 설명
| 재산 | 설명 |
| Codepage | 읽기/쓰기. 정수. 브라우저에 페이지 컨텐츠를 표시 할 코드 페이지를 정의합니다. 코드 페이지는 문자 세트의 숫자 값이며 다른 언어와 장소에서 다른 코드 페이지를 사용할 수 있습니다. 예를 들어, ANSI 코드 Page 1252는 미국 영어 및 대부분의 유럽 언어로 사용됩니다. 코드 932 페이지는 일본어 문자에 사용됩니다 |
| LCID | 읽기/쓰기. 정수. 브라우저로 전송 된 페이지 영역 ID (LCID)를 정의합니다. LCID는 예를 들어 2057 년 현재 지역을 정의하는 통화 기호를 고유하게 식별하는 국제 표준 약어입니다. LCID는 선택적 LCID 매개 변수가있는 한 형식 전환 및 기타 문으로 사용할 수 있습니다. LCID는 ASP 처리 명령 <%& hellip;%>에서도 설정할 수 있으며 세션의 LCID 속성에서 설정보다 우선합니다. 이 장은 나중에 ASP 처리 지침 목록을 제공합니다. |
| SessionID | 읽기 전용. 긴 모양. 이 세션의 세션 식별자를 반환합니다.이 세션은 세션이 생성 될 때 서버에서 생성됩니다. 상위 응용 프로그램 개체의 수명 동안 고유하므로 새 응용 프로그램이 시작될 때 재사용 할 수 있습니다. |
| 시간 초과 | 읽기/쓰기. 정수. 이 세션의 시간 초과 기간을 몇 분만 정의하십시오. 시간 초과 기간 동안 사용자가 새로 고침 또는 웹 페이지를 요청하지 않으면 세션이 종료됩니다. 각 웹 페이지에서 필요에 따라 수정할 수 있습니다. 기본값은 10 분입니다. 이번에는 사용량이 많은 사이트에서 더 짧아 야합니다. |
3. 세션 객체의 방법
세션 객체는 사용자 수준 세션 공간에서 지정된 값을 제거하고 필요에 따라 세션을 종료 할 수 있습니다. Seesion 객체의 방법과 설명은 다음 표에 나와 있습니다.
테이블 세션 객체의 방법 및 설명
| 방법 | 설명 |
| contents.remove (variable_name) | Session.Content Collection에서 Variable_name이라는 변수를 제거하십시오 |
| contents.removeall () | 세션에서 모든 변수를 제거하십시오 |
| 버리다() | 웹 페이지의 실행이 완료되면 현재 사용자 세션이 종료되고 현재 세션 객체가 문서화되지 않습니다. 그러나 메소드가 호출 된 후에도 페이지의 현재 세션의 변수에 여전히 액세스 할 수 있습니다. 사용자가 다음 페이지를 요청하면 새 세션이 시작되고 새 세션 객체가 생성됩니다 (존재하는 경우) 런타임 중에 변수는 세션에서 삭제할 수 없습니다. |
4. 세션 객체의 이벤트
세션 객체는 표 3-9에 표시된 것처럼 시작 및 끝에서 트리거되는 두 가지 이벤트를 제공합니다.
표 3-9 세션 객체의 이벤트 및 설명
| 이벤트 | 설명 |
| onstart | ASP 사용자 세션이 시작될 때 사용자가 요청한 웹 페이지가 실행되기 전에 트리거됩니다. 변수를 초기화하거나 객체를 생성하거나 다른 코드를 실행하는 데 사용됩니다. |
| onend | ASP 사용자 세션이 종료 될 때 트리거되었습니다. 사용자의 마지막 페이지 요청에서 애플리케이션에 대한 요청에서 시작하여 미리 정해진 세션 타임 아웃 기간이 초과 된 경우 이벤트가 트리거됩니다. 세션이 종료되면 해당 세션의 모든 변수를 취소하십시오. 이 이벤트는 포기 방법을 사용하여 코드에서 ASP 사용자 세션을 종료 할 때도 트리거됩니다. |
응용 프로그램 및 세션을 사용한 이벤트
ASP의 응용 프로그램 및 세션 객체는 다른 ASP 내장 객체에없는 기능 이벤트를 반영합니다. 그러나 이전 객체 멤버 테이블에서 볼 수 있듯이 ASP 세션 및 응용 프로그램 작업과 관련된 이벤트입니다.
1. 응용 프로그램 및 세션을위한 이벤트 처리기
응용 프로그램 또는 세션이 시작되거나 종료 될 때마다 ASP는 이벤트를 트리거합니다. 이러한 이벤트는 응용 프로그램의 루트 디렉토리에 위치한 Global.asa라는 특수 파일 (Global.asa) (기본 웹 사이트는 /inetpub /wwwroot 디렉토리 또는 실제 응용 프로그램). 이 파일에는 응용 프로그램 또는 사용자 세션 내에서 사용할 구성 요소 인스턴스를 작성하는 데 사용되는 HTML의 하나 이상의 <bood> 요소가 포함될 수 있습니다.
다음 코드는 Global.asa 파일의 예입니다. 우리는 <bood> 요소와 세트 키워드로 시작하는 코드 줄에만 집중합니다.
| <!- AspCounter 구성 요소의 인스턴스를 선언합니다 애플리케이션 수준 범위 //- > < 객체 ID = ASPCOUNTER RUNAT = SERVER SCOPE = 응용 프로그램입니다 progid = mswc.counters > </객체 > <!- ASPContentLimk 구성 요소의 인스턴스를 선언합니다 세션 수준 범위와 함께 //- > < 객체 ID = ASPCONTENTLINK RUNAT = SERVER SCOPE = SESSION progid = mswc.nextlink> </객체 > script 언어 = vbscript runat = 서버 > 하위 응용 프로그램 _onstart () '응용 프로그램 수준 범위로 Ado Recordset의 인스턴스 생성 Application (AdoConnection) = server.createObject (adodb.connection) Dim Vararrray (3) '변형 배열을 만들어 채우십시오 vararray (0) = 이것은 a입니다 vararray (1) = 변형 배열 vararray (2) = vararray (3) = 응용 프로그램 객체 응용 프로그램 (variant_array) = vararray'store application in application 응용 프로그램 (start_time) = cstr (지금) '날짜/시간을 문자열로 저장하십시오 응용 프로그램 (visit_count) = 0 '카운터 변수를 0으로 설정합니다 종료 서브 하위 응용 프로그램 _onend () 응용 프로그램을 설정하십시오 (AdoConnection) = 아무것도 없습니다 종료 서브 sesson_onstart () '세션 수준 범위로 Adrotator 구성 요소의 인스턴스 생성 세션 설정 (aspadrotator) = server.createobject (mswc.adrotator) Dim Vararray (3) '변형 Arry를 만들어 채우십시오 vararray (0) = 이것은 a입니다 vararray (1) = 변형 배열 vararray (2) = vararray (3) = 세션 객체 세션 (variant_array) = vararray '세션에 저장하십시오 세션 (start_time) = cstr (지금) '날짜/시간을 문자열로 저장하십시오 '세션 _onstart에서 요청 및 응답의 내용에 액세스 할 수 있습니다. '세션을 시작한 페이지의 이벤트 핸들러. 'ASP 페이지 컨텍스트를 사용할 수있는 장소. '예를 들어, 우리는 사용자의 IP 주소를 얻을 수 있습니다. 세션 (your_ip_address) = request.servervariables (remote_addr) application.lock intvisits = application (visit_count) +1 응용 프로그램 (visit_count) = intvisits application.unlock 종료 서브 하위 세션 _onend () 세션 설정 (Aspadrotator) = 아무것도 없습니다 종료 서브 </스크립트 ipt |
이 Global.asa 파일은이 장의 예제 페이지에 사용되므로 파일을 웹 사이트의 루트 디렉토리 또는 가상 응용 프로그램으로 구성된 디렉토리에 넣고 다른 샘플 파일을 포함해야합니다. .
값을 읽고 저장합니다
위의 예제는 요청 및 응답 개체 모음을 취하는 것과 같은 방식으로 응용 프로그램 및 세션 변수를 읽는 방법에 유의하십시오. 이 변수의 값을 설정하십시오.
| 응용 프로그램 (variable_name) = variable_value 응용 프로그램 (variable_name) = variable_array_variable_name Application (variable_name) = Object_Reference를 설정합니다 |
이러한 변수의 값을 얻으십시오.
| variable_value = application (variable_name) variant_array_variable = application (variable_name) SET Object_Reference = Application (variable_name) |
물론 세션 객체에 대해서도 동일한 접근 방식을 취할 수 있습니다.
ASP 웹 페이지에서 액세스 할 때 Application 객체를 잠그고 잠금 해제하는 방법을 알 수 있습니다. 응용 프로그램 이벤트 내에서 코드를 사용하여 응용 프로그램 개체에서 값에 액세스 할 때는 필요하지 않습니다. 이는 응용 프로그램에서 응용 프로그램 객체의 인스턴스가 하나 뿐이며 이벤트 핸들러 코드는 활성 사용자 세션이없는 경우에만 수행되기 때문입니다.
기본 사용자 세션 카운터가 어떻게 구현되는지 확인할 수도 있습니다. 다음은 애플리케이션 수준 변수 visit_count입니다. 새 세션이 시작될 때 자동으로 증가합니다. 일반적으로 단순히 값을 응용 프로그램 또는 세션 객체에 저장하는 것은 제한되지 않습니다. 예를 들어 웹 개발자의 웹 사이트에는 http://webdev.wrox.co.uk에 해당 Global.asa 파일이 있습니다 request.servervariables 컬렉션에서 얻습니다. 이는 방문자 수를 세고 방문자에 대한 기본 정보를 수집하는 기본 방법을 제공합니다.