Spring Model and ModelMap

Kevin·2024년 2월 23일
0

Spring

목록 보기
10/27
post-thumbnail

1번. Model을 인자로 받은 Controller 메서드

	/*  
     * 엑셀 조회 메서드
     * 
     */
  @RequestMapping(value = "/system/InsertExcel.do")
	public String ExcelInsert(@ModelAttribute("selectExcelDTO") SelectExcelDTO excelVO, HttpServletRequest request, HttpServletResponse response, Model model) {
    
    	return "jsp/system/selectExcel";
    }

2번. Mode Map을 인자로 받은 Controller 메서드

	/*  
     * 엑셀 조회 메서드
     * 
     */
  @RequestMapping(value = "/system/InsertExcel.do")
	public String ExcelInsert(@ModelAttribute("selectExcelDTO") SelectExcelDTO excelVO, HttpServletRequest request, HttpServletResponse response, ModelMap model) {
    
    	return "jsp/system/selectExcel";
    }

위의 차이점을 알아보기 이전에 ModelModelMap의 공통점과 ModelAndView와의 차이점에 대해서 먼저 알아보자.


공통점으로는 데이터를 추가할 때 addAttribute 메서드를 사용해서 속성을 추가한다는 것이다.

model.addAttribute("result", null);

modelMap.addAttribute("result", null);


이 때 첫 인자는 attribute의 이름이고, 두 번째 인자는 attribute, 즉 데이터이다.


또 다른 공통점으로는 데이터만 저장하고, View에서 해당 데이터를 사용할 목적으로 사용한다는 점이 있다.


그러면 ModelAndView 와의 차이점은 무엇이 있을까?

바로 ModelAndView은 데이터와 이동하고자 하는 View Page를 함께 저장한다는 것이다.

		/*  
     * 엑셀 조회 메서드
     * 
     */
  @RequestMapping(value = "/system/InsertExcel.do")
	public ModelAndView ExcelInsert() {
	    ModelAndView mav = new ModelAndView();
			mav.addObject("result", null);
			mav.setViewname("jsp/system/selectExcel");

			returnmav;
    }

이러한 ModelAndView는 @Controller 어노테이션을 사용하기 이전에 활발히 사용되었고, MVC가 @Controller를 지원한 이유로는 사장되고 있다고 한다.


그러면 Model과 ModelMap의 차이점은 무엇이 있을까?

가장 큰 차이점으로는 Model은 인터페이스이고, ModelMap은 클래스라는 것이다.

public interface Model { ... } 
public class ModelMap extends LinkedHashMap<String, Object> { ... } 

사실 이게 거의 끝이다.
둘은 거의 흡사한 기능을 제공하며, 정말 차이점을 굳이 찾아본다면 Model은 Map 인터페이스 구현체(Tree Map)등으로 변경이 쉽기에 코드의 유연성이 더 높다는 차이점이 있다.

Map map = new TreeMap<>();

Map map = new HashMap<>();

profile
Hello, World! \n

0개의 댓글