Include

include를 이용하면 jsp파일 하나를 다른 jsp파일에 포함시킬 수 있다.

include를 활용하는 방식은 두가지이다.

액션태그 <jsp:include>

우선 액션태그를 활용한 include를 알아보자.

<jsp:include page="jsp파일"/>을 이용하면 흐름이 다음과 같아진다.

포함시킨 jsp파일으로 넘어가서 코드 실행 후 다시 원래 jsp파일로 돌아와서 나머지 부분을 실행한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>includeMain_jsp.jsp</title>
<style>
	.body{
		height:500px;
		border:1px solid red;
	}
</style>
</head>
<body>
	<!-- 상단부분(Header)를 include하기 -->
	<jsp:include page="Header.jsp"/>
	<div class="body">
		Body
		<%
			// Header.jsp에서 선언된 변수 num은 다른 jsp파일에서 호환되지 않는다
			// out.println(num);
		
			String name = "Sangmin Kim";
		%>
	</div>
	<!-- 하단부분(Footer)를 include하기 -->
	<jsp:include page="Footer.jsp"/>
</body>
</html>

배경이 되는 includeMain_jsp.jsp파일을 만들었다.

각 파일에 선언된 변수가 호환되는지 확인하기 위해 name이라는 변수를 선언했다.

그리고 상단에 include시킬 Header.jsp와 하단에 include시킬 Footer.jsp를 만들어보자.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<style>
	#h{
		height:100px; background:green;
	}
</style>
<div id="h">Header</div>
<%
	int num = 111;
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<style>
	#f{
		height:50px; background:#ddd;
	}
</style>
<div id="f">Footer</div>
<%-- <%= name %>	 includeMain_jsp.jsp에서 선언된 name은 호환되지 않음 --%>

Header.jsp에서는 num이라는 변수를 선언해주고, Footer.jsp에서는 앞서 선언한 name 변수를 사용해보았다.

결론은 다른 jsp의 변수들은 그대로 사용할 수 없다.

디렉티브 <%@ include %>

디렉티브 방식을 사용하면 액션태그와는 코드 진행 흐름이 바뀐다.

액션태그는 아예 include시킨 파일로 넘어가서 진행했다면, 디렉티브 방식은 include시킨 파일의 실행문을 import해와서 하나의 페이지로 처리한다.

또 하나 특이한 점은 include시킬 파일의 확장자는 .jsp가 아닌 .jspf(JSP Frangment)를 이용할 수 있다. 꼭 이렇게 해야지만 디렉티브 방식을 사용할 수 있는건 아니지만, 해당 파일이 include되는 파일이라는 것을 명시하기 위해 사용한다.

includeMain_jstf.jsp에다가 Header.jstf와 Footer.jstf를 include시켜보자.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
	String tel = "010-1234-5678";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>includeMain_jspf.jsp</title>
<style>
	.body{
		height:300px; background:#ddd;
	}
</style>
</head>
<body>
	<!-- 조각파일(.jspf) include -->
	<%@ include file="HeaderF.jspf" %>
	
	<div class="body">
		Body
		<h1>include된 조각파일에서 선언된 변수 사용하기</h1>
		Name : <%= name %><br>
		Address : <%= addr %><br>
		Contact : <%= tel %><br>
		<c:out value="Hello World!"/>
	</div>
	
	<%@ include file="FooterF.jspf" %>
	
</body>
</html>

액션태그와는 다르게 include된 파일에서 선언된 변수를 가져다 쓸 수 있다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<style>
	.headerf{
		height:100px; background:lightblue
	}
</style>
<div class="headerf">Header Fragment(<%= tel %>)</div>
<%
	String name = "Sangmin Kim";
	String addr = "Gangnam-gu, Seoul";
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<style>
	.footerf{
		height:70px; background:pink;
	}
</style>
<div class="footerf">Footer Fragment(<%= name %>, <%= addr %>)</div>

Header.jspf에서 선언된 name과 addr변수를 includeMain_jstf.jsp에서 출력한 모습을 확인할 수 있다.

'JSP' 카테고리의 다른 글

11.30.(수) JSP(8): JSTL(2)  (0) 2022.12.05
11.30.(수) JSP(8): JSTL(1)  (0) 2022.12.04
11.29.(화) JSP(6): 웹페이지 배포  (0) 2022.12.01
11.29.(화) JSP(5): Error  (0) 2022.11.30
11.29.(화) JSP(4): Session  (0) 2022.11.30

+ Recent posts