@ResponseBody / ajax / 아작스 / messageConverters | spring

2016. 1. 5. 15:57framework/spring

Spring Ajax 를 사용하는 예제이다.

 

 

@ResponseBody


Controller @ResponseBody 로 어노테이션이 선언 되어 있다면

Controller 에서 리턴되는 값은 View 를 통해서 

출력되지 않고

HTTP Response Body 에 직접 쓰여진다

이때 리턴되는 데이터 타입에 따라

MessageConverter 에서 변환이 이뤄진 후 쓰여진다

 

 

jsp에서 ajax (아작스) 비동기 통신을 할 때 주로 사용한다

ajax는 이 링크를 참조한다 (jquery ajax)

http://cofs.tistory.com/26


MessageConverter 의 종류

- StringHttpMessageConverter

- FormHttpMessageConverter

- ByteArrayMessageConverter

- MarshallingHttpMessageConverter

- MappingJacksonHttpMessageConverter

- Jackson's ObjectMappter 를 사용

- request, response 를 JSON 으로 변환할때 사용되는 MessageConverter

- applicaton/json 을 지원한다.

- SourceHttpMessageConverter

- BufferedImagedHttpMessageConverter


 

@ResponseBody 가 있는 Controller 리턴값이 MessageConvert 로 설정된  MappingJacksonHttpMessageConverter 에서 JSON 으로 변환 작업이 이뤄진다

 

 

 

 

* dispatcher-servlet.xml

<!--
        - This bean processes annotated handler methods, applying Application-specific PropertyEditors
        - for request parameter binding. It overrides the default AnnotationMethodHandlerAdapter.
     -->
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
        <!-- @ResponseBody를 사용하기 위해 -->
        <!-- jre : jackson-core, jackson-mapper 필요-->
  <property name="messageConverters">
   <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
  </property> 
    </bean>
cs

 

 

 * Controller

@RequestMapping("/index.do")
@ResponseBody
public List membrIdCheck() throws Exception {
        List<Map<String,String>> list = new  ArrayList<Map<String,String>>();
     return list;
 
}
 
cs

 

*Maven 

<dependency>
   <groupId>org.codehaus.jackson</groupId>
   <artifactId>jackson-core-asl</artifactId>
   <version>1.9.13</version>
  </dependency>
 
<dependency>
   <groupId>org.codehaus.jackson</groupId>
   <artifactId>jackson-mapper-asl</artifactId>
   <version>1.9.13</version>
  </dependency>
 
cs

 

 

 

도움이 되셨다면 공감을 부탁드립니다. ^^