본문 바로가기
Dev/Java

include 디렉티브

by vellahw 2022. 9. 1.

ㅋhttps://tavi.tistory.com/19?category=1086720

 

<jsp:include> 액션 태그

한 웹 사이트를 구성하는 페이지들은 동일한 상단 메뉴와 좌측 메뉴 그리고 하단 푸터(footer)를 갖는 경우가 많다. 액션 태그와 include 디렉티브를 사용하면 이런 공통 화면을 모듈화 해서 코드가

tavi.tistory.com

 


include 디렉티브도 <jsp:include>와 마찬가지로 지정한 페이지를 현재 위치에 포함 시켜 주는 기능을 제공한다.

하지만 include 디렉티브는 포함되는 방식에 있어 큰 차이를 보이는데

<jsp:include>는 다른 JSP로 흐름을 이동시켜 그 결과물을 현재 위치에 포함 시키는 반면,

include 디렉티브는 다른 파일의 내용을 현재 위치에 삽입한 후에 JSP 파일을 자바 파일로 변환하고 컴파일 하는 방식이다.

<jsp:include> 액션 태그와 include 디렉티브의 차이
  <jsp:include> include 디렉티브
처리 시간 요청 시간에 처리 JSP 파일을 자바 소스로 변환할 때 처리
기능 별도의 파일로 요청 처리 흐름을 이동 현재 파일에 삽입 시킴
데이터
전달 방법
request 기본 객체나 <jsp:param>을 이용한
파라미터 전달
페이지 내의 변수를 선언한 후, 변수에 값 저장
용도 화면의 레이아웃의 일부분을 모듈화 할 때
주로 사용
다수의 JSP 페이지에서 공통으로 사용되는 변수를 지정하는 코드나 저작권과 같은 문장을 포함함

 


 

 

1. include 디렉티브의 처리 방식과 사용법

<%@ include file="포함할파일" %>

여기서 file 속성은 include 디렉티브를 사용하여 포함할 파일의 경로를 나타낸다.

include 디렉티브를 사용하면 JSP 파일을 자바 파일로 변환하기 전에 include 디렉티브에서 지정한 파일의 내용을 해당 위치에 삽입하고 그 결과로 생긴 자바 파일을 컴파일 하게 된다.

 

디렉티브 처리 방식

쉽게 말해 include 디렉티브는 코드만 가져와서 코드가 합쳐진다.

 

<%@ page contentType="text/html; charset=EUC-KR" %>
<html>
<head><title>include 디렉티브</title></head>
<body>
<%
	int number = 10;
%>

<%@ include file="includee.jspf" %>  //includee.jspf의 내용이 그대로 포함됨

공통변수 DATAFOLDER = "<%= dataFolder %>"
</body>
</html>

▲ includer.jsp

선언하지 않은 변수인 dataFolder를 사용하고 있는데 이 dataFolder는

include 하고 있는 includee.jspf 파일에 포함 되어 있어 includer.jsp에서도 사용 할 수 있다.

<%@ page contentType="text/html; charset=EUC-KR" %>
<html>
<head><title>includee</title></head>
<body>
includer.jsp에서 지정한 번호: <%= number %>
<p>
<%
	String dataFolder = "c:\\data";
%>
</body>
</html>

▲ includee.jspf

실행 결과

 

include 디렉티브는 코드 차원에서 삽입이 이루어지기 때문에 삽입 되는 파일(includee.jspf)에서 선언한 변수(dataFolder)를 삽입하는 JSP(includer.jsp)에서 사용 할 수 있게 된다.

 

 

 

2. include 디렉티브의 활용

일반적으로 <jsp:include> 액션 태그는 레이아웃의 한 구성 요소를 모듈화 하기 위해 사용 되는 반면
include 디렉티브는 다음과 같은 두 가지 형태로 주로 사용 된다.

  • 모든 JSP 페이지에서 사용되는 변수 지정
  • 저작권 표시와 같은 간단하면서도 모든 페이지에서 중복 되는 문장

 

include 디렉티브를 사용하면 편리하게 공용 변수를 선언할 수 있다.

기본 객체로부터 특정 값을 읽어와 변수에 저장한 후 그 변수를 사용하는 JSP 페이지가 많다면, 변수를 지정하는 부분을 별도의 파일에 작성한 후 그 파일을 include 디렉티브로 포함 시키면 좋은 방법이 된다.

 

 

 

3. 코드 조각 자동 포함 기능

모든 JSP 페이지가 소스 코드 위아래에 다음과 같이 include 디렉티브를 사용하여 공통 코드를 삽입 한다고 가정해보면

다수의 JSP 페이지에서 앞뒤로 같은 파일을 include 디렉티브를 사용해서 삽입할 경우 여러 JSP에서 중복된 코드를 작성해 주어야 할 것이다.

중복 되는 코드가 많다면 web.xml 파일에 다음과 같은 설정 정보를 추가해 줌으로써 코드 중복을 방지 할 수 있다.

<jsp-config>
	<jsp-property-group>
		<url-pattern>include 될 폴더 경로</url-pattern>
		<include-prelude>위에서 지정한 JSP 파일의 앞에 자동으로 삽입 될 파일 경로</include-prelude>
		<include-coda>위에서 지정한 JSP 파일의 뒤에 자동으로 삽입 될 파일 경로</include-coda>
	</jsp-property-group>
</jsp-config>

이러한 기능이 없다면 jsp 파일들을 일일이 복사 붙여넣기 해야 됐을 것이다.

 


 

<jsp-config>
	<jsp-property-group>
		<url-pattern>/aug31/view/*</url-pattern>
		<include-prelude>/aug31/common/variable.jspf</include-prelude>
		<include-coda>/aug31/common/footer.jspf</include-coda>
	</jsp-property-group>
</jsp-config>

<!-- web.xml --!>
  1. /aug31/view/ 경로에 있는 모든 파일에 적용
  2. /aug31/view/ 경로에 있는 모든 파일의 앞에 variable.jspf를 자동으로 삽입
  3. /aug31/view/ 경로에 있는 모든 파일의 뒤에 footer.jspf를 자동으로 삽입

 

<%@ page contentType = "text/html; charset=euc-kr" %>
<%
	java.util.Date CURRENT_TIME = new java.util.Date();
%>

<!-- variable.jspf --!>
<%@ page contentType = "text/html; charset=euc-kr" %>
<hr>
<br>
자동으로 하단부에 include됨

<!-- footer.jspf --!>

 

<%@ page contentType = "text/html; charset=euc-kr" %>
<html>
<head><title>자동 Include 실행</title></head>
<body>

현재 시간은 <%= CURRENT_TIME %> 입니다.  //variable.jspf에서 지정한 변수 사용

</body> 
</html>

▲ /aug31/view/autoInclude.jsp

web.xml 파일에서 /aug31/view/로 들어오는 모든 요청에 대해 자동으로 variable.jspf가 JSP의 앞에 삽입 되도록 설정 했기 때문에 이 jsp 파일은 variable.jspf에서 변수를 사용 가능

실행 결과

 

 

'Dev > Java' 카테고리의 다른 글

세션 session  (0) 2022.09.02
자바빈(JavaBean)  (0) 2022.09.02
<jsp:include> 액션 태그  (0) 2022.09.01
객체 지향 프로그래밍  (0) 2022.08.26
12. 그룹 알고리즘 (Group Algorithm)  (0) 2022.08.08

댓글