JSP에서 include 지시어(directive)는 번역(translation) 단계에 외부 파일을 현재 페이지에 포함시키기 위해 사용됩니다. 이 지시어는 컨테이너에게 번역 단계 동안 다른 외부 파일의 내용을 현재 JSP와 병합하도록 지시합니다. include 지시어는 JSP 페이지 내 어디에든 작성할 수 있습니다.
include 지시어의 기본적인 사용 형식은 다음과 같습니다.
<%@ include file = "상대 URL" %>
지시어에 지정하는 파일명은 실제로 상대 URL입니다. 경로 없이 파일명만 지정하면, JSP 컴파일러는 해당 파일이 현재 JSP와 같은 디렉터리에 있다고 간주합니다.
위 문법을 XML 문법으로 표현하면 다음과 같습니다.
<jsp:directive.include file = "상대 URL" />
include 지시어 활용 예제
include 지시어의 대표적인 활용 사례는 여러 콘텐츠 페이지에서 공통으로 사용되는 헤더(header)와 푸터(footer)를 포함시키는 것입니다. 이렇게 하면 코드 중복을 줄이고 유지보수가 훨씬 쉬워집니다.
예제를 위해 세 개의 파일인 (a) header.jsp, (b) footer.jsp, (c) main.jsp를 아래와 같이 정의해 보겠습니다.
header.jsp 파일 내용
<%!
int pageCount = 0;
void addCount() {
pageCount++;
}
%>
<% addCount(); %>
<html>
<head>
<title>The include Directive Example</title>
</head>
<body>
<center>
<h2>The include Directive Example</h2>
<p>This site has been visited <%= pageCount %> times.</p>
</center>
<br/><br/>footer.jsp 파일 내용
<br/><br/> <center> <p>Copyright © 2010</p> </center> </body> </html>
main.jsp 파일 내용
마지막으로 헤더와 푸터를 포함시키는 메인 페이지입니다.
<%@ include file = "header.jsp" %> <center> <p>Thanks for visiting my page.</p> </center> <%@ include file = "footer.jsp" %>
실행 결과 확인하기
위 세 개의 파일을 모두 루트(root) 디렉터리에 저장한 뒤 브라우저에서 main.jsp에 접속해 보면 다음과 같은 출력 결과를 확인할 수 있습니다.
The include Directive Example This site has been visited 1 times. Thanks for visiting my page. Copyright © 2010
여기서 main.jsp를 새로고침할 때마다 페이지 방문 카운터가 계속 증가하는 것을 확인할 수 있습니다. header.jsp에 선언된 선언문(declaration)과 스크립틀릿(scriptlet)이 번역 단계에서 main.jsp에 그대로 병합되었기 때문입니다.
include 지시어 활용 팁
웹페이지를 설계할 때 창의성을 마음껏 발휘하되, 웹사이트의 동적인 부분은 별도의 파일로 분리한 후 메인 파일에 포함시키는 방식을 권장합니다. 이렇게 하면 나중에 웹페이지의 특정 부분을 수정해야 할 때 해당 파일만 변경하면 되므로 유지보수가 매우 편리해집니다.
또한 include 지시어는 요청 시점이 아니라 번역 시점에 포함된다는 점을 기억하세요. 요청 시점에 동적으로 포함해야 한다면 <jsp:include> 액션 태그를 사용하는 것이 적절합니다.