[Spring] Controller 컨트롤러 #Model

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;
	}




댓글

Designed by JB FACTORY