ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 뷰 템플릿 & MVC 패턴, 역할, 실행 흐름
    back-end/SpringBoot 입문 2022. 2. 21. 10:25
    728x90

     

     

     

     

     

     

    뷰 템플릿 페이지가 출력되기까지, MVC의 역할과 실행 흐름

     

    MVC의 역할

    • View Templates : 보여지는 화면 담당. 웹 페이지를 하나의 틀로 만들고 변수로 재구성시킴
    • Controller : 화면 처리 로직 -> 라우팅
    • Model : 데이터 관리

     

     

     

     

     

     

    위와 같은 역할들이 어떤 흐름으로 처리되는지 살펴보자.

    웹 서비스는 클라이언트와 서버의 소통으로 이루어진다.
    스프링 부트는 서버의 역할을 수행해준다.
    자세히 들어다보면 Model, View, Controller의 유기적 역할분담으로 이루어진다.

     

    • Controller : 클라이언트로 부터 요청을 받음
    • View : 최종 페이지를 만들어줌
    • Model : 최종 페이지에 쓰일 데이터들을 View에게 전달

     

    MVC란 자그만치 3가지 기술이 합쳐진 콤비네이션!

     

     

     

     

     

    간단한 예시

     

    View Templates : greetings.mustache

    <html>
      <head>
        <meta charset="UTF-8">
        ....
        <body>
          <h1>홍팍님, 반갑습니다!</h1>
        </body>
    </html>

     

     

     

    Controller : controller.java

    @Controller  //자바클래스를 컨트롤러로 선언
    public class controller {
      
      @GetMapping("/hi")  //접속할 url주소 매핑
      public String niceToMeetYou() {
         return "greetings";  //templates/greetings.mustache -> 브라우저로 전송!
      }
    }

     

     

     

    hi주소로 요청을 보내면 greetings를 반환해준다.

     

     

     

    여기서 질문하나

     

    템플릿이라메 일반 html 파일이랑 다를게 뭐임?

     

    mustache 파일을 조금 수정해봄

     

    (mustache는 서버 사이드 템플릿 엔진임. 타임리프나 등등 있음.)

     

     

    View Templates : greetings.mustache

    <html>
      <head>
        <meta charset="UTF-8">
        ....
        <body>
          <h1>{{username}}님, 반갑습니다!</h1>
        </body>
    </html>

     

     

    username을 내가 원하는대로 바꿀거임. 페이지를 템플릿화 시켜버리겠다.

     

    그럼 이제 데이터를 쓸 수 있게 모델을 만들어야되는데 새로 만들까?? ㄴㄴㄴ

     

    컨트롤러로 다시가보자.

     

     

    Controller : controller.java

    @Controller
    public class controller (Model model) {  //모델을 파라미터로 받아옴
      model.addAttribute("usernmae", "hongpark") //addAttribute() : 변수를 가져옴, 뒤에는 변경시킬 값
      @GetMapping("/hi")
      public String niceToMeetYou() {
         return "greetings";
      }
    }

     

    username부분을 내가 원하는대로 model로 변경함

     

     

     

     

     

    정리한다.

     

     

     

    728x90

    댓글

Designed by Tistory.