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<StringString>> list = new ArrayList<Map<StringString>>();
    
    return list;
}
cs


컨트롤러를 위와 같이 작성한다. 컨트롤러까지 작성한 후, 매핑된 주소를 url에 입력해보면 JSON임을 확인할 수 있다.


+ Recent posts