package com.nhnacademy.springbootmvc.controller;
import com.nhnacademy.springbootmvc.domain.User;
import com.nhnacademy.springbootmvc.repository.UserRepository;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
import java.util.List;
@Controller
public class UserController {
private final UserRepository userRepository;
public UserController(UserRepository userRepository) {
this.userRepository = userRepository;
}
@GetMapping("/user")
public ModelAndView getUsers(/* TODO 1: 적절한 모델 type 넣기 */) {
List<User> users = userRepository.getUsers();
//TODO 2: user 목록을 모델의 attribute 추가
ModelAndView modelAndView = new ModelAndView("users");
modelAndView.addObject("users", users);
return modelAndView;
}
}
Model
ModelMap
ModelAndView
컨트롤러에서 뷰로 데이터를 전달하는 가장 기본적인 방법
맵과 유사한 API를 제공하여 데이터를 좀 더 유연하게 관리 O
뷰 이름과 데이터를 함께 전달해야 할 때 효과적
ModelAndView 객체를 생성하여 뷰 이름과 데이터를 설정한 후 반환하면, 스프링 MVC가 이를 이용해 뷰를 렌더링