<!DOCTYPE HTML>
<html>
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
Hello
<a href="/hello">hello</a>
</body>
</html>
웹 -> localhost:8080/hello-static.html->내장 톰켓 서버가 요청을 받음->spring에게 넘김 -> 컨트롤러에 먼저 hello-static을 찾아봄 컨트롤러가 우선순위를 가짐 -> 없다면 resources/static 에서 해당 html파일을 찾고 응답을 해줌
hello!empty
"'hello ' + ${name}" 있는 값으로 hello!empty 이 내용이 치환이 됨 서버없이 그냥 html을 만들어서 볼 때 적어놓고 볼 수 있으려고 그런거임.
웹 브라우저 -> localhost:8080/hello-mvc->내장 톰켓 서버를 먼저 거치고 스프링부트에 던짐 -> hellocontroller에서 메서드를 호출해줌 -> return : viewName리턴 hello-template, model(name:spring) -> viewResolve return으로 받은 값과 똑같은 애를 찾아서 thymeleaf 템플릿 엔진한테 처리해달라고 함 -> 템플릿엔진이 렌더링을 해서 변환후 웹 브라우저에게 넘겨줌 지금까지 한거는 변환하지 않았었음
@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 Hello {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
웹 브라우저 -> localhost:8080/hello-api -> 내장 톰켓서버가 스프링부트에 던짐 -> 스프링은 컨트롤러에 hello-api가 있는걸 암 @ResponseBody라는 어노테이션이 안붙어있으면 템플릿 view리절버에 던짐 근데 있으면 http 응답에 그대로 이 데이터를 넘겨야겠다 인지함 근데 문자가 아니라 객체임 스프링 입장에서 한 번 생각해야됨 객체가 오면 기본 디폴트가 json 방식으로 데이터를 만들어서 http에 응답하겠다. -> HttpMessageConverter라는 애가 동작을 함 return값이 그냥 문자면 StringConverter라는 애가 동작을 함 return이 객체이면 JsonConverter라는 애가 객체를 json스타일로 바꿈 바꾼거를 나를 요청한 서버나 클라이언트에게 보내줌