Model 이란?

Controller → View로 데이터를 전달하는 방법

1. ModelAndView

- ModelAndView로 전달

@RequestMapping("/modelTest1.do")
public ModelAndView modelTest1() {
    String result = "ModelAndView로 전달한 결과 메세지";

    ModelAndView mav = new ModelAndView();
    mav.addObject("result", result); // 모델 데이터
    mav.setViewName("model/modelOk"); // 뷰 정보
    return mav;
}

2. 파라미터 주입 방식

- DTO를 이용해서 전달

@RequestMapping("/modelTest2.do")
public String modelTest2(ModelDTO dto) {

    dto.setResult("이것은 DTO를 이용한 데이터 전달");
    return "model/modelOk2";
}

- Map을 이용해서 전달

@RequestMapping("/modelTest3.do")
public String modelTest3(Map model) {

    model.put("result", "Map객체를 이용한 데이터 전달");
    return "model/modelOk";
}

- Model을 이용해서 전달

@RequestMapping("/modelTest4.do")
public String modelTest4(Model model) {

    model.addAttribute("result", "Model을 이용한 데이터 전달");
    return "model/modelOk";
}

- ModelMap을 이용해서 전달

@RequestMapping("/modelTest5.do")
public String modelTest5(ModelMap model) {

    model.addAttribute("result", "ModelMap을 이용한 데이터 전달");
    return "model/modelOk";
}

3. 반환 방식

- Map 반환

@RequestMapping("/model/modelOk.do")
public Map<String, Object> modelTest6() {

    HashMap<String, Object> model = new HashMap<>();
    model.put("result", "Map객체를 반환하여 데이터 전달");
    return model;
}

- Model 반환

@RequestMapping("/model/modelOk3.do")
public Model modelTest7() {

    Model model = new ExtendedModelMap();
    model.addAttribute("result", "Model객체를 반환하여 데이터 전달");
    return model;
}