JSP 에서 include 를 사용함으로써
include 방식을 포함한 JSP 파일에 불러온 다른 파일(JSP,HTML)의 내용물을 포함시켜 사용할 수 있다.
예를 들면, header 나 footer 등의 내용이 겹칠 경우, 해당 내용물을 JSP 파일에 따로 저장해두고 필요할때마다 불러와 사용하면 된다. 코드의 길이를 줄이고 중복을 없앤다는 특징이 있다.
JSP 에서 include 사용 방식으로는 2가지가 있다.
지시어(directive)와 액션(action) 방식으로, 두 방식은 모두 include 방식을 포함한 JSP 파일에 불러온 다른 파일의 내용물을 포함시켜 사용한다는 점에 동일하지만, 다음과 같은 차이점이 있다.
1. 지시어(directive)
<%@ include file="" %>
- 정적 include 방식
- include 방식을 포함한 JSP 파일에 불러온 파일의 내용물을 전부 끌어와서 같이 컴파일 함.
- 즉, 하나의 서블릿 클래스가 생성됨.
- 공통변수 사용 불가 - 해당 JSP 파일 내의 변수와 불러온 파일 내의 변수가 동일할 시 변수 중복으로 인한 오류가 발생.
2. 액션(action)
<jsp:include page="" />
- 동적 include 방식
- include 방식을 포함한 JSP 파일의 출력결과에서 불러온 파일의 내용물(html 코드)이 같이 출력됨.
- 즉, 같이 컴파일되어 출력되는 것이 아닌, 출력할때 html 코드만 끌어와서 결과물에만 포함됨.
- 공통변수 사용 가능 - 불러온 파일의 html 코드만 끌어오기 때문에 변수가 동일해도 오류 발생하지 않음.
3. 예시
1. 불러온 파일
아래의 해당 코드가 include 방식을 포함한 JSP 파일에 포함된다.
참고로, JSP 에서는 import를 <%@ page import="" %> 와 같은 형태로 지시어(directive)를 직접 입력해줘야 한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- 필요한 클래스를 import 하려면 <%@ page %> page directive(페이지 지시어)를 사용하여 import 를 한다. --%>
<%@ page import="java.util.Date" %> <%-- import 를 여러개 할때는 , 를 이용한다. --%>
<%
// *** 현재시각을 알아오기 *** //
// java.util.Date now = new java.util.Date(); 와 같이 원래 해줘야 한다. java.util. 를 생략하기 위해 위에서 직접 import 를 해준 후 아래와 같이 작성하면 된다.
Date now = new Date(); // 현재시각
String currentTime = String.format("%tF %tT %tA", now, now, now); // yyyy-mm-dd HH:MM:SS 요일명
%> <%-- 스크립틀릿(scriptlet) : 자바코드가 들어감. --%>
© 이 웹페이지의 저작권은 이순신씨에게 있습니다.<br/>
<span style="color: blue; font-weight: bold;"><%= currentTime %></span> <%-- 표현식(expression) --%>
2. include 방식을 포함한 JSP 파일 본문
지시어(directive) 방식과 액션(action) 방식 모두 실행결과물은 동일하다.
다만, 아래의 코드에서 지시어(directive) 방식은 변수 now 의 중복으로 인한 오류가 발생하므로 주석처리를 하였고,
html 코드만 끌어옴으로써 변수 중복 오류가 발생하지 않는 액션(action) 방식으로 사용하였다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String now = "이제는";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 표준액션 중 include 에 대해서 알아봅니다.</title>
</head>
<body>
<h3>책소개</h3>
도서명 : 삼국지<br/>
저자 : 이순신<br/>
<%--
<div>
<%@ include file="01_include.jsp" %> <!-- (참고)파일명인 올바르지 않으면 빨간줄 경고가 뜬다. -->
<!-- 01_include.jsp 에 있는 파일의 내용물을 전부 끌어온 것과 동일하다.
즉, 01_include.jsp 파일에서의 변수명 now 와 위의 String 타입 변수명 now 와 동일하므로 변수 중복으로 인한 오류가 발생한다. -->
</div>
--%>
<div>
<jsp:include page="01_include.jsp" /> <!-- 또는 <jsp:include page=""></jsp:include> -->
<!-- © 이 웹페이지의 저작권은 이순신씨에게 있습니다.<br/>
<span style="color: blue; font-weight: bold;">2022-08-30 10:15:49 화요일</span> 와 동일하다.
즉, 01_include.jsp 파일에서 html 만 끌어오는 것이다. -->
</div>
가격 : 20,000원<br/>
</body>
</html>
'Langauge > JSP, Servlet' 카테고리의 다른 글
[JSP, Servlet] JSP 표준액션 - useBean (0) | 2022.09.01 |
---|---|
[JSP, Servlet] JSP 표준액션 - forward (0) | 2022.09.01 |
[JSP] 지시어 include (0) | 2022.08.29 |
[JSP] Java 에서 날짜 및 현재시각 알아오기 (0) | 2022.08.29 |
[JSP] jsp 문법 / 주석 처리/ 스크립틀릿/ 표현식 (0) | 2022.08.29 |