<aside> 1️⃣ Model, ModelAndView, ModelMap이란

</aside>

<aside> 2️⃣ Model, ModelAndView, ModelMap의 설명

</aside>

  1. Model:

    @GetMapping("/showViewPage")
    public String passParametersWithModel(Model model) {
    
        Map<String, String> map = new HashMap<>();
        map.put("spring", "mvc");
    
        model.addAttribute("message", "Baeldung");
        model.mergeAttributes(map);
        return "view/viewPage";
    
    }
    
  2. ModelAndView:

    @GetMapping("/goToViewPage")
    public ModelAndView passParametersWithModelAndView() {
    
        ModelAndView modelAndView = new ModelAndView("view/viewPage");
        modelAndView.addObject("message", "Baeldung");
        return modelAndView;
    
    }
    
  3. ModelMap:

    @GetMapping("/printViewPage")
    public String passParametersWithModelMap(ModelMap map) {
    
        map.addAttribute("welcomeMessage", "welcome");
        map.addAttribute("message", "Baeldung");
        return "view/viewPage";
    
    }
    

<aside> 3️⃣ 컨트롤러에서는 이 셋중에 어떤것을 선택해야할까?

</aside>

<aside> 4️⃣ 그럼 @ModelAttribute는 뭘까?

</aside>

<aside> 5️⃣ @ModelAttribute의 사용법

</aside>

  1. 메소드 인자에 사용:

    @PostMapping("/user")
    public String submit(@ModelAttribute User user) {
        // user 객체는 요청 파라미터를 바인딩 받은 상태
        // 여기서 비즈니스 로직 수행
        return "userView";
    }
    
  2. 메소드에 사용:

    @ModelAttribute("settings")
    public Settings getSettings() {
        return settingsService.getSettings();
    }
    

<aside> 6️⃣ @ModelAttribute [메소드에 사용] - 추가설명

</aside>