[59일차] Model vs ModelMap vs ModelAndView

저요·2022년 11월 20일

2022 100th day challenge

목록 보기
59/97

서론

어제까지는 MVC패턴에 대해서 공부해보았다. 그리고 Model이 무엇인지까지 공부해 보았다. 하지만 MVC패턴을 구현하다 보면 Model외에도 ModelMap, ModelAndView라는 것들도 만나게 된다 과연 이것들의 차이점이 무엇인지 오늘 한 번 알아보도록 하겠다.

본론

Model

  • Model은 View의 이름을 String으로 리턴한다.
  • Model은 인터페이스이다.

ModelMap

  • ModelMap은 클래스이다.

Model과 ModelMap은 사실 서로 같은 기능이다. addAttribute() 함수를 이용해 Model에 데이터를 추가한 다음에, View에서 접근할 수 있도록 하는 방법이다. 다음과 같은 모습으로 구현이 된다.

@GetMapping("/test")
public String getTest(Model model) {
	//Model 객체에 value를 담는다.
	model.addAttribute("value", "test");
    
    //이 return된 jsp이름으로 jspResolver에 접근해서 찾는다.
    return "test";
}

@RequestMapping("/test.do")
public String test(HttpServeletRequeset request, ModelMap model, testVO test){
	//여러가지 코드 생략 
	return "/test"
}

GetMapping vs RequsetMapping

@GetMapping이 더 새로나온 annotaion으로, @RequestMapping(method = RequsetMethod.GET)을 단축시킨 것이다.

ModelAndView

  • String객체가 아닌 ModelAndView객체를 리턴한다.

위의 두 가지는 String으로 jsp파일 이름을 return해서 해당 jsp를 찾아냈다. ModelAndView에서는 String을 반환하지 않고 ModelAndView객체 안에 .setVieName()으로 jsp이름을 세팅해서 return 한다. 그리고 jspResolver에서 그에 해당하는 jsp파일을 찾는 방식으로 진행이 된다!

참고로, jspResolver에서는 String객체와 ModelAndView객체만을 받으며, 그 외의 객체는 null로 세팅이 된다.

결론

결론적으로 셋의 기능은 같다. 차이점은 어떤식으로 구현하는지이다.

참고

https://hsunnystory.tistory.com/116
https://m.blog.naver.com/kimdongy1000/222102351660
https://javaoop.tistory.com/56

profile
웹개발

0개의 댓글