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 |