Forward와 Redirect 방식 비교

1. 포워드(Forward) 방식 도식

[브라우저]  --요청-->  [Controller(Servlet)]
                           |
                           v   (서버 내부 이동)
                     [View(JSP)]
                           |
                           v
                     [브라우저] (응답)

설명

  • Forward는 “서버 내부”에서만 이동함.
  • 브라우저가 컨트롤러(servlet)에 요청 보내면,
    컨트롤러가 JSP(뷰)로 내부에서 요청을 넘김 (URL 안 바뀜).
  • request 객체가 그대로 유지돼서,
    컨트롤러에서 설정한 데이터(request.setAttribute 등)가
    JSP에서 그대로 보임.
  • 최종 응답은 브라우저에 한 번만 감.
  • 실제 사용 예:
    로그인 처리 후 내 정보 페이지,
    폼 값 검증 실패 시 입력 폼으로 다시 돌려보낼 때 등
    (데이터 전달이 필요할 때 자주 씀)

2. 리다이렉트(Redirect) 방식 도식

[브라우저]  --1차 요청-->  [Controller(Servlet)]
        ^                    |
        | <--- redirect -----|
        |                   |
        |----2차 요청------->|
                    [View(JSP)]
                        |
                        v
                    [브라우저] (응답)

설명

  • Redirect는 “외부 이동”, 즉 클라이언트(브라우저)가 다시 요청함.

  • 컨트롤러가 브라우저에게 “이 주소로 새로 요청해!”라고 명령(redirect).

  • 브라우저 주소창이 바뀜.

  • request 객체는 새로 생성되기 때문에,
    이전에 넣었던 데이터(request.setAttribute)는 사라짐.
    (전달하려면 session, 쿼리스트링, flash attribute 등 사용)

  • 실제 사용 예:

    • 회원가입 완료 후 “로그인 페이지로 이동”
    • 글쓰기/수정/삭제 후 목록으로 이동(새로고침 시 중복처리 방지)
    • POST/Redirect/GET 패턴(새로고침시 중복실행 방지)
  • 주로 새로고침 방지, 주소창 변경, 완전히 다른 페이지로 이동 시 사용


3. Forward vs Redirect 차이점 요약

구분 Forward Redirect
요청 횟수 1회(서버 내부 이동) 2회(브라우저가 새로 요청)
request 공유 O (유지) X (사라짐)
브라우저 URL 변하지 않음 바뀜
사용 시점 데이터 전달이 필요할 때 새로고침 방지, 주소이동 등
속도 상대적으로 빠름(내부 이동) 느림(두 번 요청)

실전 팁

  • 데이터 전달이 필요하면 Forward,
    새로고침이나 URL 변경, 중복실행 방지면 Redirect.

  • 브라우저에서 주소가 바뀌는지 보면,
    Forward/Redirect 구분 가능


'JSP' 카테고리의 다른 글

### 1. 클래스, 함수, 객체 구별하는 형태  (0) 2025.05.26
예제 5-4 실습할 때 헷갈렸던 것  (0) 2025.05.23
HTML → Servlet → JSP  (0) 2025.05.23
JSP에서 Enumeration 개념  (0) 2025.05.23
147p 도서목록 표시하기 DAO DTO  (0) 2025.05.22