response 내장 객체는 사용자의 요청을 처리한 결과를 서버에서 웹 브라우저로 전달하는 정보를 저장.
즉 서버는 응답 헤더와 요청 처리 결과 데이터를 웹 브라우저로 보냄.
JSP 컨테이너는 서버에서 웹 브라우저로 응답하는 정보를 처리하기 위해
javax.servlet.http.HttpServletResponse 객체 타입의 response 내장 객체를 사용하여 사용자의 요청에 응답.
페이지 이동 방법
1) 포워드(forward) 방식
현재 JSP 페이지에서 이동할 URL로 요청 정보를 그대로 전달하므로 사용자가 최초로 요청한 정보가 이동된 URL에서도 유효.
그러나 이동된 URL이 웹 브라우저의 주소 창에 나타나지 않고 처음 요청한 URL이 나타나기 때문에 이동 여부를 사용자가 알 수 없음.
<jsp:forward page="이동할 페이지"/>
2) 리다이렉트(redirect)방식
처음 요청받은 현재 JSP 페이지로부터 이동할 URL을 웹 브라우저로 반환.
이때 웹 브라우저에서는 새로운 요청을 생성하여 이동할 URL에 다시 요청을 전송하므로 처음 보낸 요청 정보가 이동된 URL에서는 유효하지 않음.
즉 클라이언트가 새로 페이지를 요청한 것과 같은 방식으로 페이지가 이동.
따라서 이동된 URL이 웹 브라우저의 주소 창에 보임.
response.sendRedirect("이동할 페이지")
내장 객체로 페이지 이동하기
아이디와 비밀번호가 일치하면 성공 페이지로, 그렇지 않으면 로그인 페이지로 이동
1) 폼 문으로 전송받은 아이디와 비밀번호가 일치하면 response01_success.jsp 페이지로 이동
일치하지 않으면 response01_failed.jsp 페이지로 이동하도록
response 내장 객체의 sendRedirect() 메서드를 작성
response01.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>
<form action="response01_process.jsp" method="post"> <!-- input을 통해 전송을 누르면 response01_process.jsp 으로 값을 넘김 -->
<p> 아 이 디 : <input type="text" name="id"></p>
<p> 비밀번호 : <input type="text" name="passwd"></p>
<P> <input type="submit" value="전송"></P>
</form>
</body>
</html>
response01_process.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.setCharacterEncoding("utf-8");
String userid = request.getParameter("id"); /* response01 로 부터 입력받은 값 가져오기 */
String password = request.getParameter("passwd"); /* response01 로 부터 입력받은 값 가져오기 */
if (userid.equals("관리자") && password.equals("1234")) { /* 사용자로 부터 입력받은 값 가져와서 비교하기 */
response.sendRedirect("response01_success.jsp"); /* 페이지를 해당페이지로 이동시켜 줌 */
}
else {
response.sendRedirect("response01_failed.jsp"); /* 페이지를 해당페이지로 이동시켜 줌 */
}
%>
</body>
</html>
response01_success.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>
로그인을 성공했습니다!!
</body>
</html>
response01_failed.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>
<p>로그인을 실패했습니다.
<p><a href="./response01.jsp"> 로그인 가기</a> <!-- 사용자가 뒤로가기를 누르게 하지말고 로그인 페이지로 이동하게 버튼을 만듬 -->
</body>
</html>
response 내장 객체로 3초마다 JSP 페이지 갱신하기
1) 5초마다 JSP 페이지가 갱신되도록 response 내장 객체의 setIntHeader() 메서드를 작성
2) 5초마다 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>
<p> 이 페이지는 3초마다 새로고침 됩니다.
<%
response.setIntHeader("Refresh", 3); /* Refresh - 페이지를 새로고침함 */
%>
<p> <%=(new java.util.Date()) %>
</body>
</html>