jsp:include 와 <@include> 의 차이점은 무엇인가요??
jsp:include 와 <@include> 의 차이점은 무엇인가요??
얼핏 사용하기에는 두 include 간의 차이를 모르겠습니다.
동적이다, 정적이다 등 차이점이 좀 있는것같은데...
현업에서 실제로 사용할때 사용하는 방식은 무엇이며 두 차이점이 궁금합니다.
include 액션 태그는 include 디렉티브(<%@include>) 와 함께 다른 페이지를 현재 페이지에 포함시킬 수 있는 기능을 가지고 있습니다.
포함되는 페이지는 HTML, JSP, Servlet 페이지 등 모두 가능합니다.
1. include 액션 태그
서버측 include가 아닌 클라이언트측의 include라 생각하시면 됩니다. 출력 결과만(html코드)을 include 하기 때문에 include 되는 페이지와 변수를 같이 사용할 수 없습니다.
2. include 디렉티브(<%@include>)
서버측 include 라고 생각하면 됩니다. 즉 소스 실행전에 include가 되며 소스 실행전 포함됨으로 변수를 같이 사용할 수 있습니다.
즉 include 디렉티브(<%@include>) 방식은 JSP의 라이프 사이클 중 JSP 페이지 번역 및 컴파일 단계에서 필요한 JSP를 읽어서 메인 JSP의 자바 소스 및 클래스에 포함 시키는 방식이고 이와 반대로, include 액션 태그 방식은 페이지가 호출될 때마다 지정된 페이지를 불러들여서 수행도록 되어 있다고 보면 됩니다. 따라서 처리 속도 측면에서는 include 디렉티브(<%@include>) 방식이 빠른편입니다.
하지만 속도만을 생각하며 모든 화면을 include 디렉티브(<%@include>)방식으로 구성했다가는 잘 수행되던 화면에서 오류가 발생할 수 있습니다. include 디렉티브(<%@include>) 방식을 사용하면 메인 JSP에 추가되는 JSP가 포함되기에 이 때 추가되는 JSP와 메인 JSP에 동일한 이름의 변수가 있으면 심각한 오류가 발생할 수 있기 때문입니다.
따라서 실무에서 include 디렉티브(<%@include>)는 주로 조각 코드를 삽입할 때 사용되고, include 액션 태그는 페이지를 모듈화할 때 사용됩니다. 즉 템플릿 페이지를 작성할 때 사용된다고 보시면 됩니다.
공통적인 중복 부분은 JSP 파일로 모듈화하여 include 액션 태그로 불러주면 편리합니다.
페이지 모듈화를 하면 사이트의 유지보수가 쉬워지며 변경 사항이 발생할 때 모듈화한 페이지만 수정해도 모든 페이지가 수정되는 강점을 가집니다.