web developer

[java] Model, ModelMap, ModelAndView 본문

Framework/Spring [java]

[java] Model, ModelMap, ModelAndView

trueman 2023. 1. 10. 22:25
728x90
728x90

Model, ModelMap, ModelAndView


스프링의 model 객체에는 Model, ModelMap, ModelAndView가 있다.

위의 3개 객체를 크게 2가지 관점으로 보면, model(ModelMap) vs ModelAndView로 나눌 수 있다.


Model vs ModelMap 


 

[1] Model, ModelMap 공통점

 

  • model.addAttribute("변수명");
  • modelMap.addAttribute("변수명");
  • 둘 다 addAttribute를 사용함
  • Model / ModelMap에 데이터만 저장 후 View (.jsp) 에서 사용목적

 

[2] Model, ModelMap 차이점

 

  • Model - 인터페이스
  • ModelMap - 클래스

 

[3] 예제 

 

  • java
@RequestMapping(value = "/test.do")
public String test (HttpServletRequest request, Model model, ModelMap modelMap){

    String modelTest = "Model Test";
    String modelMapTest = "ModelMap Test";

    model.addAttribute("modelTest", modelTest);
    model.addAttribute("modelMapTest", modelMapTest);

    return "test";
}

 

  • jsp 
<body>
    Model 저장한 값 : <input type="text" value="${modelTest}"/>
    ModelMap 저장한 값 : <input type="text" value="${modelMapTest}"/>
</body>

Model, ModelMap vs ModelAndView


[1] Model, ModelMap Vs ModelAndView 차이점

 

  • 데이터만 저장한다 vs 데이터와 이동하고자 하는 View Page를 같이 저장한다

 

[2] ModelAndView

 

  • addObject를 통해 데이터를 저장
  • setViewName을 통해 이동하고자 하는 View를 저장 [ mv.setViewName ]
  • 메소드 안에서 ModelAndView mv = new ModelAndView(); 
  • return 타입은 ModelAndView [Model, View 모두 리턴 가능]

 

[3] 예제

 

  • java
@RequestMapping(value = "/test.do")
public ModelAndView test(HttpServletRequest request, Model model, ModelMap modelMap){
	        
	  ModelAndView mv = new ModelAndView();
	  mv.addObject("ModelAndView", "ModelAndView Test");
	  mv.setViewName("test");
	  
	  return mv;
		
}

 

  • jsp
<body>
    ModelAndView 저장한 값 : <input type="text" value="${modelAndView}"/><br/>
</body>

출처 : https://javaoop.tistory.com/56

출처 : https://itworldyo.tistory.com/143

728x90
728x90