상세 컨텐츠

본문 제목

Server.Excute객체를 사용하여 동적으로 페이지를 포함하는 방법

프로그래밍/JAVA

by 라제폰 2009. 1. 23. 17:01

본문

Server.Excute객체를 사용하여 동적으로 페이지를 포함하는 방…

 저자: wowhoon |  날짜: 2002년 03월 21일  


이번시간에 살펴볼 객채는 ASP 3.0 에서 추가된 Server.Excute 객체를 이용하여 동적으로 페이지를 포함하는 방법이다.

Server.Excute 객체의경우는 SSI (Server Side Include)대신 사용할수 있는객체이며 페이지를 모듈화 하는데에도 많이 사용된다. Server.Excute의 동작원리를 살펴 보면 아래 그림과 같다.

위의 그림을 보면 서버의 Page1.asp에서 Server.Excute가 Page2.asp 를 호출하게되는데 일반적으로 Page1에서 <!--#include file="page2.asp"--> 을 이용해서 호출하게되면 Page2.asp의 내용이 포함된다.

하지만 Server.execute를 사용하게되면 Page1.asp를 호출한 후 Server.Excute가 실행되면 Page2에게 제어권을 넘겨주게 된다.

Page2.asp의 실행이 완료되게 되면 다시 페이지의 제어권은 page1.asp로 제어권이 복귀 된다. 이때 제어권과 함께 Request, Response등의 내장 객체가 함께 전송이 된다.

이 Server.Excute의 가장 큰 장점은 동적으로 페이지를 포함하게 할수 있다는 점이라고 생각한다.

아마도 많은 독자들이 SSI를 사용하게 되면서 동적으로 Include 할방법에 대해서 많이 고심하고 있을것으로 생각이된다.(사실 필자도 많은 고민을 했었다.)

보통 의경우 아래의 예제처럼 동적으로 페이지를 포함하였을것이다.

<%

Select Case intpage

Case "1" 

%>

  <!--#include file="page1.asp"-->

<% Case "2" %>

  <!--#include file="page2.asp"-->

<% Case "3" %>

  <!--#include file="page3.asp"-->

<% End Select %>

위의 코드는 동작은 정상적으로 되지만 내부를 살펴 보게되면 개발자의 의도와 다르게 동작한다. ASP페이지의 특징은 페이지가 호출이되면 페이지가 실행되기전에 우선 각각의 SSI파일을 읽어 오게 된다.

우선 SSI파일들이 로드가되면 ASP파일이 실행되게되고, 따라서 Include파일이 페이지에 모두 포함되게 되며, 이는 필요없는 페이지를 모두 로딩하게 됨으로 성능에 악영향을 미치게된다.또한 이로 인한 로직상의 예기치 못한 오류도 발생하기도 했다.

하지만 ASP 3.0으로 오면서 이문제가 Server.Execute를 사용함으로 해결이 되게 되었다. 실제로 예제를 보면서 ServerExecute를 사용해보도록 하겠다.

 <%

   Server.Excute("page2")

 %>


이 경우 만일 페이지를 조건에 따라서 다른 페이지를 동적으로 포함되게 할경우 매우 유용하게 사용할 수 있다. 다음의 예제를 보도록 하자

 <%

   If intpage = 3 then

      Server.Excute("page1.asp")

   Else

      Server.Excute("page2.asp")

   End if

 %>

위의 코드와 같이 자신에게 잘 맛도록 편집하고 잘다듬으면 동적으로 페이지를 효과적으로 호출할수 있을것이다.


관련글 더보기