Intro
Spring Framework는 주로 MVC 패턴으로 개발됩니다.
MVC 패턴은 각각 Model, View, Controller란 뜻으로, 이 3가지의 요소가 서로 역할을 분담하여 요청을 처리하는 구조입니다.
이때 클라이언트가 요청하는 페이지에 따라 정적 컨텐츠와 동적 컨텐츠로 나뉩니다.
동적 컨텐츠 처리 구조
클라이언트가 요청하는 URL을 받아오고 싶을 때 아래와 같이 Controller를 정의합니다.
HelloController.java
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model) {
model.addAttribute("data", "hello!!");
return "hello";
}
}
이렇게 컨트롤러를 정의한 후 사용자가 localhost:8080/hello 페이지를 요청하면
내장 톰캣 서버에서 스프링 컨테이너에 hello 페이지 관련 Controller를 요청합니다.
만약 Controller가 있을 경우 해당 Controller가 요청을 받아(@GetMapping("hello"))
model을 가공(model.addAttribute)하고, HTML 파일 경로를 viewResolver에 전달(return "hello")합니다.
그 후에 viewResolver가 resources/templates 폴더에서 전달받은 model을 가공하여 HTML 파일을 변환시키고, 사용자의 브라우저로 넘겨줍니다.
정적 컨텐츠 처리 구조
정적 컨텐츠는 사용자가 요청한 URL을 처리할 컨트롤러가 없을 경우 표시됩니다.
사용자가 localhost:8080/hello-static.html 페이지를 요청하면 내장 톰캣 서버에서 해당 페이지를 처리할 컨트롤러를 찾습니다.
하지만 이전과는 달리 지금은 아무런 컨트롤러도 정의되지 않았습니다.
이런 경우 내장 톰캣 서버가 resources/static 폴더에서 사용자가 요청한 페이지와 일치하는 HTML 파일을 찾아서 보여줍니다.
출처
'Study > Spring Boot' 카테고리의 다른 글
[Spring Boot] 의존성 주입과 스프링 빈 등록 (0) | 2022.02.13 |
---|---|
[Spring Boot] Service와 테스트 케이스 만들기 (0) | 2022.02.13 |
[Spring Boot] Repository와 테스트 케이스 만들기 (0) | 2022.02.13 |
[Spring Boot] JSON 형태로 객체 반환하기 (0) | 2022.02.12 |
[Spring Boot + Kotlin] 프로젝트 생성 (0) | 2021.09.15 |