1. <jsp:include> 액션 태그
: 현재의 JSP 파일에 다른 파일(JSP, HTML)을 포함시킴
: 코드의 중복 제거
<jsp:include page="포함할페이지" flush="true/false" />
- sub.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<p>
sub.jsp에서 생성한 내용
</p>
- main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>main</title>
</head>
<body>
main.jsp에서 생성한 내용
<jsp:include page="sub.jsp" flush="false" />
include 이후의 내용
</body>
</html>
2. <jsp:include> 액션 태그를 이용한 중복 영역 처리
<layout1>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>layout1</title>
</head>
<body>
<table width="400" border="1" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2">
<jsp:include page="/module/top.jsp" flush="false" />
</td>
</tr>
<tr>
<td width="100" valign="top">
<jsp:include page="/module/left.jsp" flush="false" />
</td>
<td width="300" valign="top">
<!-- 내용 부분 : 시작 -->
레이아웃1
<br /><br /><br />
<!-- 내용 부분 : 끝 -->
</td>
</tr>
<tr>
<td colspan="2">
<jsp:include page="module/bottom.jsp" flush="false" />
</td>
</tr>
</table>
</body>
</html>
- top.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
상단 메뉴 :
<a href="/chap07/home.jsp">홈</a>
<a href="/chap07/info.jsp">정보</a>
- left.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
좌측 메뉴 :
- bottom.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
하단 메뉴 :
소개 | 도움말 | 약관 | 사이트맵
<layout2>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>layout1</title>
</head>
<body>
<table width="400" border="1" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2">
<jsp:include page="/module/top.jsp" flush="false" />
</td>
</tr>
<tr>
<td width="100" valign="top">
<jsp:include page="/module/left.jsp" flush="false" />
</td>
<td width="300" valign="top">
이 부분은 layout2.jsp가 생성한다. <br>
레이아웃2
<br /><br /><br />
</td>
</tr>
<tr>
<td colspan="2">
<jsp:include page="module/bottom.jsp" flush="false" />
</td>
</tr>
</table>
</body>
</html>
3. 포함할 페이지에 파라미터 추가하기 : <jsp.param>
: <jsp.include> 태그 하위에 작성
: 이미 동일한 이름의 파라미터 존재 시 기존 파라미터의 값을 유지하면서 새로운 값(high priority)을 추가
<예시 1>
- info.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>INFO</title>
</head>
<body>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td>제품번호</td>
<td>XXXX</td>
</tr>
<tr>
<td>가격</td>
<td>10,000원</td>
</tr>
</table>
<jsp:include page="infoSub.jsp" flush="false">
<jsp:param name="type" value="A" />
</jsp:include>
</body>
</html>
- infoSub.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String type = request.getParameter("type");
if(type == null) {
return;
}
%>
<br>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td>타입</td>
<td><b><%= type %></b></td>
</tr>
<tr>
<td>특징</td>
<td>
<% if(type.equals("A")) { %>
강한 내구성
<% } else if(type.equals("B")) { %>
뛰어난 대처 능력
<% } %>
</td>
</tr>
</table>
<예시 2>
- body_main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
include 전 name 파라미터 값: <%= request.getParameter("name") %>
<hr>
<jsp:include page="body_sub.jsp" flush="false">
<jsp:param name="name" value="최범균"/>
</jsp:include>
<hr/>
include 후 name 파라미터 값: <%= request.getParameter("name") %>
</body>
</html>
- body_sub.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
body_sub에서 name 파라미터 값: <%= request.getParameter("name") %>
<br />
name 파라미터 값 목록:
<ul>
<%
String[] names = request.getParameterValues("name");
for(String name : names) {
%>
<li> <%= name %> </li>
<%
}
%>
</ul>
'JSP/Servlet > 4. 페이지 모듈화와 요청 흐름 제어' 카테고리의 다른 글
Day 53 : <jsp:forward> 액션 태그를 이용한 JSP 페이지 이동 (0) | 2021.12.30 |
---|---|
Day 53 : include 디렉티브를 이용한 중복된 코드 삽입 (0) | 2021.12.30 |