[Spring] Controller 컨트롤러 #Model
- 웹/Spring
- 2021. 8. 11.
Spring
Spring Controller의 Model 객체
Spring에서는 각 JSP영역 대신 Model에 어트리뷰트를 실어서 전달한다.
@GetMapping("/choosinsu")
public String choo(Model model, int age, String name) {
model.addAttribute("attr1","ABC");
model.addAttribute("attr2", name + age);
model.addAttribute("ABCD"); // 값을 꺼낼때 ${string} 으로 꺼낼 수 있음
return "choosinsu";
}
addAttribute(key, value) 를 사용해서 jsp에 값을 전달할 수 있다.
전달받은 값은 JSP에서 변수처럼 사용할 수 있다.
※ 보통은 key, value 형태로 사용하지만 value만 작성할 경우 전달한 인스턴스의 카멜케이스로 변환된 클래스명으로 꺼 낸다.
EX ) "ABCD" 라는 값을 넣을 경우 문자열(String) 클래스의 인스턴스이므로 카멜케이스로 변환된 ${string} 으로 사용할 수 있다. (String -> string, Servlet -> servlet, KORPlayer -> KORPlayer)
1
2
|
<h3>${attr1 }</h3>
<h3>${attr2 }</h3>
|
cs |
컨트롤러의 매개변수에 Model타입 변수를 설정해놓으면 알아서 Model 인스턴스가 넘어오게 된다.
@GetMapping("/choosinsu")
public String choo(Model model, @ModelAttribute("age") int age, @ModelAttribute("name") String name) {
return "choosinsu";
}
@ModelAttribute를 이용해 매개변수로 받을 경우 addAttribute를 하지 않아도 자동으로 넘어간다.
ModelAndView
Model과 같이 attribute를 담을 수 있지만 view도 같이 담을 수 있는 객체
리턴 시 model과 viwe를 같이 보낸다.
단점 : 스프링에서 자동으로 처리해주는 기능을 사용하지 않는다.
장점 : 직관적이다.
(편한걸 사용하면 되지만 단점이 더 큰것 같음)
@RequestMapping("/mnv")
public ModelAndView modelAndView() {
ModelAndView mnv = new ModelAndView();
// attribute
mnv.addObject("a", 10);
mnv.addObject("b", "비");
mnv.setViewName("hello"); // jsp 페이지
return mnv;
}
'웹 > Spring' 카테고리의 다른 글
[Spring] Controller 컨트롤러의 파라미터 수집기능 (0) | 2021.08.10 |
---|---|
[Spring] Controller 컨트롤러 #RequestMapping (0) | 2021.08.09 |
[Spring] log4j 로그를 효율적으로 사용 (0) | 2021.08.06 |
[Spring] lombok - VO 클래스를 간단하게 (설치시 에러해결) (0) | 2021.08.05 |
[Spring] JUnit5 반복 테스트 (0) | 2021.08.04 |