저번 시간에는 정적컨텐츠를 알아봤는데 이번 시간에는 MVC와 템플릿 엔진에 대해서 알아보자
일단, MVC가 어떤것인지부터 알아보자 !
🤔 MVC란 ?
애플리케이션을 개발할 때 사용하는 디자인 패턴으로 Model / View / Controller로 앞 글자를 따 MVC라고 한다.
쉽게 생각해보자면,
Model은 데이터에 관련된 부분이라고 생각하면된다.
View 는 눈에 보이는것이다. html이나 css를 이용해서 나타내는 요소일 것이라고 생각이든다.
Controller 는 제어하는 것인데 아마 여기서 프로그래밍이 많이 이뤄질 것 같은 느낌이다.
좀 더 비유를 해보자면,
Model은 식료품창고를 관리하고 음식을 요리하는 주방장
View는 주방장이 내온 음식을 플레이팅하는 직원
Controller은 주문도 받고 서빙도 하는 홀 매니저라고 생각하면 좀 더 쉬울 것 같다.
🤔 템플릿 엔진이란 ?
서버에서 동적으로 html을 변환하여 웹 브라우저로 보내주는 역할을 한다.
혼자 MVC가 무엇일까 궁금해서 이것저것 찾아보다가 어떻게 MVC가 나타났고 어떤 과정이 있었는지
웹 개발 진화 과정을 정리해놓은 아주 좋은 동영상이 있길래 하나하나 정리 해보기로 했다.
혹시 궁금하다면 아래 포스팅을 참고하시길!
이렇게 간단하게 MVC를 알아봤으니, 실습을 통해 MVC와 템플릿엔진의 동작과정을 이해해보자 !
📗 HelloController
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model){
model.addAttribute("name",name);
return "hello-template";
}
📗 resources/templates 안에 hello-template.html
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
💻 출력 화면
http://localhost:8080/hello-mvc?name=박진아로 작성해주면 내가 작성한 name 값이 그대로 출력되는 것을 볼 수 있다.
아래 그림을 통해 다시 한번 자세히 알아보자 !
1️⃣ 웹 브라우저에서 localhost:8080/hello-mvc 요청
2️⃣ 내장 톰켓서버가 스프링컨테이너의 helloController에서 hello-mvc가 매핑되었는지 확인 후 매핑된 메서드 출력
3️⃣ hello-template로 리턴 model name(키) 박진아 (값)
4️⃣ 스프링부트의 ViewResolver가 hello-template.html을 찾아서 Thymeleaf 템플릿 엔진으로 넘김
5️⃣ Thymeleaf 템플릿 엔진이 변환을 해서 html을 반환
즉, 이전에 실습을 통해 알아봤던 정적컨텐츠처럼 파일 그 자체를 웹 브라우저에 출력하는 것이 아닌,
요청받은 파라미터를 템플릿 엔진이 변환하여 HTML을 반환하는 것이다.
'ON > 실습' 카테고리의 다른 글
[Spring Boot] 회원관리 예제 - 비즈니스 요구 사항 정리 ① (0) | 2023.11.07 |
---|---|
[Spring Boot] 스프링 웹 개발 기초 ③ - API (2) | 2023.11.06 |
[Spring Boot] 스프링 웹 개발 기초 ① - 정적 컨텐츠 (0) | 2023.11.04 |
[Spring Boot] 스프링 부트 프로젝트 생성 | cmd 창으로 빌드 및 실행 ② (0) | 2023.11.03 |
[Spring Boot] 스프링 부트 프로젝트 쉽게 생성하기 ① (0) | 2023.11.02 |