훌륭한 개발자 동료로 성장하길 꿈꾸며

[SpringMVC] Model vs RedirectAttributes 본문

Programming/Spring & Spring Boot

[SpringMVC] Model vs RedirectAttributes

CHOIALTH 2023. 4. 24. 03:57
SpringMVC

 SpringMVC에서 자주 등장하는 `Model`과 `RedirectAttributes`에 대해 정리해보고자 한다.

*MVC 패턴 : Model - View - Controller
**SpringMVC : Spring Framework의 모듈의 일종으로, @Controller, @RequestParam 등 다양한 어노테이션을 제공함

 
 두 객체 모두 데이터를 저장하고 컨트롤러에서 뷰로 전달하는 공통된 기능을 제공하지만, 사용처와 동작 방식에 차이가 있다.
 

Model

 `Model` 객체는 Controller에서 View로 데이터를 전달하는 데 사용되는 객체로, 주로 Controller 메서드에서 생성되고 반환되는 View에 데이터를 전달하는 데 사용된다. `Model` 객체를 사용하여 View에서 사용할 수 있는 데이터를 추가하고, View에서는 이 데이터를 사용하여 렌더링해준다.

적절한 사용처 :
- Controller에서 View로 데이터를 전달해야 할 때
- View에서 사용할 데이터를 설정할 때

RedirectAttributes

 `RedirectAttributes` 객체는 리다이렉트하는 동안 데이터를 전달하는 데 사용되는 객체이다. 일반적으로 리다이렉트 요청이 발생할 때 사용되며, 데이터를 다른 Controller 메서드로 전달하는 데 사용된다. 이 객체를 사용하면, 리다이렉트를 실행하는 동안 데이터를 다른 요청 범위로 전달할 수 있다. 
 
 `RedirectAttributes`객체가 제공하는 `addFlashAttribute` 메서드는 리다이렉트 시 일회성 데이터를 전달하는 데 사용된다. 이 메서드를 사용하여 속성을 추가하면, 해당 속성은 Flash 스코프에 저장되어 리다이렉트 후 바로 다음 요청에서만 사용할 수 있다. 데이터는 일회성이며 다음 요청 이후에는 사용할 수 없고, 단일 리다이렉트 후에 데이터가 소멸한다.
 
적절한 사용처 :
- 리다이렉트하는 동안 데이터를 전달해야 할 때
- 일회성 데이터를 다른 컨트롤러 메서드로 전달할 때
 
 Flash 스코프(scope)란, Controller에서 리다이렉트 시 일회성 데이터를 전달하는 목적으로 사용되는 특별한 스코프이다. Flash 스코프에 저장된 데이터는 일시적으로 저장되어 리다이렉트 후 바로 다음 요청에 사용되고, 그 이후에는 자동으로 삭제된다.

 이러한 특징으로 사용자가 뒤로 가기나 새로 고침을 하더라도 이전의 데이터가 노출되지 않도록 보장한다.
***스코프 : 프로그래밍에서 변수나 객체의 생명주기(어디서 생성되고, 언제 소멸되는지)·접근 범위를 정의하는 것.