진짜 개발자
본문 바로가기

FrameWork/Spring

Spring - Model을 이용하여 View에 데이터 넘겨주기 - 6

728x90
Spring MVC Model을 이용한 View생성과 응답

앞선 포스팅에서 알아보았듯이 @Controller클래스 안의 @RequestMapping어노테이션이 부여된 method들은 사용자에게 응답할 View를 생성하는 역할을 하는 즉, Controller 메소드입니다. ControllerModel을 이용해 데이터를 가져오고 View에 데이터를 넘겨 적절한 View를 생성하는 역할을 합니다.

 

이번 포스팅에서는 Controller에서 사용자에게 응답할 View를 생성할 때 Model을 이용하여 View에 데이터를 전달하는 방법을 알아보도록 하겠습니다.

 

View에 데이터 전달

1. Model 객체 사용

우선 간단히 Controller를 생성했습니다. /myview라는 url에 매핑되도록 하였고 특이한 점은 Model을 매개변수로 전달받고 있습니다. 매개변수로 전달받은 model.addAttribute("key", "value"); 메소드를 이용하여 view 전달할 데이터를 key, value쌍으로하여 전달할 수 있습니다.

 

view(jsp)에서는 내부 객체인 request의 getAttribute("key")메소드를 이용하여 해당 값을 사용할 수 있습니다.

 

 

2. @ModelAttribute("key") 어노테이션 사용

@ModelAttribute 어노테이션이 부여된 메소드가 리턴하는 객체를 view로 바로 넘겨 사용할 수도 있습니다. @Controller 클래스안의 매핑되는 모든 URL에게 공통적으로 넘겨주어야할 데이터가 있을 때 사용하면 좋을 것 같습니다.

 

상단에 @ModelAttribute("value2")어노테이션이 부여된 value2()메소드를 생성했습니다. 해당 어노테이션 안의 "value2"가 값을 가져오는데 사용될 key로 사용되고, value2() 메소드가 return하는 객체가 value가 되어 view에 전달됩니다. 이 값은 해당 Controller안에 mapping 되어있는 모든 url에 적용됩니다.

 

앞서 말씀드린것처럼 @ModelAttribute("key")어노테이션을 이용하여 넘겨진 데이터를 이용하기 위해서는 어노테이션의 괄호안에 적힌 key값을 이용하여 사용할 수 있습니다.

 


myview와 myview2 모두에서 사용가능함을 볼 수 있습니다.

 

 

*View에 객체 넘기기

view에 객체를 넘겨주는 방법은 간단합니다. 앞서 설명드린 @ModelAttribute 어노테이션을 이용한 방법을 설명 드리겠습니다.

 

앞선 방법과 같이 어노테이션을 부여한 메소드를 작성합니다. 이때 return 타입은 넘겨줄 객체의 타입으로 정의합니다.

 

view에서는 다음과 같이 <%%>선언문안에 request.getAttribute() 메소드를 이용하여 해당 객체를 받아오면 됩니다. 중요한 점은 getAttribute()메소드는 Object 형을 반환 하기 때문에 넘겨준 객체의 형으로 캐스팅 해주어야 합니다.

 

객체의 데이터가 담겨 전달되었음을 볼 수 있습니다.