모델 생성하는 방법 = jsp에서 보여줄 데이터 생성 방법

 

Model이란?

Model은 HashMap 형태를 갖고 있으며 key-value 값을 가지고 있다.

addAttribute()와 같은 기능을 통해 모델에 원하는 속성과 값을 주어 전달할 view에 데이터를 전달할 수 있다.

 

Spring에서 Controller의 메서드를 작성할 때는 특별하게 Model이라는 타입을 파라미터로 지정할 수 있다. 그러면 Spring은 특별하게 Model타입의 객체를 만들어서 메서드에 주입하게 되는데, 이 Model객체는 컨트롤러에서 생성된 데이터를 담아서 JSP에 전달하는 역할을 하게 된다.

그러므로 이를 이용해서 JSP와 같은 View로 전달해야 하는 데이터를 담아서 보낼 수 있다. 

 

브라우저 ——> DispatcherServlet ——> Controller
                                                      <—— (모델과 뷰 지정)

 

 


 

 

이전 서블릿 ( 3가지 scope에 저장 )

-서블릿 작업
request.setAttribute(key, value);
session.setAttribute(key, value); 
application.setAttribute(key, value);

-jsp 작업
${key}

 

 

 

 


 

 

 

 

스프링

jsp 작업
${key}

방법1 
public String xxx(HttpServletRequest request) 
{ 
          request.setAttribute(key, value);
}



방법2
public String xxx(Model m) {                 // 자동으로 Model m = new Model(); 해줌 ⇒ m을 xxx메서드에 주입
          m.addAttribute(key, value);        // request.setAttribute(key, value); 와 동일


방법3
public String xxx(Map<String, String> m) {         // 자동으로 Map<String, String> m = new Map<>();
          m.put(key, value);                                    // request.setAttribute(key, value); 와 동일 }


방법4
public String xxx(@ModelAttribute(”key”) LoginDTO dto) {        //LoginDTO는 사용자 입력값을 저장용도 및 모델(jsp에서 보여줄 수 있다) 로도 사용이 가능하다.
          dto.setUserid(”aaa”);
          dto.setPasswd(”123”);
}



방법5
public String xxx(@ModelAttribute(”key”) ArrayList<LoginDTO> list) {

           list.add(new LoginDTO(”aa”, “123”));
           list.add(new LoginDTO(”bb”, “999”));
}

 

⇒ 리턴타입 String은 view 정보를 설정한 것이고
    파라미터타입은 Model 정보를 설정한 것이다.

 

 

 

 


 

 

방법1. request - request.setAttribute

 

 

 

 

방법2. (Model m) - m.addAttribute

 

 

 

 

방법3.(Map<String, String> map) - map.put

 

 

 

 

방법4. (@ModelAttribute(”key”) LoginDTO dto) - dto.set

 

 

 

방법5. (@ModelAttribute("key") ArrayList<LoginDTO> list) - list.add(new LoginDTO)

 

 

 

방법6. ModelAndView - mav.setViewName()
                                          - mav.addObject()

xoo | 수진