@ResponseBody 이해하기
프로그래밍/Spring MVC 2013. 9. 4. 15:35@ResponseBody 이해하기
메소드에 @ResponseBody 로 어노테이션이 되어 있다면 메소드에서 리턴되는 값은 View 를 통해서
출력되지 않고 HTTP Response Body 에 직접 쓰여지게 됩니다.
이때 쓰여지기 전에 리턴되는 데이터 타입에 따라 MessageConverter 에서 변환이 이뤄진 후 쓰여지게 됩니다.
MessageConverter 의 종류
- StringHttpMessageConverter
- FormHttpMessageConverter
- ByteArrayMessageConverter
- MarshallingHttpMessageConverter
- MappingJacksonHttpMessageConverter
Jackson's ObjectMappter 를 사용하여 request, response 를 JSON 으로 변환할때 사용되는 MessageConverter 이다.
applicaton/json 을 지원한다.
- SourceHttpMessageConverter
- BufferedImagedHttpMessageConverter
아래는 MessageConvert 와 View 를 같이 사용하는 예제
getByIdInJSON 메소드의 경우 @ResponseBody 어노테이션이 있는 반면에 getByidInHTML 은 어노테이션이 없다.
@ResponseBody 가 있는 getByIdInJSON 메소드는 리턴값이 UserModel 객체가 MessageConvert 로 설정된 MappingJacksonHttpMessageConverter 에서 JSON 으로 변환 작업이 이뤄지고
@ResponseBody 가 없는 getByIdInHTML 메소드는 ViewResolver 에 의해 선택된 /WEB-INF/jsp/user.jsp 에서 처리가 이뤄지게 됩니다.
자바 코드
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping( value="/json/{id}", method = RequestMethod.GET)
@ResponseBody
public UserModel getByIdInJSON( @PathVariable String id){
UserModel user = new UserModel();
user.setId( id);
user.setName( "ellie");
return user;
}
@RequestMapping( value="/html/{id}", method = RequestMethod.GET)
public String getByIdInHTML( @PathVariable String id, ModelMap model){
UserModel user = new UserModel();
user.setId( id);
user.setName( "ellie");
model.addAttribute( "user", user);
return "user";
}
}
xxx-servler.xml 파일
<bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonHttpMessageConverter"/>
</list>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp" />
</bean>
'프로그래밍 > Spring MVC' 카테고리의 다른 글
ContentNegotiatingViewResolver 이해하기 (0) | 2013.09.04 |
---|---|
Spring AOP를 사용하여 DB 트랜잭션시 주의점 (0) | 2013.08.19 |
Spring MVC - fileupload (0) | 2009.12.24 |
Spring MVC - Themes (0) | 2009.12.23 |
Spring MVC - Locale (0) | 2009.12.23 |