Computer Science/NetWork

Forward vs Redirect 차이점 총정리! 웹 개발자라면 반드시 알아야 할 핵심 개념

추천캐릭터 2022. 11. 4. 20:26
728x90
반응형

🔷 Forward 방식이란?

Web Container 내부에서 요청을 다음 페이지로 전달하는 방식

  • 브라우저는 이동했음을 인지하지 못함
  • URL은 바뀌지 않음
  • Request와 Response 객체를 공유
  • 서버 내부에서 페이지 이동만 발생
  • 대표 사용 예: 글 목록, 검색 결과 등 조회용 요청

📌 예시 상황

게시글 작성 완료 후 forward로 응답 페이지를 호출했을 때, 새로고침 시 동일 게시물이 여러 번 등록될 수 있음.
➡️ 왜냐하면 이전 요청 정보가 그대로 유지되기 때문!


🔷 Redirect 방식이란?

서버가 브라우저에게 다른 URL로 이동하라고 지시하는 방식

  • 브라우저가 새로운 URL로 이동
  • Request/Response 객체는 새로 생성
  • URL이 변경됨
  • 다른 서버나 컨텍스트로도 이동 가능
  • 대표 사용 예: 회원가입, 게시글 등록 등 데이터 변경 요청

📌 예시 상황

게시글 등록 후 redirect를 사용하면, 새로고침해도 중복 등록이 발생하지 않음.
➡️ 왜냐하면 이전 요청 정보가 사라지기 때문!


🔷 Forward vs Redirect 비교 정리

항목ForwardRedirect
URL 변경 ❌ 변경 없음 ✅ 변경됨
브라우저 인식 ❌ 이동 모름 ✅ 이동함
Request 공유 ✅ 동일 객체 ❌ 새 객체
사용 위치 조회 등록/삭제
새로고침 시 요청 유지 요청 초기화
 

🔷 Spring에서 Redirect 사용 예시

@Controller
@RequiredArgsConstructor
public class UserController {

    private final UserService userService;

    @GetMapping("/signup")
    public String joinForm() {
        return "users/createMember";
    }

    @PostMapping("/signup")
    public String joinForm(@ModelAttribute UserDto.Request userDto) {
        userService.saveUser(userDto);
        return "redirect:/"; // 리다이렉트 처리
    }
}

✅ 마무리

  • 단순 조회는 Forward
  • DB에 변화를 주는 요청은 Redirect

이 원칙만 기억하면 안정적인 웹 흐름을 구성할 수 있습니다!

728x90
반응형