외부 파일을 포함한다는 점이 비슷하지만, include 액션 태그는 외부 파일이 실행된 후 현재 페이지로 제어를 반환한다. 또한, include 태그의 실행 내용이 현재 JSP 페이지의 출력 버퍼에 추가 저장되어 출력된다.
구분 | include 액션 태그 | include 디렉티브 태그 |
---|---|---|
처리 시간 | 요청 시 자원을 포함 | 번역 시 자원을 포함 |
기능 | 별도의 파일로 요청 처리 흐름을 이동 | 현재 페이지에 삽입 |
데이터 전달 방법 | request 기본 내장 객체나 param 액션 태그를 이용하여 파라미터를 전달 | 페이지 내의 변수를 선언한 후 변수에 값을 저장 |
용도 | 화면 에리아웃의 일부분을 모듈화할 때 주로 사용 | 다수의 JSP 웹 페이지에서 공통으로 사용되는 코드나 저작권과 같은 문장을 포함하는 경우에 사용 |
기타 | 동적 페이지에 사용 | 정적 페이지에 사용 |
package com.dto;
import java.io.Serializable;
public class MemberBean implements java.io.Serializable {
private int id;
private String name;
public MemberBean(){
}
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
}
public String getName(){
return name;
}
public void setId(String name){
this.name=name;
}
forward.jsp
<h4>구구단 출력하기</h4>
<jsp:forward page="forward_data.jsp">
<jsp:param value="5" name="num"/>
</jsp:forward>
forward_data.jsp
<%
int num=Integer.parseInt(request.getParameter("num"));
for(int i=1;i<=9;i++){
out.println(num+" * "+i+" = "+num*i+"<br>");
}
%>
실행 결과
include.jsp
<h4>구구단 출력하기</h4>
<jsp:include page="include_data.jsp" flush="false">
<jsp:param value="5" name="num"/>
</jsp:include>
include_data.jsp(forward_data.jsp와 같다)
<%
int num=Integer.parseInt(request.getParameter("num"));
for(int i=1;i<=9;i++){
out.println(num+" * "+i+" = "+num*i+"<br>");
}
%>
실행 결과
GuGuDan 클래스
package ch04_ex.com.dao;
public class GuGuDan {
public int process(int num1, int num2){
return num1*num2;
}
}
useBean.jsp
<h4>구구단 출력하기</h4>
<jsp:useBean id="gugu" class="ch04_ex.com.dao.GuGuDan"/>
<%
for(int i=1;i<=9;i++){
out.println(5+"*"+(i)+"="+gugu.process(5,i)+"<br>");
}
%>
실행 결과
Book 클래스
package dto;
import java.io.Serializable;
public class Book implements Serializable {
private String bookId; //도서 아이디
private String name; //도서명
private Integer unitPrice; //가격
private String author; //저자
private String description; //설명
private String publisher; //출판사
private String category; //분류
private long unitsInStock; //재고 수
private long totalPages; //페이지 수
private String releaseDate; //출판일(월/년)
private String condition; //신규,중고,E북
public Book() {
super();
// TODO Auto-generated constructor stub
}
public Book(String bookId, String name, Integer unitPrice) {
this.bookId = bookId;
this.name = name;
this.unitPrice = unitPrice;
}
public String getBookId() {
return bookId;
}
public void setBookId(String bookId) {
this.bookId = bookId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(Integer unitPrice) {
this.unitPrice = unitPrice;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public long getUnitsInStock() {
return unitsInStock;
}
public void setUnitsInStock(long unitsInStock) {
this.unitsInStock = unitsInStock;
}
public long getTotalPages() {
return totalPages;
}
public void setTotalPages(long totalPages) {
this.totalPages = totalPages;
}
public String getReleaseDate() {
return releaseDate;
}
public void setReleaseDate(String releaseDate) {
this.releaseDate = releaseDate;
}
public String getCondition() {
return condition;
}
public void setCondition(String condition) {
this.condition = condition;
}
}
BookRepository 클래스
package dao;
import java.util.ArrayList;
import dto.Book;
public class BookRepository {
ArrayList<Book> listOfBooks=new ArrayList<Book>();
public BookRepository(){
Book book1=new Book("B0001","HTML5+CSS",10000);
book1.setDescription("워드나 PPT 문서를 만들 수 있나요?");
book1.setCategory("Hello Coding");
book1.setPublisher("한빛미디어");
book1.setAuthor("황재호");
Book book2=new Book("B0002","쉽게 배우는 자바 프로그래밍",27000);
book2.setDescription("객체 지향의 핵심과 자바의 현대적 기능");
book2.setCategory("IT모바일");
book2.setPublisher("한빛미디어");
book2.setAuthor("우종중");
Book book3=new Book("B0003","스프링4 입문",27000);
book3.setDescription("스프링은 아키텍쳐를 이해하는게 중요합니다!");
book3.setCategory("IT모바일");
book3.setPublisher("한빛미디어");
book3.setAuthor("하세가와 유이치(권은철)");
listOfBooks.add(book1);
listOfBooks.add(book2);
listOfBooks.add(book3);
}
public ArrayList<Book> getAllBooks(){
return listOfBooks;
}
}
books.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="dto.Book"%>
<%@page import="java.util.ArrayList"%>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<title>도서목록</title>
</head>
<body>
<%@ include file="menu.jsp" %>
<div class = "jumbotron">
<div class = "container">
<h1 class = "display-3">
도서 목록
</h1>
</div>
</div>
<div class="container">
<div class="row">
<jsp:useBean id="books" class="dao.BookRepository"/>
<%
ArrayList<Book> listOfBooks = books.getAllBooks();
for (Book b:listOfBooks) {
%>
<div class="col-md-12">
<h4><%="["+b.getCategory()+"] " + b.getName()%></h4>
<br>
<p><%=b.getDescription()%>
<p><%=b.getAuthor() + " | " + b.getPublisher() + " | " + b.getUnitPrice() + "원"%>
<hr style="border-style: dotted;" />
</div>
<%
}
%>
</div>
</div>
<%@ include file="footer.jsp" %>
</body>
</html>
실행 결과