JSP에서 포함(Include) 처리 방식의 두 가지 방법
JSP에서는 다른 파일을 현재 페이지에 삽입하는 두 가지 방법을 제공합니다. 바로 인클루드 액션(include action)과 인클루드 지시문(include directive)입니다. 두 방식 모두 외부 파일을 페이지에 포함시키지만, 파일이 삽입되는 시점에서 중요한 차이가 있습니다.
1. 인클루드 액션(jsp:include)
인클루드 액션은 생성되고 있는 페이지에 다른 파일의 내용을 삽입할 때 사용합니다. 기본 문법은 다음과 같습니다.
<jsp:include page = "상대 URL" flush = "true" />
인클루드 액션은 JSP 페이지가 서블릿으로 변환(컴파일)되는 시점이 아니라, 페이지가 요청(request)되는 시점에 해당 파일을 삽입합니다. 즉, 매 요청마다 포함된 파일의 최신 내용이 반영되므로, 자주 변경되는 동적 콘텐츠를 포함할 때 적합합니다.
2. 인클루드 지시문(include directive)
반면 인클루드 지시문은 다음과 같은 문법을 사용합니다.
<%@ include file = "상대 URL" %>
이 지시문은 JSP 페이지가 서블릿으로 변환되는 번역(translation) 시점에 파일의 내용을 정적으로 삽입합니다. 따라서 포함된 파일이 이후 변경되더라도, JSP 페이지를 다시 컴파일하기 전까지는 변경 사항이 반영되지 않습니다.
핵심 차이점 정리
- 삽입 시점: 인클루드 액션은 요청 시점에, 인클루드 지시문은 번역(컴파일) 시점에 파일을 삽입합니다.
- 동적/정적 처리: 액션은 매 요청마다 최신 내용을 반영하는 동적 포함이며, 지시문은 한 번 병합된 후 고정되는 정적 포함입니다.
- 사용 사례: 자주 바뀌는 콘텐츠나 동적 리소스에는 액션을, 헤더·푸터처럼 거의 변하지 않는 공통 코드에는 지시문을 사용하는 것이 효율적입니다.
결론적으로, 두 방식의 가장 큰 차이는 파일이 포함되는 시점입니다. 페이지 실행 시마다 최신 상태를 유지해야 한다면 <jsp:include> 액션을, 빌드 시점에 고정된 정적 콘텐츠라면 <%@ include %> 지시문을 선택하면 됩니다.