include 디렉티브로 다른 JSP 페이지 포함시키기
include 디렉티브를 이용하면 include 디렉티브를 사용한 위치에 다른 JSP의 스크립트 내용을 포함시킬 수 있습니다. 이를 이용하면 여러 JSP 페이지에 걸쳐 중복되는 내용을 하나의 JSP 페이지로 만들고 여러 JSP 페이지에서 include 디렉티브로 포함시켜 중복을 해소할 수 있습니다.
각 페이지별로 각각 존재하는 중복 코드들을 새로운 JSP 페이지로 만들어 두고 include 디렉티브를 사용하여 포함시키는 것입니다. 코드가 중복되는 경우 코드를 수정할 때 각각 따로 수정해 주어야 하며, 중복되는 페이지가 많을 수록 수정에 필요한 시간이 늘어나게 됩니다. 또한 수정하다가 실수로 한 두개의 페이지를 잘 못 수정하여 버그를 야기시킬 수 있습니다.
그러나 중복되는 부분을 추출하여 새로운 JSP 페이지로 만들어두면 코드 수정 시 해당 JSP 페이지만 수정하면 되므로 생산성과 유지보수성에 있어서 훨씬 효율적이라고 할 수 있습니다.
include 디렉티브와 <jsp:include> 액션 태그의 차이점
페이지를 포함시키는 방법으로는 include 디렉티브 이외에도 <jsp:include> 액션 태그를 이용하는 방법이 있습니다. 그러나 내부적인 동작에서 이 둘의 차이점이 존재합니다.
<jsp:include> 액션태그의 경우에는 포함시키는 JSP에서 포함되는 JSP로 흐름이 이동하여 내부적으로 보면 두 개의 JSP 페이지가 순서대로 각각 처리하는 방식인 반면에 include 디렉티브의 경우에는 JSP 페이지가 두 개로 나뉘어져 있지만 include 디렉티브를 사용한 위치에 대상 JSP 페이지의 코드 자체를 포함시켜 하나의 JSP 페이지로 합친 후에 처리하는 방식입니다.
include 디렉티브 사용하기
include 디렉티브는 <%@ include file="JSP파일위치" %> 형태로 사용할 수 있습니다. 다음 예제를 보면 main.jsp에서 body 부분에 sub.jsp를 포함합니다. text 변수는 main.jsp에서 선언했지만 sub.jsp에서 text 변수를 사용하는것을 볼 수 있습니다. 실제 main.jsp가 호출될 때 sub.jsp의 스크립트 코드가 그대로 main.jsp의 include 부분에 포함되기 때문에 페이지 실행 당시에는 하나의 JSP페이지로서 동작하게 됩니다. (이클립스 등의 IDE에서 sub.jsp에 변수가 선언되지 않았다고 오류가 표기될 수 있으나 실제 동작에는 이상이 없습니다.)
더 정확하게 설명하자면 JSP 페이지는 JSP 컨테이너에 의해 서블릿으로 파싱된 후 서블릿으로 동작하게 되는데, include 디렉티브를 사용하면 서블릿으로 파싱되는 과정에서 하나의 JSP로 합친 이후 서블릿으로 변환되는 것입니다.
/main.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%
String text = "include Test";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<%@ include file="/sub.jsp" %>
</body>
</html> |
cs |
포함되는 /sub.jsp
포함되는 파일의 경우에도 contentType을 알맞게 지정해 주어야 합니다.
<%@ page contentType="text/html; charset=UTF-8"%>
<h1><%= text %></h1> |
cs |
main.jsp 호출 결과
응답된 HTML코드
다음글
참고글
'Servlet&Jsp' 카테고리의 다른 글
[서블릿/JSP] <jsp:include> 액션태그와 <%@ include %> 디렉티브 차이점 (0) | 2018.08.27 |
---|---|
[서블릿/JSP] web.xml 설정으로 JSP페이지(jspf 파일) include하기 (1) | 2018.08.23 |
[서블릿/JSP] JSP 페이지 초기화시 ServletConfig의 초기화 파라미터 사용하기 (0) | 2018.08.14 |
[서블릿/JSP] web.xml의 <jsp-file> 태그로 JSP 페이지 URL 설정하는 법. (1) | 2018.08.13 |
[서블릿/JSP] JSP 페이지 초기화와 종료 메서드. jspInit(), jspDestroy() (0) | 2018.08.13 |