1. forward

- request에 담긴 값이 유효(request, response가 유지됨)
- 이동된 url이 화면에 안 보임(사용자는 이동했는 알 수 없음)
- 포워드 하는 방법 :
pageContext.forward("이동할 페이지");
<jsp:forward page="이동할 페이지"/>
2. redirect

- 클라이언트가 새로 페이지를 요청한 것과 같은 방식으로 페이지가 이동됨
- request, response가 유지되지 않음(새로 만들어짐)
- 이동된 url이 화면에 보인다
- 리다이렉트하는 방법 :
response.sendRedirect("이동할 페이지");
<%@ 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>내장 객체 예제</h3>
<form action="object_ok.jsp" name="joinForm">
<fieldset>
<legend>개인 정보</legend>
<input type="text" name="username">
<input type="date" name="userbirth">
<input type="button" value="확인" onclick="sendit()">
</fieldset>
</form>
<script>
function sendit() {
let joinForm = document.joinForm;
let nameTag = joinForm.username;
let birthTag = joinForm.userbirth;
if (nameTag.value=="") {
alert("이름을 입력하세요");
nameTag.focus();
return false;
}
if (birthTag.value=="") {
alert("생일 정보를 입력하세요");
birthTag.focus();
return false;
}
joinForm.submit();
}
</script>
</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>
<%
String username = request.getParameter("username");
String userbirth = request.getParameter("userbirth");
// forward 방식 : request 객체가 유지
// redirect 방식 : request 객체 재생성
// pageContext.forward("object_result.jsp");
// redirect 방식 : request 객체 재생성
response.sendRedirect("object_result.jsp");
%>
</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>
<%=request.getParameter("username") %>
님 어서오세요<br>
<%=request.getParameter("userbirth") %>
</body>
</html>