포워드
는 한 서블릿(JSP)에서 다른 서블릿이나 JSP로 데이터를 전달하는 기술을 의미했습니다. 그리고 서블릿에서 포워드 방식으로 RequestDispatcher.forward()
를 사용하는 방식이 일반적이라고 이야기했었습니다.
JSP에서는 포워드 액션 태그
를 사용하면 자바코드 없이 포워드를 구현할 수 있습니다.
포워드 액션 태그
는 다음과 같이 사용합니다.
<jsp:forward page="포워드할 페이지"> </jsp:forward>
먼저 데이터를 입력해서 전송할 폼인 inputForm.jsp
를 작성합니다.
<%@ page
contentType="text/html;charset=UTF-8"
language="java"
pageEncoding="UTF-8"
%>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="output.jsp" method="post">
<input type="text" name="data">
<input type="submit" value="제출">
</form>
</body>
</html>
그리고 위 폼으로부터 입력받은 데이터를 전달받아(포워드) 출력할 output.jsp
도 작성합니다.
<%@ page
contentType="text/html;charset=UTF-8"
language="java"
pageEncoding="UTF-8"
%>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String data = request.getParameter("data");
if (data.isEmpty()) {
%>
<jsp:forward page="inputForm.jsp" />
<!-- 만약, 빈 form이 전달되면 다시 input 페이지로 포워드 -->
<%
}
%>
<h2>input으로 부터 전달받은 데이터: <%= data%></h2>
</body>
</html>
만약 폼에 아무런 데이터를 입력하지 않고 제출을 하면 다시 inpurForm.jsp
로 포워드 됩니다.
데이터를 전달하면 정상적으로 output이 출력이 됩니다.