2013/09/19 - [Java/Java EE] - JSP 디렉티브(Directive) - include

2013/09/19 - [Java/Java EE] - JSP 액션 태그 와 디렉티브 include 비교


1. <jsp:include> 액션 태그

- 지정한 페이지를 태그가 위치한 부분에 포함시킬때 사용한다.

- 태그가 있는 부분에서 흐름이 실제 페이지로 이동되었다가 돌아온다.

- 결과적으로 포함할 JSP 페이지의 실행 결과를 현재 위치에 포함시킨다.


2. <jsp:include> 액션 태그 사용법

- <jsp:include page="포함할페이지" flush="true"/>

- page 속성 : 포함할 JSP 페이지

- flush 속성 : 지정한 JSP 페이지를 실행하기 전에 출력 버퍼를 플러시 여부 설정


* flush

- 플러시는 액션 태그가 실행하게 되면 이전에 출력 버퍼의 내용이 웹 브라우저에 전달된다.

- HTTP 헤더 정보도 함께 전달되기 때문에 이후로 헤더 정보를 추가해도 반영되지 않는다.


<!-- includeMain.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>include main</title> </head> <body> <p>main 에서 생성</p>

<jsp:include page="includeSub.jsp" flush="false"/> <p>include 이후 내용</p>

</body>
</html>

<!-- 
	실행결과
	
	main 에서 생성
	sub 에서 생성
	include 이후 내용
 -->


<!-- includeSub.jsp -->

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<p>sub 에서 생성</p>


<!-- 페이지 소스보기로 확인한 결과 --> <!-- includeMain.jsp --> <!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>include main</title> </head> <body> <p>main 에서 생성</p> <!-- includeSub.jsp --> <p>sub 에서 생성</p> <p>include 이후 내용</p> </body> </html> <!-- 실행결과 main 에서 생성 sub 에서 생성 include 이후 내용 -->


3. <jsp:include> 액션 태그를 이용한 중복 영역 처리

- 웹 페이지는 일반적으로 상단, 좌측, 우측, 중앙, 하단 등의 요소로 구성되어있다.

- 이 요소들중에서는 모든 페이지에서 고정적인 것들도 있고 변경되는 부분이 있다.

- 공통되는 부분의 유지보수 및 개발 효율 문제를 <jsp:include>를 통해 최소화 할 수 있다.


4. <jsp:param> 포함될 페이지에 파라미터 추가

- <jap:include>를 이용해서 포함할 JSP 페이지에 파라미터를 추가할 수 있다.

- <jsp:include>의 자식 태그로 추가되며, 파라미터의 이름과 값을 직접 또는 표현식으로 지정한다.

- 이미 동일한 이름의 파라미터가 존재할 경우, 기존 파라미터 값을 유지하면서 새로운 값을 추가한다.

- 추가되는 파라미터는 <jsp:include> 를 통해 포함되는 페이지에서만 유효하다.

- setCharacterEncoding() 메서드를 통해서 캐릭터 셋을 지정 한다.


<!-- infoMain.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 border="1" width="100%" cellpadding="0" cellspacing="0">
		<tr>
			<th>회원번호</th>
			<td>XXXXXX</td>
		</tr>
		
		<tr>
			<th>등록비</th>
			<td>70,000원</td>
		</tr>
	</table>
	
	<jsp:include page="infoSub.jsp" flush="false">
		<jsp:param value="3" name="month"/>
	</jsp:include>
</body>
</html>

<!-- 실행 결과  -->


<!-- infoSub.jsp -->

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
	<%
		request.setCharacterEncoding();
		String month = request.getParameter("month");
		if (month != null) {
	%>
	<br>
	<table border="1" width="100%" cellpadding="0" cellspacing="0">
		<tr>
			<th>기간</th>
			<td><%=month%></td>
		</tr>
	
		<tr>
			<th>종류</th>
			<td>
				<%
					if (month.equals("3")) {
							out.print("3개월 헬스");
						} else if (month.equals("6")) {
							out.print("6개월 헬스");
						}
				%>
			</td>
		</tr>
	</table>
	<%
		}
	%>


<!-- 페이지 소스보기로 확인한 결과 -->


<!-- infoMain.jsp  -->

<!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 border="1" width="100%" cellpadding="0" cellspacing="0">
		<tr>
			<th>회원번호</th>
			<td>XXXXXX</td>
		</tr>
		
		<tr>
			<th>등록비</th>
			<td>70,000원</td>
		</tr>
	</table>
	
	<!-- infoSub.jsp -->
	
	<br>
	<table border="1" width="100%" cellpadding="0" cellspacing="0">
		<tr>
			<th>기간</th>
			<td>3</td>
		</tr>
	
		<tr>
			<th>종류</th>
			<td>
				3개월 헬스
			</td>
		</tr>
	</table>
	

</body>
</html>


블로그 이미지

532

처음 프로그래밍을 시작한 개발자들은 Hello World!를 기억 할 것이다. Hello world가 Hell World가 될 줄 몰랐던 한 개발자의 이야기. 게시글의 출처를 표기하며, 출처를 남기지 않고 펌을 하는것에 대해 법적 책임을 묻지 않습니다.

,