EdgeSecu

Spring MVC에서 model.addAttribute로 뷰에 데이터 전달하기 본문

공부/Spring

Spring MVC에서 model.addAttribute로 뷰에 데이터 전달하기

Edgemine 2025. 6. 4. 16:21

model.addAttribute()는 스프링 MVC에서 컨트롤러가 뷰(예: Thymeleaf 템플릿)에 데이터를 전달할 때 사용하는 메서드야. 간단히 말해서, 컨트롤러에서 계산하거나 조회한 값을 뷰에서 참조할 수 있도록 “키–값 쌍”으로 저장해 주는 역할을 해.

예를 들어:

@GetMapping("/hello")
public String hello(Model model) {
    String name = "철수";
    model.addAttribute("userName", name);
    return "greeting"; // src/main/resources/templates/greeting.html
}

위 코드에서 model.addAttribute("userName", name)는 모델에 "userName"이라는 이름으로 "철수" 값을 담는 거야. 그 뒤에 반환되는 뷰 이름(greeting.html)에서 ${userName} 같은 표현으로 꺼내 쓸 수 있어. 즉 컨트롤러 → 뷰로 데이터를 넘기는 통로 역할을 한다고 보면 돼.

  • 첫 번째 인자(String key)는 뷰에서 참조할 때 사용할 이름
  • 두 번째 인자(Object value)는 실제로 전달할 데이터(객체, 문자열, 리스트 등 어떤 타입이든 가능)

Thymeleaf 템플릿 예시:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>인사</title>
</head>
<body>
    <h1>안녕하세요, <span th:text="${userName}">홍길동</span>님!</h1>
</body>
</html>

위 템플릿을 렌더링하면 model.addAttribute("userName", "철수") 덕분에 화면에 “안녕하세요, 철수님!”이라고 보여주게 되는 거야.

정리하자면:

  • 컨트롤러 메서드에 Model model을 파라미터로 선언한 뒤,
  • model.addAttribute("속성명", 값)을 호출하여 뷰에서 쓰일 데이터를 담고,
  • 뷰(Thymeleaf 등)에서 ${속성명}으로 꺼내 쓰도록 연결하는 방식이야.

 

컨트롤러는 Model 객체에 `addAttribute` 메소드를 사용하여 템플릿에 전달할 데이터를 담는다. 리졸버가 템플릿을 찾고 Thymeleaf 데이터를 렌더링함.