ClassicASP #include 와 Server.Execute 의 차이점
페이지 정보
본문
ASP로 개발 작업을 하다 보면 여러 파일에 공통으로 들어가는 부분이 꼭 있기 마련입니다. 그냥 Copy & Paste 신공을 이용해서 여러 파일에 붙여넣기 해도 되지만 나중에 수정할 일이라도 생기면 그때의 초 난감함은 이루 말할 수가 없습니다.
ASP역시 #include와 Server.Execute라는 명령어를 이용해서 공통파일이나 외부파일을 포함하는 방법을 제공하고 있습니다. 그런데 두가지 모두 외부파일을 포함하는 방법이긴 한데 약간의 차이점이 있습니다.
==============================
========== #include 방법 ==========
==============================
==============================
#include 방법은 IIS에서 ASP파일을 실행 시키기 전에 포함되는 파일을 먼저 처리하여 포함하고 있는 파일에 삽입합니다.
포함되고, 포함해서 이렇게 말하니까.... 조금 이해가 어려울 수도 있는데..다음 예제를 보면 금방 이해 하실 겁니다.
===== test.asp =====
<%
Dim tmp
tmp = 100
%>
이 test.asp 파일을 test_inc.asp 파일에서 #include를 이용해서 포함합니다.
===== test_inc.asp =====
<%
tmp = 1000
%>
<!--#include virtual="test.asp"-->
<%
Response.Write tmp
%>
Response.Write 로 출력하는 tmp의 값은 test.asp에있는 tmp 변수의 값인 100 이 출력됩니다.
결국 #include를 이용해서 포함했을 경우에는 두파일이 우리는 한몸이다를 외치고 IIS역시 너희는 하나다를 인정해 주는 것입니다.
이해를 돕기 위해서 test_inc.asp 파일에 tmp변수를 다시 선언해 보겠습니다.
===== test_inc.asp =====
<%
Dim tmp
tmp = 1000
%>
<!--#include virtual="test.asp"-->
<%
Response.Write tmp
%>
다시 선언된 tmp의 값인 1000 이 출력되지 않고 다음과 같은 에러가 발생합니다.
에러출력 )
Microsoft VBScript 컴파일 오류 오류 '800a0411'
다시 정의된 이름
/test.asp, 줄 2
Dim tmp
----^
변수가 다시 정의 되었다고 에러를 내 버립니다.
#include 방법은 완벽하게 하나로 인식한다는 뜻입니다.
#include 방법은 완벽하게 하나로 인식한다는 뜻입니다.
==============================
======== Server.Execute 방법 ========
==============================
==============================
Server.Execute 방법은 ASP파일 처리시 같이 처리하게 되며 독립된 파일이 포함된 걸로 인식합니다.
위의 예제에서 포함 방법만 Server.Execute로 바꿔 보겠습니다.
===== test.asp =====
<%
Dim tmp
tmp = 100
%>
===== test1.asp =====
<% @LANGUAGE="VBscRIPT" CODEPAGE="65001" %>
<% Option Explicit %>
<%
Dim tmp
tmp = 100
%>
===== test_exe.asp =====
<% @LANGUAGE="VBscRIPT" CODEPAGE="65001" %>
<% Option Explicit %>
<%
Server.Execute("test1.asp")
Dim tmp
tmp = 1000
Server.Execute("test.asp")
Response.Write tmp
%>
test_exe.asp 파일을 실행해보면 변수가 두번 정의 되었다고 에러를 내지도 않고, test.asp파일에 선언된 tmp 의 값인 100 이 출력됩니다.
결국 Server.Execute 방법은 너는너 나는나 인 셈입니다.
그리고 또 한가지 #include처럼 먼저 처리가 되지 않기 때문에 동적으로 포함시키는 것이 가능합니다.
#include는 If 문의 조건에 따라서 동적 포함을 하는 것이 불가능합니다.
그리고 또 한가지 #include처럼 먼저 처리가 되지 않기 때문에 동적으로 포함시키는 것이 가능합니다.
#include는 If 문의 조건에 따라서 동적 포함을 하는 것이 불가능합니다.
댓글목록
등록된 댓글이 없습니다.