[JSP] 8.3 include 디렉티브를 이용한 중복된 코드 삽입
2022. 4. 8. 18:05ㆍJAVA/Servlet&JSP
<jsp:include> 액션태그와 include 디렉티브의 차이
- <jsp:include>는 다른 JSP로 흐름을 이동시켜 그 결과물을 현재 위치에 포함시키는 방식
- include 디렉티브(<%@ include file="포함할 파일"%>)는 다른 파일의 내용을 현재 위치에 삽입 시킨 후에 JSP 파일을 자바 파일로 변환하고 컴파일하는 방식
1. include 디렉티브의 처리 방식과 사용법
<%@ include file="포함할 파일" %>
include 디렉티브의 처리 방식
13_includer.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
int number = 10;
%>
<!-- includee.jspf 파일의 내용이 그대로 포함된다. -->
<%@ include file="/Chapter08/14_includee.jspf" %>
공통 변수 DATAFOLDER = "<%=dataFolder %>"
</body>
</html>
14_includee.jspf
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
includer.jsp에서 지정한 번호: <%=number%>
<p>
<%
String dataFolder = "c:\\data";
%>
2. 포함되는 파일의 변경과 적용
- JSP 규약에 따르면 include 디렉티브로 포함한 파일을 변경할 경우, 변경된 내용이 곧바로 반영된다는 보장을 할 수 없다.
3. include 디렉티브의 활용
include 디렉티브의 용도
- 모든 JSP 페이지에서 사용되는 공용 변수 지정
- 저작권 표시와 같은 간단하면서도 모든 페이지에서 중복되는 문장
구축하려는 웹 어플리케이션의 대부분 JSP 페이지가 application 기본 객체나 session 기본 객체에 저장된 속성값을 읽어 사용한다고 가정한다. 이 경우 JSP 페이지는 다음과 같이 앞 부분에서 속성값을 읽어와서 변수에 저장하는 코드를 추가할 것이다.
<%
String memberID = (String) session.getAttribute("MEMBERID");
File tempFolder = (File) application.getAttribute("TEMPFOLDER");
%>
...
<%= memberID %>
...
<%
fw = new FileWriter(tempFolder, "name.tmp");
%>
위의 소스코드에서 session 기본 객체, application 기본 객체로 속성 값을 읽어와 저장하는 대신 한 파일에 필요한 공통 변수를 저장하고 include 디렉티브로 불러오는 방법이 있습니다.
<%@ include file="commonVariable.jspf" %>
<%= memberID %>
<%
fw = new FileWriter(tempFolder, "name.tmp");
%>
또한 다음과 같이 간단한 저작권 문장을 포함하고 있는 파일도 include 디렉티브로 일거올 파일의 좋은 후보입니다.
<%@ page contentType = "text/html; charset=UTF-8" %>
이 사이트의 모든 컨텐츠의 저작권은 최범균에게 있습니다.
4. 코드 조각 자동 포함 기능
JSP 2.0 규약은 자동으로 JSP의 앞뒤에 지정한 파일을 삽입시키는 기능을 제공하고 있습니다.
<%@ include file="/common/variable.jspf" %> <!-- 삽입 시키고 싶은 include 디렉티브 -->
<html>
...
<%@ include file="/common/footer.jspf" %> <!-- 삽입 시키고 싶은 include 디렉티브 -->
</html>
web.xml
<jsp-config>
<jsp-property-group>
<url-pattern>/view/*</url-pattern>
<include-prelude>/common/variable.jspf</include-prelude>
<include-coda>/common/footer.jspf</include-coda>
</jsp-property-group>
</jsp-config>
- jsp-property-group : JSP의 프로퍼티를 지정
- url-pattern : 프로퍼티를 지정할 JSP 파일에 해당하는 URL 패턴
- include-prelude : url-pattern 태그에서 지정한 패턴에 해당되는 JSP 파일의 앞에 자동으로 삽입되는 파일을 지정
- include-coda : url-pattern 태그에서 지정한 패턴에 해당되는 JSP 파일의 뒤에 자동으로 삽입되는 파일을 지정
WEB-INF/web.xml
<jsp-config>
<jsp-property-group>
<url-pattern>/view/*</url-pattern>
<include-prelude>/Chapter08/common/variable.jspf</include-prelude>
<include-coda>/Chapter08/common/footer.jspf</include-coda>
</jsp-property-group>
</jsp-config>
</web-app>
variable.jspf
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
Date current_time = new Date();
%>
footer.jspf
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
김용환 작성함 푸터.
view/autoInclude.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>지금 시간</title>
</head>
<body>
지금 시간은 <%= current_time %> 입니다.
</body>
</html>
References
source code : https://github.com/yonghwankim-dev/JSP2.0/tree/master/jsp2/src/main/webapp/Chapter08
JSP 2.0 프로그래밍 기초부터 중급까지
'JAVA > Servlet&JSP' 카테고리의 다른 글
[JSP] 9.1 쿠키 사용하기 (0) | 2022.04.11 |
---|---|
[JSP] 8.4 <jsp:include> 액션 태그와 include 디렉티브의 비교 (0) | 2022.04.08 |
[JSP] 8.2 <jsp:include> 액션 태그를 이용한 레이아웃 템플릿 (0) | 2022.04.08 |
[JSP] 8.1 <jsp:include> 액션 태그를 이용한 페이지 모듈화 (0) | 2022.04.08 |
[JSP] 7.2 리다이렉트와 자바 스크립트를 이용한 페이지 이동 (0) | 2022.04.08 |