개발자 '쑥말고인절미'

[Spring] Model 객체와 ModelAndView 객체 차이 본문

STUDY/Spring & SpringBoot

[Spring] Model 객체와 ModelAndView 객체 차이

쑥말고인절미 2022. 12. 6. 16:37

간단 정리

  • Model 객체데이터만 넘겨줄 수 있다면 ModelAndView 객체를 이용하면 view경로와 데이터를 한번에 넘겨줄 수 있다.
  • ModelAndView 객체는 Model 객체보다 기능이 더 많아 구현할 내용이 복잡해질수록 ModelAndView 객체를 사용하는게 더 편할 것 같다.

 

Model 객체

  • model.addAttribute()를 이용해 넘길 데이터의 이름과 값을 입력하고 그 값을 view로 넘긴다.
//Controller(.java파일)
@RequestMapping("/view경로")
public String 메소드명(Model model) {
	model.addAttribute("변수이름", "변수에 입력할 데이터 값");
    return "view경로";
}

//view(.jsp파일)
<html>
...
<body>
넘겨받은 데이터는 ${변수이름} 입니다.
</body>
</html>

 

  • Model에 속성을 추가하는 addAttribute() 이외에도 아래와 같은 메소드 등이 있다.
    1. getAttribute() : Model에 있는 속성을 조회
    2. addAttributes() : Model에 속성을 여러 개 추가
    3. getAttributes() : Model에 속성을 여러 개 추가
    4. constainsAttributes() : Model에 특정한 속성이 있는지 확인
    5. mergeAttributes() : Model 두 개를 합침

 

ModelAndView

  • mav.setViewName()를 이용해 뷰 경로를 설정한다.
  • mav.addObject()를 이용해 데이터를 보낼 수 있다. 
//Controller(.java파일)
@RequestMapping("/view경로")
public ModelAndView 메소드명(ModelAndView mav) {
    mav.setViewName("view경로");
    mav.addObject("변수이름", "변수에 입력할 데이터 값");
    return mav;
}

//view(.jsp파일)
<html>
...
<body>
넘겨받은 데이터는 ${변수이름} 입니다.
</body>
</html>
  • Model이 속성을 추가 삭제하는 기능만 있다면 ModelAndView은 view설정, model설정, 상태 설정, 기타 기능까지 다양하다. 아래에 서술한 메소드 외에도 더 많이 있다.
    1. getViewName() : view 이름을 조회
    2. setView() : view 설정
    3. getView() : view 조회
    4. hasView() : 설정되어 있는  view가 있는지 확인
    5. getModelMap() : 내부의 모델 Map 조회
    6. getModel() : 내부 모델 조회
    7. getStatus() : 상태 설정

 

참고링크

https://hongku.tistory.com/116

 

SpringMVC :: 컨트롤러(Controller), Model, ModelAndView 사용법

스프링 MVC 컨트롤러 (Controller) 기본적인 흐름은 client가 요청을 하면, @Controller에 진입한다. 컨트롤러는 요청에 대한 작업을 수행하고, 뷰쪽으로 데이터를 전달한다. 컨트롤러 클래스 제작 순서 @C

hongku.tistory.com

https://bestkingit.tistory.com/155