웹 개발 한걸음

[Web] Forward와 Redirect 차이점을 알아보자

Egu99 2021. 3. 30. 13:12

 

 

** 프로젝트 만들다가 문득 forward와 redirect가 각각 어떤 차이가 있는지 제대로 알고있지 않은 듯하여 정리해보았다.

 

 

 


 

 

** 웹에서 페이지 전환 방식에는 forward와 redirect 이렇게 2가지가 있다. 

 

*** 사례를 빗대어 forward와 redirect의 감을 잡아보자.

여기서 고객은 클라이언트, 123번은 URL이며, 상담원은 서버이다.

 

** 첫번째 사례(redirect)

  • 1) 고객이 123번으로 고객센터 상담원에게 전화를 건다.
  • 2) 상담원은 고객에게 "고객님 해당 문의 사항은 124번으로 다시 문의 해주시겠어요?"
  • 3) 고객은 다시 124번으로 문의하여 일을 처리한다.

** 두번째 사례(forward)

  • 1) 고객이 123번으로 고객센터 상담원에게 전화를 건다.
  • 2) 상담원은 해당 문의사항에 대해 잘 알지 못하여 옆의 다른 상담원에게 해당문의사항에 답을 얻는다.
  • 3) 상담원은 고객에게 문의사항을 처리해준다.

 

 


 

 

1. Foward

  • forward는 WebContainer 차원에서 페이지의 이동만 존재한다.
  • 실제로 웹 브라우저는 다른 페이지로 이동했음을 알 수 없기 때문에 최초로 호출한 URL이 표시되고 이동한 페이지의 URL정보는 확인할 수 없다.
  • 현재 실행 중인 페이지와 forward에 의해 호출될 페이지는 Request 객체와 Response 객체를 공유한다.
  • 사용자가 최초로 요청한 요청정보는 forward되는 다음 URL에서도 유효하다.
  • 이러한 특성은 게시판 글쓰기의 경우 forward를 사용하면 사용자가 실수 혹은 고의로 글쓰기 응답 페이지에서 새로고침을 누르면 요청 정보가 그대로 살아있기 때문에 여러번 요청이 전달되어 여러번 글이 등록될 수 있는 문제가 있다.
  • 따라서 forward는 시스템(Session, DB)에 변화가 생기지 않는 단순 조회 요청(글 목록 보기, 검색)에 사용하는 것이 바람직하다.

 

 


 

2. Redirect

  • redirect는 WebContainer로 명령이 들어오면 서버는 웹브라우저에게 다른 페이지로 이동하라고 명령한다.
  • 웹브라우저의 URL을 지시한 주소로 바꾸고 해당 주소(다른 웹 컨테이너에 있는 주소)로 이동한다.
  • 새로운 페이지에서는 새로운 Request와 Reponset가 생성된다.
  • 글쓰기의 경우 redirect를 사용할 경우 새로고침을 하더라도 처음의 요청 정보는 존재하지 않으므로 게시물이 여러번 등록되지 않는다.
  • 따라서 redirect는 시스템에 변화가 생기는 요청(회원가입, 글쓰기 등)은 redirection을 사용하는 것이 바람직하다.

 

 

 

 

 

 

 

♣ 참고 및 인용