===================================================<<forward>>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>forwardForm.jsp - 포워딩 연습</h1>
<form action="forwardPro.jsp" method="post">
<!--
GET 방식에서 URL 에 전달되는 파라미터를 숨겨야하거나
POST 방식에서 입력받는 데이터 외의 데이터를 전달해야하는 경우
<input type="hidden"> 태그를 사용하여 전달 가능
-->
<input type="hidden" name="jumin" value="901010-1234567">
<h3>아이디 : <input type="text" name="id"></h3>
<h3>패스워드 : <input type="password" name="passwd"></h3>
<input type="submit" value="전송">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>forwardPro.jsp</h1>
<%
request.setCharacterEncoding("UTF-8");
// 폼파라미터로 전달받은 데이터(아이디, 패스워드) 가져와서 변수에 저장 후 출력
String id = request.getParameter("id");
String passwd = request.getParameter("passwd");
// input type="hidden" 태그로 전달받은 파라미터로 request.getParameter() 메서드로 가져올 수 있음
String jumin = request.getParameter("jumin");
// forward 액션 태그에 포함시켜 전달할 데이터를 변수에 저장
int num = 100;
// out.print("<h3>아이디 : " + id + "</h3>");
// out.print("<h3>패스워드 : " + passwd + "</h3>");
%>
<h3>아이디 : <%=id %></h3>
<h3>패스워드 : <%=passwd %></h3>
<h3>주민번호 : <%=jumin %></h3>
<%--
액션 태그(Action Tag)
- JSP 페이지 내에서 자바 코드 등을 직접 사용하지 않고
XML 형식의 태그 문법을 활용하여 동일한 작업을 수행하도록 하는 태그(기능)
- <jsp:액션태그명 속성명="값" /> 형태로 사용하며
태그 내에 다른 태그를 포함해야하는 경우 끝 태그 </jsp:액션태그명> 을 사용해야함
=> 주의! 반드시 끝태그 또는 끝 표시(/>) 를 포함해야함
- 액션 태그명 : forward, include, useBean, setProperty 등
1. forward 액션 태그
- pageContext 객체의 forward() 메서드와 동일한 기능을 제공하는 액션 태그
즉, 페이지 이동 처리를 수행하는 액션 태그
- 현재 페이지의 request 객체를 그대로 유지하여 페이지 이동 수행
=> 주소표시줄의 URL(주소)이 그대로 유지되며, request 객체에 저장된 데이터가 유지됨
= Dispatcher 방식 포워딩
- 포워딩 시 전달할 데이터는 주소(URL) 뒤에 파라미터 형식으로 붙여서 전달하거나
(ex. forwardPro.jsp?id=admin)
<jsp:param> 태그를 사용하여 데이터를 포함시켜 전달 가능(= input type="hidden" 과 동일)
=> 단, <jsp:param> 태그 사용 시에는 파라미터가 URL 에 노출되지 않음
< 기본 문법 >
<jsp:forward page="포워딩 할 페이지 또는 파일"/>
또는
<jsp:forward page="포워딩 할 페이지 또는 파일">
<jsp:param name="파라미터명1" value="데이터1"/>
<jsp:param name="파라미터명2" value="데이터2"/>
</jsp:forward>
--%>
<!-- forward 액션 태그를 사용하여 "forwardPro2.jsp" 페이지로 포워딩 작업 수행 -->
<%-- <jsp:forward page="forwardPro2.jsp"/> --%>
<!-- forward 액션 태그로 포워딩 시 데이터를 추가하여 포워딩 작업 수행 -->
<!-- 일반적인 데이터는 name 속성의 문자열 형태로 전달하며 -->
<!-- 자바 변수 데이터는 name 속성에 표현식을 결합하여 전달 -->
<!-- 반드시 끝 태그를 별도로 작성해야함 -->
<jsp:forward page="forwardPro2.jsp">
<jsp:param name="paramValue1" value="forward 액션태그의 param 데이터"/>
<jsp:param name="paramValue2" value="<%=num %>"/>
</jsp:forward>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>forwardPro2.jsp</h1>
<%
// 이전 페이지에서 forward 액션태그로 이동할 경우 request 객체가 그대로 유지됨
// 따라서, 폼파라미터로 전달받은 데이터를 그대로 사용할 수 있다! (GET/POST 방식 무관)
// => request 객체가 유지되므로 인코딩 방식 변경 정보도 그대로 유지됨
// 따라서, 이전페이지에서 한글 표현 방식(UTF-8) 지정했을 경우
// 현재 페이지에서 별도로 지정하지 않아도 request 객체 내의 한글 데이터가 깨지지 않음
String id = request.getParameter("id");
String passwd = request.getParameter("passwd");
String jumin = request.getParameter("jumin");
// forward 액션태그의 param 태그로 전달받은 데이터 가져오기 = 동일한 방식
String paramValue1 = request.getParameter("paramValue1");
String paramValue2 = request.getParameter("paramValue2");
%>
<h3>아이디 : <%=id %></h3>
<h3>패스워드 : <%=passwd %></h3>
<h3>주민번호 : <%=jumin %></h3>
<!-- forward 액션태그의 param 액션태그로 전달받은 파라미터 출력 -->
<h3>paramValue1 : <%=paramValue1 %></h3>
<h3>paramValue2 : <%=paramValue2 %></h3>
</body>
</html>
===================================================<<include>>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%--
2. include 액션 태그
- 현재 페이지에 특정 페이지를 포함(include)시키는 용도의 액션 태그
- 포함시킬 페이지로 제어권이 일시적으로 넘어간 후 해당 페이지에서의 작업이 끝나면
다시 원래 페이지로 제어권이 돌아옴
=> 결국, forward 액션태그는 포워딩 된 후 그 위치에서 이전으로 돌아가지 않지만
include 액션태그는 포워딩 작업 후 다시 원래 위치로 돌아감(출력값을 전달하여 원래페이지에서 출력)
- forward 액션태그와 마찬가지로 include 되는 페이지로 파라미터를 전달하려면
jsp:param 태그를 사용하여 전달 가능
< 기본 문법 >
<jsp:include page="포함할 페이지"/>
또는
<jsp:include page="포함할 페이지">
<jsp:param ... />
</jsp:include>
--%>
<h1>includeTest.jsp</h1>
<hr>
<!-- includeTest2.jsp 페이지를 include 액션태그로 포함시키기 -->
<%-- <jsp:include page="includeTest2.jsp" /> --%>
<!-- includeTest2.jsp 페이지 포함 시 파라미터 값 전달 -->
<jsp:include page="includeTest2.jsp">
<jsp:param name="paramValue" value="Parameter Value"/>
</jsp:include>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
// 현재 페이지(includeTest2.jsp) 는 includeTest.jsp 페이지에 포함(삽입)될 페이지이며
// include 액션 태그 사용 시 param 태그로 전달한 파라미터를 가져와서 사용 가능함
String paramValue = request.getParameter("paramValue");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>includeTest2.jsp</h1>
<h3>include 액션 태그에 의해 포함되는 페이지입니다.</h3>
<h3>전달받은 파라미터값 : <%=paramValue %></h3>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>includeTest3.jsp</h1>
<table border="1">
<tr>
<td colspan="2" width="600" height="100">
<!-- include_top.jsp 페이지 포함시키기 -->
<!-- "id" 속성명으로 "admin" 값을 전달 -->
<jsp:include page="include_top.jsp">
<jsp:param name="id" value="admin" />
</jsp:include>
</td>
</tr>
<tr>
<td width="100" height="300">
<!-- include_left.jsp 페이지 포함시키기 -->
<jsp:include page="include_left.jsp"/>
</td>
<td>
<h3>include_main.jsp</h3>
<!-- include_main.jsp 페이지 포함시키기 -->
<jsp:include page="include_main.jsp"/>
</td>
</tr>
<tr>
<td colspan="2" width="600" height="100">
<!-- include_bottom.jsp 페이지 포함시키기 -->
<jsp:include page="include_bottom.jsp"/>
</td>
</tr>
</table>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>include_top.jsp</h1>
<span>상단메뉴1 상단메뉴2 상단메뉴3 상단메뉴4 상단메뉴5</span>
<span><%=request.getParameter("id") %>님 환영합니다.</span>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>include_left.jsp</h3>
<h3>브랜드패션</h3>
<h3>의류,잡화,뷰티</h3>
<h3>디지털</h3>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>메인페이지입니다.</h1>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>include_bottom.jsp</h1>
</body>
</html>