Reference
[스프링] Spring 프레임워크에서 @RequestBody 사용해서 vo를 따로 만들지 않고 Map으로 파라미터 값 자동 매핑(mapping)하기
https://zzznara2.tistory.com/761
@ResponseBody 이해하기
https://ismydream.tistory.com/140
메소드에 @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>
'Dev > Web' 카테고리의 다른 글
[Spring] Bean 정의 및 property (0) | 2019.10.29 |
---|---|
[Spring] Bean 설정 - beans:bean (0) | 2019.10.29 |
[Spring] Application Context와 Servlet Context 설정과 Transaction (0) | 2019.10.28 |
[Spring] 스프링 기초 - ViewResolver 설정 (0) | 2019.10.25 |
[Spring] 스프링 기초 - Controller 여러개 맵핑하기 (0) | 2019.10.25 |