ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 반환함

     

    정적일 때는 변환하지 않고 그대로 반환하였으나 템플릿 엔진에서는 변환하여 넘겨준다!

    소스 확인하면 변환하여 넘어간 것을 알 수 있다.

Designed by Tistory.