이전글
<jsp:include> 액션태그와 <%@ include> 디렉티브
include 액션태그와 include 디렉티브는 역할 관점에서 보면 공통적인 부분을 하나의 JSP로 만들어 두고 포함시켜 사용한다는 점에서는 같다고 볼 수 있지만 그 내부 동작이나 그 동작으로 인한 쓰임새는 다른점이 있습니다. 먼저 두 가지 include의 사용 문법은 다음과 같습니다.
include 액션태그 문법
<jsp:include page="포함시킬 JSP 페이지" flush="출력 버퍼 flush 여부" /> |
cs |
include 디렉티브 문법
<%@ include file="포함시킬 JSP 페이지" %> |
cs |
동작 방식의 차이
include 디렉티브는 두 개의 JSP가 서블릿으로 변환되는 시점에 코드를 하나로 합친 다음 변환하기 때문에 코드레벨에서 코드 자체를 포함하는 방식입니다. 따라서 변수 선언을 a 파일에서 하고 b 파일에서는 선언하지 않고 사용하는것도 가능합니다.
include 액션태그는 내부적으로는 include 되는 페이지로 흐름이 이동되었다가 포함되는 페이지의 처리가 끝나면 다시 흐름이 호출한 쪽으로 돌아오는 방식으로 동작합니다. 따라서 두 개의 변환된 서블릿이 동작하는 것입니다. 변수나 데이터를 공유하기 위해서는 request 기본객체의 attribute를 사용하든가 <jsp:param> 액션태그를 사용하여 전달하는 방식을 사용합니다.
활용 방법의 차이
include액션태그와 include 디렉티브의 동작 방식에 차이가 있는 만큼 그 활용 방법에도 차이가 존재하는데, include 액션태그의 경우 여러 페이지에 걸쳐 중복되는 화면 구조를 하나의 파일로 만드는것에 목적이 있다면 include 디렉티브는 최종적으로 포함되는 JSP 페이지와 하나의 JSP 파일로서 동작하기 때문에 여러 JSP 페이지에서 사용하는 공통 변수들을 포함하는데 사용됩니다.
<jsp:include> 액션태그 - 여러 페이지에 걸쳐 중복되는 화면을 하나의 JSP 페이지로 만들어 중복을 제거하는데 사용.
<%@ include %> 디렉티브 - 여러 JSP 파일에 걸쳐 선언되어 사용되는 중복 변수나 중복 로직을 제거하는데 사용.
동적으로 include하려면 inlcude 액션태그를 사용하자
include 디렉티브는 JSP 페이지를 서블릿으로 변환하는 과정에서 코드를 포함하는 방식이기때문에 include될 대상 JSP 페이지를 명시해 주어야 하며, 최초에 호출시 서블릿으로 변환되어 이후에 계속 서비스됩니다.
그러나 include 액션태그는 대상으로 지정된 JSP에게 흐름을 넘기는 방식이기 때문에 매번 서비스 할때마다 원하는 JSP 페이지를 호출할 수 있습니다. 다음과 같이 대상 페이지 경로를 표현식을 이용하여 넘길 수 있습니다. 매번 서비스 할때마다 조건에 따라서 대상 JSP 경로를 다르게 지정하여 사용할 수 있습니다.
<%
String targetPage = "/included.jsp";
%>
<jsp:include page="<%= targetPage %>" flush="false"/> |
cs |
'Servlet&Jsp' 카테고리의 다른 글
[서블릿/JSP] <jsp:forward> 액션 태그 <jsp:param> 태그로 데이터 전달하기 (0) | 2018.09.02 |
---|---|
[서블릿/JSP] <jsp:forward> 액션 태그 설명 및 사용 방법 (0) | 2018.09.02 |
[서블릿/JSP] web.xml 설정으로 JSP페이지(jspf 파일) include하기 (1) | 2018.08.23 |
[서블릿/JSP] include 디렉티브로 다른 JSP 페이지 포함시키기 (0) | 2018.08.16 |
[서블릿/JSP] JSP 페이지 초기화시 ServletConfig의 초기화 파라미터 사용하기 (0) | 2018.08.14 |