Heestory

@Controller: return redirectUrl vs return ModelAndView 본문

개발(0)/Spring Boot

@Controller: return redirectUrl vs return ModelAndView

까만밀가루 2025. 1. 3. 05:08

@Controller에서 return redirectUrl (String)return ModelAndView는 반환값 처리 방식과 용도에서 차이가 있습니다. 아래는 이 두 가지 방법의 차이점을 정리한 내용입니다.

 


 

1. return redirectUrl (String)

설명

  • 문자열을 반환하며, 반환된 값이 리다이렉트 경로로 간주됩니다.
  • Spring MVC에서 redirect:로 시작하는 문자열은 클라이언트에게 HTTP 리다이렉트 응답을 보냅니다.

특징

  • 리다이렉트 처리:
    • 브라우저가 지정된 경로로 새로운 요청을 보냅니다.
    • 클라이언트가 새로운 요청을 보내므로 URL이 변경됩니다.
  • 사용법: 
    • 주로 폼 제출 후 특정 페이지로 이동하거나 다른 컨트롤러 경로로 리다이렉트할 때 사용됩니다.
  • 데이터 전달 제한: 
    • 리다이렉트에서는 데이터 전달이 제한됩니다. RedirectAttributes 또는 쿼리 파라미터를 사용해야 데이터를 전달할 수 있습니다.
@Controller
public class RedirectController {
    @PostMapping("/submit")
    public String handleForm() {
        return "redirect:/success"; // /success 경로로 리다이렉트
    }
}

 


2. return ModelAndView

설명

  • ModelAndView 객체를 반환하며, 이는 뷰와 모델 데이터를 함께 정의합니다.
  • 반환값은 뷰 이름과 데이터(모델)를 포함하여 렌더링될 페이지를 지정합니다.

특징

  1. 뷰 렌더링 처리:
    • 서버에서 지정된 뷰 템플릿을 렌더링합니다.
    • 클라이언트가 새로운 요청을 보내지 않으므로 URL이 변경되지 않습니다.
  2. 데이터 전달 가능 
    • 모델 데이터를 뷰로 전달하여 동적으로 HTML을 생성할 수 있습니다.
  3. 사용법: 
    • 주로 서버 사이드 렌더링을 통해 데이터를 클라이언트에게 전달할 때 사용됩니다.
@Controller
public class ViewController {
    @GetMapping("/greet")
    public ModelAndView greetUser() {
        ModelAndView mv = new ModelAndView("greeting"); // greeting.html
        mv.addObject("message", "Hello, User!");
        return mv;
    }
}

 


주요 차이점 요약

특징 return redirectUrl (String) return ModelAndView
기본 목적 클라이언트의 리다이렉트 처리 뷰 렌더링 및 데이터 전달
URL 변경 여부 URL이 변경됨 URL이 변경되지 않음
데이터 전달 방법 쿼리 파라미터 또는 RedirectAttributes 필요 ModelAndView 객체를 통해 데이터 전달
사용 사례 다른 경로로 이동 템플릿 엔진을 사용하여 동적 페이지 생성