스프링부트는 정적 컨텐츠 기능을 자동으로 제공한다. 정적 컨텐츠는 static폴더에 저장을 하면 된다. 정적 컨텐츠는 말 그대로 정적이므로 이 파일에 어떤 프로그래밍을 할 수는 없다. 따라서 서버에서 정적 컨텐츠를 반환할 때 파일을 그대로
전달한다.
페이지 소스를 보면 다음과 같이 html파일이 그대로 전달이 된 것을 볼 수 있다.
웹 브라우저에서 hello.html(정적 콘텐츠)를 요청하면 내장 톰캣 서버가 요청을 받아 스프링에게 넘긴다.
스프링은 컨트롤러 쪽에 hello라는 컨트롤러가 있는지 먼저 찾는다.
만약 관련 컨트롤러가 없으면 스프링부트가 resources/static/hello.html이라는 정적 콘텐츠를 찾아서 웹 브라우저에게 반환한다.
model, view, controller
- model : db에 접근
- view : 보여지는 화면
- controller : 내부 동작 처리
예를 들어 웹 브라우저에서 localhost:8080/hello-mvc
를 요청했다면, 내장 톰캣 서버가 이를 스프링에게 알린다.
그러면 관련된 helloController
(mapping이 되어있음) 가 model에서 name:spring
이라는 데이터를 꺼내어 hello-template
과 함께 return한다.
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam(name= "name") String name, Model model) {
model.addAttribute("name",name);
return "hello-template";
}
그 후에 viewResolver
가 hello-template
이라는 이름의 view가 있는지 찾는다.
templates폴더 내에 hello-template.html
이 존재하므로 , 이 view에 템플릿 엔진 처리를 완료한 후 , 웹 브라우저에 전달한다.