@ResponseBody
: HTTP의 BODY에 문자 내용을 직접 반환(HTML BODY TAG를 말하는 것이 아니다.)
(1) @ResponseBody 문자 반환
@Controller
public class HelloController {
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
}
실행 결과
package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name){
Hello hello = new Hello();
hello.setName(name);
return hello;
}
// static 선언시 class 안에서 또 다른 class를 사용할 수 있다.
static class Hello{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
property 접근방식, java bin 표준 방식 : getName, setName을 통해 Hello class에 접근한다.
@ResponseBody가 선언되어 있고, 객체를 반환할 시 json 형식으로 반환된다.
실행 결과
위와 같이 key와 value로 출력되면 json 형식이다.
@ResponseBody 사용 원리
localhost:8080/hello-mvc가 실행되면, 내장 톰켓 서버를 거친다.
스프링 부트에서는 java/helloController에서 @ResponseBody return: hello(name:spring)을 json 형식으로 return해준다.
(그대로 넘겨주는데 객체가 전달된다.)
@ResponseBody
public Hello helloApi(@RequestParam("name") String name){
Hello hello = new Hello();
hello.setName(name);
return hello;
}
객체가 오면 default가 json 방식으로 데이터를 만들어서 http 응답에 반환하겠다.
HttpMessageConverter : 단순 문자열일 시 StringConverter, 객체일 때는 JsonConverter
@ResponseBody를 사용 (실무에서 똑같이 사용된다.)
- HTTP의 BODY에 문자 내용을 직접 반환
- viewResolver 대신에 HttpMessageConverter 가 동작
- 기본 문자처리: StringHttpMessageConverter
- 기본 객체처리: MappingJackson2HttpMessageConverter
- byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음
클라이언트의 HTTP Accept 헤더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해서 HttpMessageConverter가 선택된다.
코드 입력 덜 입력한 상태에서 자동 입력 : ctrl + shift + enter
getter/setter/생성자 자동완성 (Generate) : alt + insert
'공부 및 활동 > 스프링 강의 정리' 카테고리의 다른 글
(회원 관리 예제) 회원 서비스 개발 (0) | 2021.09.26 |
---|---|
(회원 관리 예제) 회원 리포지토리 테스트 케이스 작성 (0) | 2021.09.20 |
(스프링 웹 개발 기초) MVC와 템플릿 엔진 (0) | 2021.09.20 |
(스프링 웹 개발 기초) 정적 컨텐츠 (0) | 2021.09.20 |
(프로젝트 환경설정) 빌드하고 실행하기 (0) | 2021.09.20 |
댓글