Framework/Spring
@ResponseBody
초록 (green)
2017. 6. 28. 00:11
1. 정의
@RequestBody 어노테이션은 컨트롤러의 메소드 내에서 해당 어노테이션이 붙은 객체를 바인딩시
리턴값을 view로 자동 바인딩 되지만, 컨트롤러에 @ResponseBody 어노테이션이 선언되어 있다면
리턴 값은 view를 통해 출력되지 않고 HTTP Response Body에 직접 쓰여진다.
이 때, 해당 메소드 리턴값의 데이터 타입에 따라 MessageConverter에서 변환이 이뤄진 후 쓰여진다.
주로 jsp에서 비동기 통신(ajax)시 사용한다. application/json을 지원한다.
어노테이션을 <mvc:annotation-driven />을 사용하고 있다면, HttpMessageConverter를 기본으로 등록하기 때문에,
별도의 설정이 필요 없이 Jackson 라이브러리만 추가하면 된다.
2. 예제
1 2 3 4 5 6 7 8 9 10 | <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-asl</artifactId> <version>1.9.13</version> </dependency> | cs |
pom.xml 에 두 개의 라이브러리를 추가한다.
1 2 3 4 5 6 7 8 9 10 11 | <!-- @ResponseBody 어노테이션이 있는 Controller는 리턴값이 MessageConvert로 설정된 MappingJacksonHttpMessageConverter 에서 JSON 으로 변환 작업이 이뤄진다. --> <beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" > <beans:property name="messageConverters"> <!-- MappingJacksonHttpMessageConverter : MessageConverter의 종류중 하나. Jackson's ObjectMapper를 사용한다. request, repsonse를 JSON으로 변환할 떄 사용하는 MessageConverter. application / json을 지원한다. --> <beans:bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/> </beans:property> </beans:bean> | cs |
context.xml에 해당 bean을 추가한다.
1 2 3 4 5 6 7 | @RequestMapping(value = "/index.do") public @ResponseBody List memberIdCheck() throws Exception { List<Map<String, String>> list = new ArrayList<Map<String, String>>(); return list; } | cs |
컨트롤러를 위와 같이 작성한다. 컨트롤러까지 작성한 후, 매핑된 주소를 url에 입력해보면 JSON임을 확인할 수 있다.