모델 생성하는 방법 = 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()
'Framework > SPRING FRAMEWORK' 카테고리의 다른 글
Controller 클래스 메서드의 리턴타입 (0) | 2023.09.15 |
---|---|
모델 생성후 3가지 scope에 저장 (0) | 2023.09.15 |
여러 개의 데이터 한번에 저장하기 (0) | 2023.09.15 |
사용자 입력 데이터 얻어오기(파라미터) - @RequestParam (0) | 2023.09.14 |
사용자 입력 데이터 얻어오기(파라미터) - HttpServletRequest방식 & POST 한글처리 (0) | 2023.09.14 |