페이지 사이에서 이동을 제어하거나 자바빈을 생성할 때 주로 사용.
지시어 | 액션 태그 | |
---|---|---|
형식 | <%@ include file="포함할 파일의 경로" %> | <jsp:include page="포함할 파일의 경로" /> |
표현식 | 표현식 사용 불가 | 표현식 사용 가능 |
포함 방식 | 페이지 자체를 현재 페이지에 포함시킨 후 컴파일 진행 | 실행의 흐름을 포함시킬 페이지로 이동시킨 후 실행한 결과를 현재 페이지에 포함시킴 |
변수 | 포함시킨 파일에서 생성한 변수 사용 가능 | 포함시킨 파일에서 생성한 변수 사용 불가 |
page 영역 | 공유됨 | 공유되지 않음 |
request 영역 | 공유됨 | 공유됨 |
OuterPage1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>OuterPage</title>
</head>
<body>
<h2>외부 파일 1</h2>
<%
String newVar1 = "고구려 세운 동명왕";
%>
<ul>
<li>page 영역 속성 : <%= pageContext.getAttribute("pAttr") %></li>
<li>request 영역 속성 : <%= request.getAttribute("rAttr") %></li>
</ul>
</body>
</html>
OuterPage2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>OuterPage</title>
</head>
<body>
<h2>외부 파일 2</h2>
<%
String newVar2 = "백제 온조왕";
%>
<ul>
<li>page 영역 속성 : <%= pageContext.getAttribute("pAttr") %></li>
<li>request 영역 속성 : <%= request.getAttribute("rAttr") %></li>
</ul>
</body>
</html>
IncludeMain.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
// 포함할 파일의 경로
String outerPath1 = "./inc/OuterPage1.jsp";
String outerPath2 = "./inc/OuterPage2.jsp";
// page 영역과 request 영역에 속성 저장
pageContext.setAttribute("pAttr", "동명왕");
request.setAttribute("rAttr", "온조왕");
%>
<html>
<head><title>지시어와 액션 태그 동작 방식 비교</title></head>
<body>
<h2>지시어와 액션 태그 동작 방식 비교</h2>
<!-- 지시어 방식 -->
<h3>지시어로 페이지 포함하기</h3>
<%@ include file="./inc/OuterPage1.jsp"%>
<%--@ include file="<%=outerPath1OuterPage1%>" --%>
<p>외부 파일에 선언한 변수 : <%=newVar1%></p>
<!-- 액션 태그 방식 -->
<h3>액션 태그로 페이지 포함하기</h3>
<jsp:include page="./inc/OuterPage2.jsp" />
<jsp:include page="<%=outerPath2%>" />
<p>외부 파일에 선언한 변수 : <%--=newVar2 --%></p>
</body>
</html>
외부 파일 1은 지시어 방식을 통한 페이지 포함 이고 외부파일 2는 액션 태그를 사용한 페이지 포함이다.
다음 페이지로 요청을 전달하는 것이 목적이므로 이동한 페이지와 request 영역을 공유한다
버퍼를 사용하지 않도록 하였다면 사용할수 없다.
ForwardMain.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
pageContext.setAttribute("pAttr", "김유신");
request.setAttribute("rAttr", "계백");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>액션 태그 - forward</title>
</head>
<body>
<h2>액션 태그를 이용한 포워딩</h2>
<jsp:forward page="/07ActionTag/ForwardSub.jsp" />
</body>
</html>
ForwardSub.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>액션 태그 - forward</title>
</head>
<body>
<h2>포워드 결과</h2>
<ul>
<li>
page 영역 : <%= pageContext.getAttribute("pAttr") %>
</li>
<li>
request 영역 : <%= request.getAttribute("rAttr") %>
</li>
</ul>
</body>
</html>
<jsp:useBean id="자바빈즈 이름" class="사용할 패키지와 클래스명" scope="저장될 영역" />
<jsp:setProperty name="자바빈즈 이름" property="속성명(멤버 변수)" value="설정할 값" />
<jsp:getProperty name="자바빈즈 이름" property="속성명(멤버 변수)" />
UseBeanMain.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>액션 태그 - UseBean</title>
</head>
<body>
<h2>useBean 액션 태그</h2>
<h3>자바빈즈 생성하기</h3>
<jsp:useBean id="person" class="common.Person" scope="request" />
<h3>setProperty 액션 태그로 자바빈즈 속성 지정하기</h3>
<jsp:setProperty name="person" property="name" value="임꺽정" />
<jsp:setProperty name="person" property="age" value="41" />
<h3>getProperty 액션 태그로 자바빈즈 속성 읽기</h3>
<ul>
<li>이름 : <jsp:getProperty name="person" property="name" /></li>
<li>나이 : <jsp:getProperty name="person" property="age" /></li>
</ul>
</body>
</html>
UseBeanForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><title>액션 태그 - UseBean</title></head>
<body>
<h2>액션 태그로 폼값 한 번에 받기</h2>
<form method="post" action="UseBeanAction.jsp">
이름 : <input type="text" name="name" /> <br />
나이 : <input type="text" name="age" /> <br />
<input type="submit" value="폼값 전송" />
</form>
</body>
</html>
UseBeanAction.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head><title>액션 태그 - UseBean</title></head>
<body>
<h3>액션 태그로 폼값 한 번에 받기</h3>
<jsp:useBean id="person" class="common.Person" />
<jsp:setProperty property="*" name="person" />
<ul>
<li>이름 : <jsp:getProperty name="person" property="name" /></li>
<li>나이 : <jsp:getProperty name="person" property="age" /></li>
</ul>
</body>
</html>
ParamMain.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
String pValue = "방랑시인";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>액션 태그 - param</title>
</head>
<body>
<jsp:useBean id="person" class="common.Person" scope="request" />
<jsp:setProperty name="person" property="name" value="김삿갓" />
<jsp:setProperty name="person" property="age" value="56" />
<jsp:forward page="ParamForward.jsp?param1=김병연">
<jsp:param name="param2" value="경기도 양주" />
<jsp:param name="param3" value="<%=pValue%>" />
</jsp:forward>
</body>
</html>
ParamForward.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>액션 태그 - param</title>
</head>
<body>
<jsp:useBean id="person" class="common.Person" scope="request" />
<h2>포워드된 페이지에서 매개변수 확인</h2>
<ul>
<li><jsp:getProperty name="person" property="name" /></li>
<li>나이 : <jsp:getProperty name="person" property="age" /></li>
<li>본명 : <%= request.getParameter("param1") %></li>
<li>출생 : <%= request.getParameter("param2") %></li>
<li>특징 : <%= request.getParameter("param3") %></li>
</ul>
</body>
</html>
ParamForward.jsp
<jsp:include page="inc/ParamInclude.jsp">
<jsp:param name="loc1" value="강원도 영월" />
<jsp:param name="loc2" value="김삿갓면" />
</jsp:include>