티스토리 뷰
Response의 Redirect는 해당 페이지에서 요청한 Request값을 받아서 다시 다른 페이지로 넘겨야 하는 경우, 새로운 Request를 하나 더 생성하여 다음 페이지/파일로 보내는 구조로 동작한다.
하지만, 이때 forward를 사용하면 최초로 요청한 request가 그대로 유지되어 다음 페이지로 전송되게 된다.
간단한 예시를 보며 이해해보자.
기본적인 페이지의 구조는 다음과 같다
forwardForm.jsp -> forwardTest.jsp -(if 성공)-> forwardResultSuccess.jsp
-(if 실패)-> -> forwardResultFail.jsp
◎ forwardForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
입장하려면 나이를 입력하세요 <br />
<form action = "forwardTest.jsp" >
<input type = "text" name = "age" required = "required"/>
<input type = "submit" value = "전송" />
</form>
</body>
</html>
◎ forwardTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String tempA = request.getParameter("age");
int age = Integer.parseInt(tempA);
if(age <= 19) {
//response.sendRedirect("forwardResultFail.jsp?age=" age);
<-- request를 한번 더 생성한다.
RequestDispatcher dispatcher = request.getRequestDispatcher("forwardResultFail.jsp");
dispatcher.forward(request, response); //인자는 변경 불가, 반드시 request와 response가 입력되어야 한다.
//forward는 request가 가직 있는 값을 그대로(Request 재생성 없이) Form 이 보내줬던 age 값을 forwardResultFail로 보낸다.
} else {
RequestDispatcher dispatcher = request.getRequestDispatcher("forwardResultSuccess.jsp");
dispatcher.forward(request, response);
}
%>
◎ forwardResultSuccess.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String age = request.getParameter("age");
%>
<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor = "green">
입력된 나이는 <%= age %> 입니다. 입장 가능합니다.
</body>
</html>
◎ forwardResultFail.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String age = request.getParameter("age");
%>
<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor = "red">
입력된 나이는 <%= age %> 이기 때문에 입장할 수 없습니다.
</body>
</html>
이런 구조와 같이 해당 값을 request 하여 java코드에서 연산 후, 별다른 표시 없이 다음 페이지로 넘기는 과정의 경우
forward를 사용하는 것이 더 시스템 입장에서는 더욱 간결한 과정이기 때문에 사용한다.
반응형
'WEB > DynamicWeb' 카테고리의 다른 글
[JSP] JSP -> JSP 로 데이터를 전달하는 다양한 방법 (0) | 2021.04.21 |
---|---|
[JSP] Application의 상세 정보 (0) | 2021.04.21 |
[JSP] sendRedirect(Post Method)의 한글 깨짐 (0) | 2021.04.21 |
[JSP] JSP 기초 <Include로 페이지 참조> (0) | 2021.04.20 |
[JSP] JSP 기초 <예외 처리, 에러 페이지 지정> (0) | 2021.04.20 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- 파니노구스토
- javascript
- react
- AsyncStorage
- 정보보안기사 #실기 #정리
- 이탈리안 레스토랑
- 인천 구월동 이탈리안 맛집
- react-native
- redux
- 맛집
- Promise
- 인천 구월동 맛집
- Async
- redux-thunk
- await
- Total
- Today
- Yesterday