

브라우저와 서버가 통신하기 위한 여러 프로토콜 가운데 한 종류로 웹 브라우저와 웹 서버 사이에 HTML(하이퍼텍스트) 문서를 주고받는 데 사용되는 통신 프로토콜이며 HTTP의 통신 방식은 기본적으로 '요청과 응답(request, response)'으로 이루어져 있는데요. 클라이언트가 요청(HttpRequest)을 서버에 보내면 서버는 클라이언트에게 응답(HttpResponse)하는 구조이다

resources:templates/ +{ViewName}+ .html클라이언트의 요청을 받으면 html파일로 응답해준다.
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("name", "hello!!!");
return "hello";
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1><p th:text = ${name}>hello.html파일입니다.</p></h1>
</body>
</html>


HttpMessageConverter 가 동작StringHttpMessageConverterMappingJackson2HttpMessageConverter자바 객체를 json 기반의 HTTP Body로 변환해준다.
return Type에 맞는 MessageConverter를 통해 return 하는 객체를 해당 타입으로 변환해서 클라이언트로 전달해줌.
즉, body부분에 직접 데이터를 넣어주겠다는 의미
@RestController를 사용하는 경우 반환값에 자동으로 @ResponseBody 어노테이션이 붙게 된다. 따라서 자바 객체를 반환하면 알아서 Json 형식으로 매핑해서 응답한다.
@Controller
public class HelloController {
@GetMapping("hellospring")
@ResponseBody
// 문자 반환 타입
public String helllospring(@RequestParam(name = "name", required = false) String name){
return name + "님 스프링에 오신 것을 환영합니다";
}
}

.html 파일이 아닌 문자열 그대로 body로 반환해준다.
@Controller
public class HelloController {
@GetMapping("helloapi")
@ResponseBody
// 객체 반환 타입
public Hello helloapi(@RequestParam(name="hello") String hello, @RequestParam(name="hi") String hi){
Hello hellos = new Hello();
hellos.setHello(hello);
hellos.setHi(hi);
// 객체가 오면 제이슨으로 반환해줌
return hellos;
}
// 객체 생성
static class Hello{
private String hello;
private String hi;
public void setHello(String hello) {
this.hello = hello;
}
public String getHi() {
return hi;
}
public void setHi(String hi) {
this.hi = hi;
}
public String getHello() {
return hello;
}
}
}

객체는 json형태로 반환해준다!
✅ @Responsebody어노테이션과 @RequestParam어노테이션
✅ @Requestbody에 대해서도 알아보자!