JSP에서 다른 JSP 파일을 포함하는 방법은 크게 두 가지가 있습니다.
- include 지시어 (<%@ include file="..." %>)
- include 액션 태그 (<jsp:include page="..." />)
1. include 지시어
<%@ include file="include.jsp" %>
- 정적(Static) include
- JSP가 번역(컴파일) 될 때 원본 파일에 소스 코드가 그대로 합쳐짐
- 즉, 하나의 JSP처럼 동작함
- request 객체를 따로 전달받는 것이 아니라 그냥 코드가 붙여넣기 되는 효과
2. include 액션 태그
<jsp:include page="include.jsp"/>
- 동적(Dynamic) include
- 실행 시점(Runtime) 에 해당 JSP를 실행하고, 그 결과를 포함
- 같은 request / response 객체를 공유
- 필요하면 <jsp:param>을 이용해서 파라미터 전달 가능
🌈 includeAtionTag 예제
form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<form method="post" action="result.jsp">
아이디 : <input type="text" name="id"><br><br>
패스워드 : <input type="text" name="passwd"><br><br>
<input type="submit" value="로그인">
</form>
✔ 사용자가 아이디, 비밀번호를 입력하고 result.jsp로 전송
include.jsp (포함될 JSP)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
include.jsp<br>
<%
request.setCharacterEncoding("UTF-8"); // 한글 깨짐 방지
String id = request.getParameter("id");
String pw = request.getParameter("passwd");
%>
include 아이디 : <%= id %><br>
include 비밀번호 : <%= pw %><br>
✔ include.jsp는 별도 실행되는 파일이지만,
✔ <jsp:include>를 통해 호출되면 같은 request 객체를 공유합니다.
result.jsp (결과 페이지)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8"); // 한글 깨짐 방지
String id = request.getParameter("id");
String pw = request.getParameter("passwd");
%>
아이디 : <%= id %><br>
비밀번호 : <%= pw %><br>
<!-- include 액션 태그 -->
<jsp:include page="include.jsp"/>
✔ result.jsp에서 먼저 아이디, 비밀번호를 출력
✔ 이어서 <jsp:include> 실행 → include.jsp 실행 결과가 이어서 출력됨
실행 결과
아이디 : test
비밀번호 : 1234
include.jsp
include 아이디 : test
include 비밀번호 : 1234
실행 순서 📌
1. form.jsp에서 입력
- 사용자가 id, passwd를 입력하고 submit → result.jsp로 POST 요청.
- 이때 값은 request 객체에 담겨서 넘어갑니다.
2. result.jsp 실행
- request.getParameter("id"), request.getParameter("passwd")로 값을 꺼냄.
- 화면에 아이디 : test / 비밀번호 : 1234 출력.
3. result.jsp 안에서 <jsp:include> 실행
- JSP 컨테이너가 include.jsp를 실행하는데, 새로운 request를 만드는 게 아니라 기존 request를 그대로 전달합니다.
4. include.jsp 실행
- 같은 request이므로 getParameter("id"), getParameter("passwd") 호출 시 똑같이 test, 1234가 나옴.
- 따라서 include 아이디 : test / include 비밀번호 : 1234 출력.
✅ 핵심 포인트
- include 지시어 (<%@ include %>)
→ 컴파일 시점에 코드가 합쳐짐 (정적 include). - include 액션 태그 (<jsp:include>)
→ 실행 시점에 해당 JSP가 실행되고, 실행 결과가 삽입됨.
→ 따라서 request/response 객체를 공유할 수 있음
📌 JSP include 지시어 vs include 액션 태그
1. 공통점
- 다른 JSP 파일을 현재 JSP에 포함할 수 있음
- 코드 재사용과 공통 영역(헤더, 푸터, 메뉴 등) 작성에 활용
2. 차이점
| 구분 | 지시어 include (<%@ include file="..." %>) | 액션 태그 include (<jsp:include page = "..."%>) |
| 처리 시점 | 컴파일(번역) 시점 – 정적 include | 실행(Runtime) 시점 – 동적 include |
| 포함 방식 | 소스 코드가 그대로 합쳐짐 | 실행된 결과(HTML 등)가 포함됨 |
| request/response 공유 | ❌ 공유 안 함 | ✅ 공유함 (같은 request 객체 사용) |
| 파라미터 전달 | 불가능 | 가능 (<jsp:param> 사용) |
| 파일 형태 | 미완성 JSP여도 가능 (코드 조각도 OK, 합쳐져서 완성됨) |
완성된 JSP여야 함 (단독 실행 가능) |
| 대표적 용도 | 공통 레이아웃, 메뉴, header/footer 삽입 (정적 내용) | 실행 결과에 따라 달라지는 부분 동적 삽입 (예: DB 조회 결과, 로그인 상태 출력) |
✅ 기억하기
- 지시어 include = 정적 / 컴파일 시점 / 미완성도 OK
- 액션 include = 동적 / 실행 시점 / 완성된 JSP 필요
'기초 및 언어 > ▶ Java&JSP' 카테고리의 다른 글
| 09. JSP_ActionTag : useBean (0) | 2025.09.10 |
|---|---|
| 08. JSP_ActionTag : fowardAction (0) | 2025.09.10 |
| 04. JSP_여러 값을 request보내기 (1) | 2025.09.08 |
| 03. JSP_requset & post ,get (0) | 2025.09.08 |
| 02. JSP_ import, include (0) | 2025.09.08 |