Search
Duplicate
moon
sun

페이지 이동 방식 - forward & redirect

페이지 이동 방식

forward
redirect
웹 페이지를 이동하는 방식은 2가지로 나누어 볼 수 있다.

forward 방식

forward : “전달하다”
서버 내부에서 요청 경로 A 가 B 로 요청을 전달하며 페이지로 이동하는 방식
특징
원래의 요청 정보(request) 및 응답 정보(response)를 그대로 사용
클라이언트는 이동한 페이지 B 를 응답 받지만, 주소 표시줄의 요청 URL 은 그대로임
조회(읽기) 요청을 하는 경우에 주로 사용

redirect 방식

redirect : “다시 지시하다”
서버가 요청 경로 A 로 요청을 받은 후, 클라이언트에게 B 로 다시 요청하라고 지시하며 페이지를 이동하는 방식
특징
클라이언트가 원래의 요청과 달리 완전히 다른 새로운 요청을 하여, 기존의 요청 정보는 이후의 요청에서는 사용할 수 없음
이동한 화면에서 주소 표시줄의 URL 이 A 에서 B 로 변화됨
등록, 수정, 삭제 요청 시에 주로 사용

forward 방식으로 페이지 이동하기

실습 파일

forward_A.jsp
forward.B.jsp

forward_A.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>페이지 이동 - Forward</title> </head> <body> <h1>페이지 이동 - Forward</h1> <h2>forward A 화면</h2> <jsp:forward page="forward_B.jsp" /> <p>-------------------------------</p> </body> </html>
HTML
복사

forward_B.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>페이지 이동 - Forward</title> </head> <body> <h1>페이지 이동 - Forward</h1> <h2>forward B 화면</h2> <a href="../index.jsp">메인 페이지</a> </body> </html>
HTML
복사

결과 화면

redirect 방식으로 페이지 이동하기

실습 파일

redirect01_A.jsp
redirect01.B.jsp
RedirectServlet.java

redirect01_A.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>페이지 이동 - Redirect</title> </head> <body> <h1>페이지 이동 - Redirect</h1> <h2>redirect/redirect01_A.jsp</h2> <a href="redirect">페이지 이동 (redirect)</a> </body> </html>
HTML
복사

redirect01_B.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>페이지 이동 - Redirect</title> </head> <body> <h1>페이지 이동 - Redirect</h1> <h2>redirect/redirect01_B.jsp</h2> <a href="../index.jsp">메인 페이지</a> </body> </html>
HTML
복사

RedirectServlet.java

package redirect; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/redirect/redirect") public class RedirectServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.sendRedirect("redirect01_B.jsp"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
HTML
복사