📝 JSP
🖥️ 1. 페이지 이동
1-1. forward
- request에 담긴 값이 유효하다. (request, response가 유지)
- 이동된 URL이 화면에 안 보인다. (사용자는 이동했는지 알 수 없음)
방법 1)
pageContext.forward("이동할 페이지");
방법 2)
<jsp:forward page="이동할 페이지" />
1-2. redirect
- 클라이언트가 새로 페이지를 요청한 것과 같은 방식으로 페이지가 이동된다. request, response가 유지되지 않는다 (새로 만들어짐)
response.sendRedirect("이동할 페이지");
📝 예제
EX) object.jsp
<%@ 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="submit" 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;
}
joinForm.submit();
}
</script>
</body>
</html>
EX) object_result.jsp
<%@ 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>
EX) object_ok.jsp
<%@ 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 객체 유지
pageContext.forward("object_result.jsp");
// redirect : request 객체 재생성
response.sendRedirect("object_result.jsp");
%>
</body>
</html>
- forward 방식으로 페이지 이동 했을 경우 결과
- redirect 방식으로 페이지 이동 했을 경우 결과