본문 바로가기
수업(국비지원)/JSP

[JSP] 내장 객체 - 페이지 이동 방법 : response 응답 객체, forward

by byeolsub 2023. 4. 18.
  • response 와 forward 차이
- 클라이언트가 새로 페이지를 요청한 것과 같은 방식으로 페이지가 이동됨.
  request, response가 유지되지 않음.(새로 만들어짐.)
- 이동된 url이 화면에 보임.

response 객체는 브라우저에 결과를 전달해 주는 객체.
    내부에 출력 버퍼를 가지고 있다. 
    브라우저에 결과를 전달 할 때 다른 페이지를 요청하도록 할 수 있다.
    => 이러한 기능을 redirect.

response1.jsp 페이지 요청시 respons2.jsp 페이지가 출력됨.
브라우저의 요청으로 호출되므로 url이 response2.jsp로 변경됨.


📌

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%--/jsp/src/main/webapp/chap4/response1.jsp --%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>응답 객체 : response</title>
</head>
<body>
<h2>지금 작성 중인 내용은 화면에 출력되지 않습니다.</h2>
<h3>response 객체는 브라우저에 결과를 전달해 주는 객체 입니다.<br>
    내부에 출력 버퍼를 가지고 있습니다. <br>
    브라우저에 결과를 전달 할 때 다른 페이지를 요청하도록 할 수 있습니다.
    => 이러한 기능을 redirect 라고 합니다.
</h3>
<%-- 브라우저로 명령문 전달 --%>
<% response.sendRedirect("response2.jsp"); %> 
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%--/jsp/src/main/webapp/chap4/response2.jsp --%>        
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>리다이렉트된 페이지</title>
<%-- 리다이렉트 : url이 바뀐다 = 브라우저가 다시 요청했구나 라는 사실을 알 수 있음. --%>
</head>
<body>
<h2>response2,jsp 페이지 입니다.</h2>
response1.jsp 페이지 요청시 이 페이지가 출력됩니다. <br>
브라우저의 요청으로 호출되므로 url이 response2.jsp로 변경됩니다.
</body>
</html>

  • forward
- request에 담긴 값이 유효하다.(request, response가 유지됨.)
- 이동된 url이 화면에 보이지 않음.(사용자는 이동했는지 알 수 없다.)

forward1.jsp 페이지와 forward2.jsp 페이지는 같은 request 객체를 공유.
       => 같은 request 영역.

forward1.jsp 페이지를 요청하면 forward2.jsp 페이지가 출력됨.
하지만 url은 forward1.jsp로 남아 있다.

 


📌

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%--/jsp/src/main/webapp/chap4/forward1.jsp --%>  
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>forward 하는 페이지</title>
</head>
<body>
<%--forward1.jsp 페이지와 forward2.jsp 페이지는 같은 request 객체를 공유한다.
       => 같은 request 영역이다.
--%>
<h2>forward 하는 페이지 입니다. 이 내용은 화면에 출력되지 않습니다.</h2>
<% pageContext.forward("forward2.jsp"); %>
<%-- name=test : get 방식으로 파라미터 전달. --%>
<http://localhost:8080/jsp/chap4/forward1.jsp?name=test> 
</body>
</html>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%--/jsp/src/main/webapp/chap4/forward2.jsp --%> 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>forward 된 페이지</title>
</head>
<body>
<%--forward1.jsp 페이지와 forward2.jsp 페이지는 같은 request 객체를 공유한다.
       => 같은 request 영역이다.
--%>
<h2>forward2.jsp 페이지 입니다.</h2>
forward1.jsp 페이지를 요청하면 forward2.jsp 페이지가 출력됩니다.
하지만 url은 forward1.jsp로 남아있습니다.
<hr>
<h3>name=<%=request.getParameter("name") %></h3>
</body>
</html>