변수는 숫자나 텍스트 문자열 등 데이터를 저장하는 컴퓨터 메모리의 명명된 저장 위치입니다. 변수에 저장된 데이터를 변수 값이라 합니다. 변수는 스크립트의 기능을 이해할 수 있도록 이름을 사용하여 값을 저장, 검색, 조작할 수 있습니다.
해당 스크립트 언어의 변수 이름 지정 및 선언 규칙에 따릅니다. 변수는 사용하기 전에 선언하지 않아도 되지만 미리 선언하면 오류를 예방할 수 있으므로 습관을 들이는 것이 좋습니다. 변수를 선언한다는 것은 스크립트 전체에서 해당 변수에 대한 참조를 사용할 수 있도록 스크립트 엔진에게 특정 이름의 변수가 존재한다는 것을 알리는 것입니다.
VBScript에서는 변수를 반드시 선언할 필요는 없지만 사용하기 전에 모든 변수를 선언하는 습관을 들이는 것이 좋습니다. VBScript에서 변수를 선언하려면 Dim, Public, Private 문을 사용합니다. 예를 들면 다음과 같습니다.
<% Dim UserName %>
.asp 파일에서 VBScript Option Explicit 문을 사용하여, Dim, Private, Public, ReDim 문에서 필요한 변수를 명시적으로 선언하게 할 수 있습니다. Option Explicit 문은 모든 ASP 지시어 뒤, 그리고 모든 HTML 텍스트 또는 스크립트 명령 앞에 와야 합니다. 이 명령문은 VBScript로 작성된 ASP 명령에만 영향을 주며 JScript 명령에는 영향을 주지 않습니다.
<% Option Explicit %> <HTML> <% Dim strUserName Public lngAccountNumber %> . . .
이러한 명령에 대한 자세한 내용은 Windows 스크립트 기술 웹 사이트에서 VBScript 언어 참조를 참조하십시오.
JScript는 보통 변수를 선언하지 않아도 되지만 사용하기 전에 모든 변수를 선언하는 습관을 들이는 것이 좋습니다. 변수를 선언할 때는 var 문을 사용하십시오. 예를 들면 다음과 같습니다.
<% var UserName %>
일반적으로 JScript에서는 함수 안에 있는 변수를 함수 밖에서 사용되는 전역 변수와 구분할 때만 선언합니다. 이 경우, 두 변수를 구분하지 않으면 JScript에서 전역 변수를 참조하는 것으로 간주합니다. var 문에 대한 자세한 내용은 Jscript 언어 참조를 참조하십시오. Windows 스크립트 기술 웹 사이트에 이 참조가 있습니다.
변수의 범위(수명)에 따라 변수를 액세스할 수 있는 스크립트 명령이 결정됩니다. 프로시저 안에서 선언된 변수는 로컬 범위를 갖습니다. 이 변수는 프로시저가 실행될 때마다 생성되었다가 삭제됩니다. 프로시저 밖에서는 아무 것도 액세스할 수 없습니다. 프로시저 밖에서 선언된 변수는 전역 범위를 갖습니다. 이 변수는 ASP 페이지에 있는 모든 스크립트 명령에서 액세스하고 수정할 수 있습니다.
참고 변수 범위를 한 프로시저로만 제한하면 성능이 향상됩니다.
변수를 선언하면 지역 변수와 전역 변수가 같은 이름을 사용할 수 있습니다. 값을 수정해도 다른 변수의 값에는 영향을 주지 않습니다. 그러나 변수를 선언하지 않으면 전역 변수의 값이 수정될 수 있습니다. 예를 들어, 다음 스크립트 명령은 Y라는 이름의 변수가 두 개 있어도 1이라는 값을 반환합니다.
<% Option Explicit Dim Y Y = 1 SetLocalVariable Response.Write Y Sub SetLocalVariable Dim Y Y = 2 End Sub %>
그러나 다음 스크립트 명령은 변수가 명시적으로 선언되지 않았기 때문에 값 2를 반환합니다. 프로시저 호출 시 Y가 2로 설정되면 스크립트 엔진에서 전역 변수를 수정한 것으로 간주합니다.
<% Option Explicit Dim Y = 1 SetLocalVariable Response.Write Y Sub SetLocalVariable Y = 2 End Sub %>
이러한 문제를 방지하려면 변수를 명시적으로 선언하는 습관을 들이십시오. 이는 #include 문을 사용하여 파일을 .asp 파일에 포함하는 경우 특히 중요합니다. 포함된 스크립트는 다른 파일에 있지만 포함하는 파일의 일부인 것처럼 작동합니다. 변수를 선언하지 않으면 기본 스크립트와 포함된 스크립트 내에서 사용하는 변수가 모두 다른 이름을 사용해야 한다는 점을 잊지 마십시오.
전역 변수는 하나의 .asp 파일에서만 액세스할 수 있습니다. 페이지 밖에서도 변수를 액세스하려면 변수에 세션 또는 응용 프로그램 범위를 지정합니다. 세션 범위가 지정된 변수는 한 사용자가 요청한 한 ASP 응용 프로그램의 모든 페이지에서 사용할 수 있습니다. 응용 프로그램 범위가 지정된 변수는 한 명 이상의 사용자가 요청한 하나의 ASP 응용 프로그램의 모든 페이지에서 사용할 수 있습니다. 세션 변수는 사용자 이름이나 ID 등 한 사용자의 정보를 저장할 때 유용하며, 응용 프로그램 변수는 응용 프로그램의 초기 화면이나 일반적인 값 등 특정 응용 프로그램의 모든 사용자에 대한 정보를 저장하는 데 주로 사용됩니다.
ASP는 변수를 저장할 수 있는 두 가지 기본 개체, Session 개체와 Application 개체를 제공합니다.
세션 또는 응용 프로그램 범위의 개체 인스턴스를 작성할 수도 있습니다. 자세한 내용은 개체 범위 설정을 참조하십시오.
변수에 세션 범위를 지정하려면 값을 개체에서 명명된 항목으로 지정하여 변수를 Session 개체에 저장합니다. 예를 들어, 다음 명령은 두 새로운 변수를 Session 개체에 저장합니다.
<%
Session("FirstName") = "Jeff"
Session("LastName") = "Smith"
%>
Session 개체의 정보를 검색하려면 출력 지시어(<%=) 또는 Response.Write를 사용하여 명명된 항목에 액세스합니다. 다음 예제에서는 출력 지시어를 사용하여 Session("FirstName")의 현재 값을 표시합니다.
Welcome <%= Session("FirstName") %>
사용자의 기본 설정을 Session 개체에 저장한 다음 이 설정들에 액세스하여 페이지에서 사용자에게 반환할 값을 결정할 수 있습니다. 예를 들어, 사용자가 응용 프로그램 첫 페이지의 내용을 텍스트 버전으로 지정하고, 이 선택 값을 이 응용 프로그램에서 사용자가 방문하는 모든 페이지에 적용하도록 할 수 있습니다.
<%
strScreenResolution = Session("ScreenResolution")
If strScreenResolution = "Low" Then
%>
This is the text version of the page.
<% Else %>
This is the multimedia version of the page.
<% End If %>
참고 스크립트에서 세션 범위가 지정된 변수를 두 번 이상 참조할 경우에는 앞의 예제에서처럼 이를 지역 변수에 지정하여 성능을 향상시킬 수 있습니다.
변수에 응용 프로그램 범위를 지정하려면 개체의 명명된 항목에 값을 지정하여 변수를 Application 개체에 저장합니다. 예를 들어, 다음 명령은 응용 프로그램의 초기 화면을 Application 개체에 저장합니다.
<% Application("Greeting") = "Welcome to the Sales Department!" %>
Application 개체에서 정보를 검색하려면 ASP 출력 지시어(<%=) 또는 Response.Write를 사용하여 응용 프로그램의 다른 모든 페이지에서 명명된 항목을 액세스할 수 있게 합니다. 다음 예제는 출력 지시어를 사용하여 Application("Greeting")의 값을 표시합니다.
<%= Application("Greeting") %>
앞에서도 언급했듯이 스크립트에서 반복적으로 응용 프로그램 범위의 변수를 참조하는 경우 지역 변수에 이를 지정하면 성능이 향상됩니다.
상수는 숫자나 문자열 자리에 오는 이름입니다. ADO(ActiveX Data Objects) 등 ASP와 함께 제공된 일부 기본 구성 요소는 스크립트에서 사용할 수 있는 상수를 정의합니다. 구성 요소는 COM 구성 요소가 지원하는 개체와 형식 정보가 들어 있는 구성 요소 형식 라이브러리 파일에서 상수를 선언할 수 있습니다. .asp 파일에서 형식 라이브러리를 선언하면 선언된 상수를 같은 .asp 파일의 모든 스크립트에서 사용할 수 있습니다. 마찬가지로, Global.asa 파일에서 형식 라이브러리를 선언하여 정의된 상수를 응용 프로그램의 모든 .asp 파일에서 사용할 수 있습니다.
형식 라이브러리를 선언하려면 .asp 파일 또는 Global.asa 파일에서 <METADATA> 태그를 사용합니다. 예를 들어, ADO 형식 라이브러리를 선언하려면 다음 명령문을 사용합니다.
<!--METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library" TYPE="TypeLib" UUID="{00000205-0000-0010-8000-00AA006D2EA4}"-->
또는 형식 라이브러리의 UUID(Universal Unique Indentifier)를 사용하는 대신 파일 경로를 사용하여 형식 라이브러리를 참조할 수도 있습니다.
<!-- METADATA TYPE="typelib" FILE="c:\program files\common files\system\ado\msado15.dll"-->
그런 다음에는 형식 라이브러리를 선언한 .asp 파일이나, ADO 형식 라이브러리로 선언되어 Global.asa 파일을 포함하는 응용 프로그램에 상주하는 .asp 파일에서 ADO 상수를 사용할 수 있습니다. 다음 예제에서 adOpenKeyset와 adLockOptimistic은 ADO 상수입니다.
<%
'Recordset 개체를 만들고 엽니다.
Set rstCustomerList = Server.CreateObject("ADODB.Recordset")
rstCustomerList.ActiveConnection = cnnPubs
rstCustomerList.CursorType = adOpenKeyset
rstCustomerList.LockType = adLockOptimistic
%>
다음 표에서는 일반적으로 사용되는 형식 라이브러리와 UUID를 설명합니다.
| 형식 라이브러리 | UUID |
|---|---|
| Microsoft ActiveX Data Objects 2.5 Library | {00000205-0000-0010-8000-00AA006D2EA4} |
| Microsoft CDO 1.2 Library for Windows 2000 Server | {0E064ADD-9D99-11D0-ABE5-00AA0064D470} |
| MSWC Advertisement Rotator Object Library | {090ACFA1-1580-11D1-8AC0-00C0F00910F9} |
| MSWC IIS Log Object Library | {B758F2F9-A3D6-11D1-8B9C-080009DCC2FA} |
<METADATA> 태그에 대한 자세한 내용은 TypeLibrary 선언을 참조하십시오.
이전 버전의 ASP에서는 일부 구성 요소에서 상수를 사용하는 각 ASP 파일에 포함되어야 할 파일에 상수 정의를 제공했습니다. 이번 버전에서도 #include 지시어를 사용하여 상수 정의를 포함할 수 있지만, 형식 라이브러리를 사용하면 사용하기도 쉽고 스크립트도 쉽게 업그레이드할 수 있습니다. 이후 버전에서는 구성 요소에서 상수 정의 파일을 제공하지 않을 수도 있습니다.
참고 #include 지시어 대신 <METADATA> 태그를 사용하여 웹 응용 프로그램의 성능을 향상시킬 수 있습니다.
상수를 직접 정의할 수 있습니다. VBScript에서는 Const 문을 사용하고, JScript에서는 var 문을 사용하여 상수 값을 변수에 할당합니다. 여러 .asp 파일에서 동일한 상수를 사용하려면 상수 정의를 별도의 파일에 두고 해당 상수를 사용하는 각 .asp 파일에 그 파일을 포함합니다.