JSP

[JSP] 페이지 이동 Forword와 Redirect의 차이점에 대해 알아보기

joheamin 2025. 4. 7. 19:23

 

JSP에서는 페이지를 이동하는 방식이 크게 2가지로 분류된다.

 

 

ForwardRedirect가 있는데 둘은 요청한 페이지로 이동하여 뛰운다는 것은 동일하나 

차이점이 확연히 존재한다.

 

이 차이점과 각 저장소에 담긴 데이터가 이동방식에 따라 어떻게 되는지 알아보겠다.

 

 

 

1️⃣  Forward

 

❓ Forward란

서버 내에서 하나의 페이지 내부에서 다른 페이지로 요청처리를 전달하는 것을 뜻한다.
예를 들어 로그인이 된 직후 로그인된 유저의 정보를 가지고 마이페이지로 이동하는 경우

 

 

❓Forward의  특징

웹 브라우저의 주소창이 바뀌지 않으며 , 클라이언트는 내부의 동작을 알수 없다.

요청을 전달하는 페이지 내부에서 다른 페이지로 이동한것이기 때문에
request 객체의 값이 그대로 유지된다,

 

 

🔍 Forward 예제

<aside>

처음 요청 받은 Get 메서드
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();	
	}

 RequestDispatcher 객체 생성

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		String url = "hello";
		
		//getRequestDispatcher
		//forward를 지원해주는 웹 용 객체
	   	RequestDispatcher dis =  request.getRequestDispatcher(url);
	}​

👉 forward를 지원해주는 객체에 hello를 담은 문자열이 저장되며 생성


RequestDispatcher 를 통해 forward

dis.forward(request, response);​

 

 

✔️ 결과 넘긴 url 의 hello 경로를 따라서

flow페이지가 요청되지만 hello로 이동하여 hello페이지가 출력된다.

그리고 클라이언트는 flow에서 hello로 이동하는것이 보이지않고 hello만 바로 보게된다.

</aside>

 

 

2️⃣ Redirect

 

❓ Redirect 란

현재의 요청에 대한 응답을 재요청으로 하는것이다.
즉 요청 받은 페이지가 직접 요청을 처리하는 것이 아닌 클라이언트가 요청한 URL을
또 다시 호출하는 방법이다.

예를 들어 로그아웃을 할 경우 전부다 리셋하고 메인 페이지를 뛰우는 경우

 

 

🔍 Redirect 예제

	
	//flow
	//요청되어 doGet 메서드 실행
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		String url = "hello";
		
		// hello페이지를 다시 요청해달라고 응답한다.
		response.sendRedirect(url);
		
	}

👉응답을 받으면 그렇다면 처음 요청을 했던 페이지로 다시 되돌아간 뒤

      hello로 바로 다이렉트로 요청을 한다.

      다시 말해서 주소창이 한번 리셋된 다음 새 주소가 생기게된다.

 

🔥 forward와 redirect 차이점

주소 이동

ex) first.jsp에게 second.jsp을 요청한다.

 

Redirect : 웹 브라우저 → first.jsp  →  웹 브라우저  → second.jsp (너가 대신 이동해) 

forward :  웹 브라우저   first.jsp     second.jsp  (내가 이동할게) 

 

 

새로 고침

 

Redirect :  url은 second  👉 second 페이지를 유지한다.

forward : url은 first  👉 first 페이지로 돌아간다.