저번 시간에는 정적컨텐츠를 알아봤는데 이번 시간에는 MVC와 템플릿 엔진에 대해서 알아보자
일단, MVC가 어떤것인지부터 알아보자 !
🤔 MVC란 ?
애플리케이션을 개발할 때 사용하는 디자인 패턴으로 Model / View / Controller로 앞 글자를 따 MVC라고 한다.
쉽게 생각해보자면,
Model은 데이터에 관련된 부분이라고 생각하면된다.
View 는 눈에 보이는것이다. html이나 css를 이용해서 나타내는 요소일 것이라고 생각이든다.
Controller 는 제어하는 것인데 아마 여기서 프로그래밍이 많이 이뤄질 것 같은 느낌이다.
좀 더 비유를 해보자면,
Model은 식료품창고를 관리하고 음식을 요리하는 주방장
View는 주방장이 내온 음식을 플레이팅하는 직원
Controller은 주문도 받고 서빙도 하는 홀 매니저라고 생각하면 좀 더 쉬울 것 같다.
🤔 템플릿 엔진이란 ?
서버에서 동적으로 html을 변환하여 웹 브라우저로 보내주는 역할을 한다.
혼자 MVC가 무엇일까 궁금해서 이것저것 찾아보다가 어떻게 MVC가 나타났고 어떤 과정이 있었는지
웹 개발 진화 과정을 정리해놓은 아주 좋은 동영상이 있길래 하나하나 정리 해보기로 했다.
혹시 궁금하다면 아래 포스팅을 참고하시길!
[개발지식] 자바 백엔드 웹 기술 역사 (Servlet에서 Spring Boot까지 이야기)
MVC 관련해서 공부하다가 왜 ? MVC가 생겨난거야..? 라는 궁금증을 가지고 이것저것 찾아서 공부해 보다가 역사가 재미있어서 포스팅을 해놓기로 했다. 궁금하다면 아래 동영상을 보길 바란다! (역
jnaa.tistory.com
이렇게 간단하게 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 |