파일 포함

SSI(Server-Side Includes) 지시어를 사용하면 웹 서버가 처리하기 전에 다른 파일의 내용을 파일에 삽입할 수 있습니다. ASP는 이러한 메커니즘의 #include 지시어만 구현합니다. .asp 파일에 파일을 삽입하려면 다음 구문을 사용합니다.

<!-- #include virtual | file ="filename" --> 

virtual 및 file 키워드는 파일을 포함하기 위해 사용하는 경로 형식이고, filename은 포함할 파일의 경로와 파일 이름입니다.

포함된 파일에는 특별한 파일 확장명이 필요하지 않지만, 파일 확장명을 .inc로 지정하여 다른 형식의 파일과 구분하는 것이 좋습니다.

Virtual 키워드 사용

virtual 키워드를 사용하여 가상 디렉터리로 시작하는 경로를 나타냅니다. 예를 들어, Footer.inc 파일이 /Myapp라는 가상 디렉터리에 존재하는 경우 다음 행은 Footer.inc의 내용을 다음 행이 포함된 파일에 삽입합니다.

<!-- #include virtual ="/myapp/footer.inc" -->

File 키워드 사용

file 키워드를 사용하여 상대 경로를 나타냅니다. 상대 경로는 포함할 파일이 존재하는 디렉터리부터 시작합니다. 예를 들어, Myapp 디렉터리에 현재 파일이 있고, Header1.inc 파일이 Myapp\Headers 디렉터리에 있는 경우, 다음 행은 현재 파일에 Header1.inc 파일을 삽입합니다.

<!-- #include file ="headers\header1.inc" -->

포함된 파일의 경로 Headers/header1.inc는 포함하는 파일에 대한 상대 경로입니다. 이 #include 문을 포함하는 스크립트가 /Myapp 디렉터리에 없으면 이 문장이 실행되지 않습니다.

또한 인터넷 정보 서비스 스냅인에서 상위 경로 사용 옵션을 선택한 경우 file 키워드를 (..\) 구문과 사용하면 상위 디렉터리에서 파일을 포함할 수 있습니다. 자세한 내용은 ASP 응용 프로그램 구성을 참조하십시오.

포함된 파일의 위치

ASP는 포함된 파일의 위치에 관계 없이 변경 사항을 감지하고 브라우저에서 다음에 이 파일을 포함한 .asp 파일을 요청할 때 파일 내용을 삽입합니다. 그러나 일반적으로는 같은 응용 프로그램이나 웹 사이트에 있는 포함 파일을 보호하는 것이 더 쉽습니다. 보안성을 향상시키려면 포함 파일을 응용 프로그램 내의 다른 디렉터리(예: \Includes)에 둔 다음 실행(웹 서버) 권한을 적절히 적용하는 것이 좋습니다. 자세한 내용은 웹 서버 권한 설정을 참조하십시오.

중요   기본적으로는 모든 파일에 대해 웹 서버 읽기 권한이 적용됩니다. 그러나 사용자가 포함 파일의 내용을 볼 수 없게 하려면 포함 디렉터리에 대한 읽기 권한을 비활성화합니다.

파일 포함:팁과 경고

포함된 파일에 다른 파일을 포함할 수 있습니다. 또한 #include 지시어가 루프를 발생시키지 않는다면, .asp 파일에 동일한 파일을 여러 번 포함할 수 있습니다. 예를 들어, First.asp 파일에 Second.inc 파일이 포함되는 경우, Second.inc에 First.asp 파일을 포함할 수 없으며 자기 자신을 포함할 수도 없습니다. ASP는 이러한 루프 또는 중첩 오류를 감지하여 오류 메시지를 표시하고, 요청된 .asp 파일의 처리를 중단합니다.

ASP는 스크립트 명령을 실행하기 전에 파일을 포함합니다. 따라서 스크립트 명령을 사용하여 포함된 파일의 이름을 만들 수 없습니다. 예를 들어, 다음 스크립트는 ASP가 name 변수에 파일 이름을 할당하기 전에 #include 지시어를 실행하기 때문에 Header1.inc 파일을 열 수 없습니다.

<!--이 스크립트는 잘못된 것입니다. -->
<% name=(header1 & ".inc") %>
<!-- #include file="<%= name %>" -->

스크립트 명령 및 프로시저는 스크립트 구분 기호 <%와 %>, HTML 태그 <SCRIPT>와 </SCRIPT>, 또는 HTML 태그 <OBJECT>와 </OBJECT> 안에 완전히 포함되어야 합니다. 즉, 포함하는 .asp 파일에서 스크립트 구분 기호를 연 다음 포함된 파일에서 구분 기호를 닫을 수 없습니다. 스크립트나 스크립트 명령은 반드시 완전한 하나의 단위로 취급되어야 합니다. 예를 들어, 다음 스크립트는 작동되지 않습니다.

<!--이 스크립트는 잘못된 것입니다. -->
<%
For i = 1 To n
statements in main file
<!--  #include file="header1.inc"   -->
Next
%>

그러나 다음 스크립트는 작동합니다.

<%
For i = 1 to n
statements in main file
%>
<!--  #include file="header1.inc"   -->
<% Next %>

참고   ASP 스크립트에 포함된 파일에, 포함하는 스크립트에서 사용하지 않는 함수와 변수가 많이 있는 경우, 이렇게 사용하지 않는 구조에도 리소스가 필요하므로 성능에 영향을 주어 웹 응용 프로그램의 확장성을 저하시킬 수 있습니다. 그러므로 하나 또는 두 개의 포함 파일을 포함하여 필요하지 않은 다른 정보까지 모두 포함하지 말고, 포함 파일을 작은 여러 개의 파일로 나누어 서버쪽 스크립트에 필요한 파일만 포함하는 것이 좋습니다.

때로는 HTML <SCRIPT></SCRIPT> 태그를 사용하여 서버쪽 파일을 포함하는 것이 좋을 수도 있습니다. 예를 들어, 다음 스크립트는 서버에 의해 실행되는 파일을 상대 경로로 포함하고 있습니다.

<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="Utils\datasrt.inc"></SCRIPT>

다음 표에서는 가상 또는 상대 경로를 통해 SRC 속성이 있는 정확한 포함 파일의 구문을 보여 줍니다.

경로 유형 구문 예제
상대 경로 SRC="경로\파일 이름" SRC="Utilities\Test.asp"
가상 경로 SRC="/경로\파일 이름" SRC="/MyScripts/Digital.asp"
가상 경로 SRC="\경로\파일 이름" SRC="\RegApps\Process.asp"

참고   이 메서드를 사용하여 파일을 포함할 때는 <SCRIPT> 태그 사이에 프로그래밍 로직을 두어서는 안됩니다. 이러한 로직을 추가하려면 다른 <SCRIPT> 태그 집합을 하나 더 사용하십시오.


ⓒ 1997-2001 Microsoft Corporation.All rights reserved.