일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 정보처리기사 합격
- MariaDB
- 제이큐그리드
- spring
- Javascript
- JVM Heap
- 정보처리기사 필기
- Model
- implements
- SQL
- mysql
- jqgrid 개념
- View
- ModelMap
- 정처기 합격
- java
- ResponseBody
- 자바
- 트랜잭션
- jqGrid
- 어노테이션
- JQuery
- HTML
- ModelAndView
- Class
- Where
- HTTP
- 스프링
- 개발자 이직
- extends
- Today
- Total
크리스의 개발일기
[JAVA] @RequestBody와 @ResponseBody 분석 본문
서론 :
예를 들어 웹페이지에서 json으로 request한 파라미터들을 java에서 받으려면 java object로의 변환이 필요하며
마찬가지로 response 시에도 java object에서 json으로 변환이 필요하다.
이러한 작업들을 해주는 어노테이션이 바로 @RequestBody 와 @ResponseBody 이다.
컨트롤러에 두 어노테이션을 추가해주면, JSON이나 key/value 방식 xml 등으로 송수신 할 수 있다.
HTTP란?
- 데이터를 주고 받기 위한 프로토콜(약속)입니다.
- 아래의 사진과 같은 모양으로 HTTP body 부분에 XML(또는 JSON)이 들어갈 수 있습니다.
<그림1> HTTP body부분에 XML 데이터가 들어간 모습
<그림2> HTTP body부분에 JSON 데이터가 들어간 모습
@RequestBody 어노테이션이란?
- HTTP body안에 JSON을 VO에 맵핑하는 스프링 어노테이션
즉 @RequestBody 어노테이션을 이용하면 HTTP 요청 Body를 자바 객체로 전달받을 수 있다.
@ResponseBody 어노테이션이란?
- VO 객체를 JSON으로 바꿔서 HTTP body에 담는 스프링 어노테이션.
- 메서드의 return 값을 HTTP Response의 body에 담는 역할을 합니다.
즉 요청한 형태에 맞춰서 메시지 변환기를 통해 결과값을 반환한다. @ResponseBody는 @RequestBody가 선택한 형식으로 결과값을 변환하여 반환한다고 보면 된다. 또한 @ResponseBody을 이용하면 자바 객체를 HTTP 응답 body로 전송할 수 있다.
@RestController
public class LoginWebController
{
// HTTP 요청의 내용을 Member 객체에 매핑하기위해 @RequestBody 애너테이션을 설정한다.
@RequestMapping(value="/member/login", method = RequestMethod.POST)
public MemberResultDto login(@RequestBody Member member)
{
MemberResultDto memberResultDto = memberService.login(member);
return memberResultDto;
}
}
- 위의 예제 소스에서는 HTTP 요청의 body안에 Member 데이터를 파라미터로 받기위해,
@RequestBody를 사용하였습니다.
@ResponseBody를 사용하지 않은 이유는 @RestController를 사용하였기 때문입니다.
@Controller와는 다르게 @RestController는 리턴값에 자동으로
@ResponseBody를 붙게되어 HTTP 응답데이터(body)에 자바 객체가 매핑되어 전달됩니다.
( ※ @Controller인 경우에는 @ResponseBody를 적어줘야 합니다. )
출처 :
'JAVA' 카테고리의 다른 글
[JAVA] LIST와 ArrayList란? (0) | 2020.11.17 |
---|---|
[JAVA]Map이란? (HashMap, Hashtable, TreeMap) (3) | 2020.11.16 |
[JAVA] 접근제한자(public, private, protected, default)란? (0) | 2020.11.16 |
[JAVA] baseMap 분석 (수정) (0) | 2020.11.16 |
[JAVA] Call by value 와 Call by reference 차이 (0) | 2020.11.12 |