: 서버에서 하는 것 없이 파일을 그대로 웹브라우저에 띄우는 것
내장 톰캣 서버가 hello-static.html이라는 요청이 왔다고 스프링 컨테이너에 넘김
1. spring은 먼저 우선순위가 높은 controller에서 hello-static관련 컨트롤러가 있는지 확인
2. 없으면 resources:static/hello-static.html을 찾아서 반환
MVC : Model, View, Controller
@Controller
public class HelloController{
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model){
model.addAttribure("nama", name);
return "hello-template";
}
}
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello'+ ${name}"> hello! empty</p>
</body>
</html>
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name){
//http 응답 body부분에 아래 내용을 직접 넣어주겠다!
return "hello "+ name;
}
이전의 템플릿 엔진은 view라는 템플릿을 가지고 조작하는 방식이고,
이 방식의 경우는 데이터를 그대로 내려줌
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name){
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
json으로 나오는 것을 확인할 수 있다 (key : value 로 이루어진 구조)
Spring은 @ResponseBody라는 어노테이션을 보고 HTTP의 BODY에 문자 내용을 직접 반환
(viewResolver 대신에 HttpMessageConverter가 동작)
그런데, 문자가 아니고 객체 형태일 경우,
'Json방식으로 데이터를 만들어 http에 반환하겠다!'가 기본 정책
StringHttpMessageConverter : 기본 문자처리
MappingJackson2HttpMessageConverter : 기본객체 처리