XML/JSON
서비스나 데이터를 HTTP 기반 API형태로 제공하는 곳이 많다. 예를들어 트위터, 네이버가 각자 사이트에서 사용하는 기능을 제공해 주는방식으로 HTTP 기반 API형태로 제공해준다. 이들 API특징 중 하나는 응답으로 XML/JSON형식을 사용한다는 것이다. 스프링 MVC에서는 응답생성을 위한 뷰클래스를 만든다던지, HttpServlerResponse를 이용해서 원하는 응답을 생성할 수 있지만, 좀더 쉬운 방법을 제공해주고 있다. 그것이 바로 @RequestBody, @ResponseBody 이다.
@RequestBody
@RequestBody는 요청몸체를 자바객체로 변환시킬 때 사용한다. 예를들어 요청 파라미터 문자열을 자바 String객체로 변환 시키거나 JSON형식의 몸체를 자바객체로 변환할 때 사용한다.
@ResponseBody
@ResponseBody는 RequestBody와는 반대로 자바객체를 응답몸체로 변환시키기 위해서 사용한다. 보통 자바 객체를 JSON형식이나 XML형식의 문자열로 변환할 때 사용한다.
package my.com.ajax.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping(value = "/main")
public class MainController {
@RequestMapping(method = RequestMethod.GET)
public String main() {
return "main";
}
@ResponseBody
@RequestMapping(method = RequestMethod.POST)
public String main2(@RequestBody String body) {
return body;
}
}
위 코드는 HTTP 요청몸체를 받아서 body String객체에 저장후 @RequestBody를 통해 다시 응답객체로 변환해서 뷰로 출력해주는 코드이다. 이 흐름중에 HTTP요청몸체가 String객체로 변환할 때는 StringHttpMessageConverter가 이용되고 똑같이 String객체가 응답몸체로 변환할때도 StringHttpMessageConverter가 이용된다. <mvc:annotation-driven/>을 설정해주면 StringHttpMessageConverter외에 JSON, XML 등을 자동변환해주는 Converter가 등록이된다.
Jackson2를 이용한 JSON처리
Jackson2는 요청몸체를 자바객체로 변환시키거나 자바객체를 JSON형태의 응답몸체로 변환시킬때 사용하는 라이브러리로, MappingJackson2HttpMessageConverter가 처리한다.
'Spring' 카테고리의 다른 글
Spring(13) - WebSocket (0) | 2019.04.16 |
---|---|
Spring(12) - 파일업로드 (0) | 2019.04.16 |
Spring(10) - Restful방식을 스프링에서사용하기 (2) | 2019.04.15 |
Spring(9) - View구현 (0) | 2019.04.15 |
Spring(8) - HandlerMapping, HandlerAdapter (0) | 2019.04.15 |