-
MVC와 템플릿 엔진[인프런] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB/섹션 2. 스프링 웹 개발 기초 2023. 2. 6. 23:20
* 인프런 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의를 듣고 작성한 내용입니다.
(강의 링크)
MVC: Model, View, Controller
- 과거에는 Controller와 View 따로 분류하지 않고 View에 모든 것을 다 함. → Model1 방식
- 요즘은 Controller와 View 쪼개는 것은 기본!
- View: 화면을 그리는 것
- Controller: 비즈니스 로직이나 서버 뒷단 내부 처리
- Model: 관련된 화면 쪽에서 필요한 것을 담아서 넘겨주는 것
- tymeleaf 템플릿 장점 → html 작성 후 서버 없이 열어봐도 껍데기 볼 수 있음
<html xmlns:th="http://www.thymeleaf.org"> <body> <p th:text="'hello ' + ${name}">hello! empty</p> # hello! empty 서버 없이 html만 만들어서 볼 때 값 확인하는 부분 # 실제 서버 구동하면 "'hello ' + ${name}" 값으로 치환 </body> </html>
실행하면 'Required request parameter 'name' for method parameter type String is not present' 에러 발생
* 파라미터 정보: Ctrl + p 로 name 부분 확인
required가 default true로 되어 있으므로 무조건 값을 넘겨주어야 한다. 값을 넘겨주지 않아서 에러 발생
?name=인자 형태로 넘겨주면 name 부분에 값을 받아서 동작
MVC, 템플릿 엔진 이미지
웹 브라우저에서 localhost:8080/hello-mvc 넘기면 내장 톰켓 서버 통해 스프링 부트로 전달
→ 스프링 컨테이너는 helloController에 메서드가 매핑 되어있으므로 메서드 호출(return은 hello-template, model(name:입력받은 인자값)하여 넘겨줌
→ 스프링은 viewResolver(화면 관련 해결자) 동작하여 View를 찾아주고 템플릿 엔진 연결시켜줌
→ viewResolver는 templates에서 아까 리턴한 값인 hello-template 찾아서 Thymeleaf 템플릿 엔진에게 처리하도록 넘김
→ 템플릿 엔진은 랜더링해서 변환한 HTML 반환함
정적일 때는 변환하지 않고 그대로 반환하였으나 템플릿 엔진에서는 변환하여 넘겨준다!
소스 확인하면 변환하여 넘어간 것을 알 수 있다.
'[인프런] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB > 섹션 2. 스프링 웹 개발 기초' 카테고리의 다른 글
API (0) 2023.02.07 정적 컨텐츠 (0) 2023.02.06