스프링 부트, 입문! 05

윤현우·2022년 11월 17일
0

스프링 부트, 입문!

목록 보기
2/18
post-thumbnail

MVC의 역할과 실행 흐름

MVC 패턴

  • 하나의 어플리케이션, 프로젝트를 구성할 때 그 구성 요소를 각 담당자 별로 세가지의 역할로 구분한 패턴

웹 서비스는 클라이언트와 서버의 소통을 통해 동작한다.

이 때 스프링 부트는 서버의 역할을 하는데 서버로서의 스프링 부트를 한단계 더 들여다 보면 Model, View ,Controller의 유기적 역할 분담이 존재한다.

Controller는 클라이언트로 부터 요청을 받고 View는 최종 페이지를 만들어주고 Model은 최종페이지에 쓰일 데이터들을 뷰에게 전달한다.
이러한 패턴을 MVC 패턴이라고 한다.


View

  • 데이터를 기반으로 사용자에게 보여지는 인터페이스 요소이다.
  • 데이터 및 객체의 입력, 그리고 보여주는 출력을 담당한다.

view 규칙

  1. 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
  2. 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 된다.
  3. 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 한다.

Controller

  • 데이터와 사용자 인터페이스 요소들을 잇는 다리역할
  • 사용자가 데이터를 클릭하고, 수정하는 것에 대한 "이벤트"들을 처리하는 부분
  • 사용자가 접근한 URL에 따라 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터(Model)을 의뢰하고, 데이터를 View에 반영해 사용자에게 알려준다.

Controller 규칙

  1. 모델이나 뷰에 대해서 알고 있어야 한다.
  2. 모델이나 뷰의 변경을 모니터링 해야 한다.

Model

  • 데이터를 가진 객체
  • 데이터는 내부의 상태에 대한 정보를 가질 수도 있고, 모델을 표현하는 이름 속성으로 가질 수 있다.

Model 규칙

  1. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야만 한다.
  2. 뷰나 컨트롤러에 대해서 어떠한 정보도 알지 말아야 한다.
  3. 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 한다.


이 전 강의때 했던 내용을 바탕으로 복습하면서 MVC 실행 흐름을 알아보았다.

/templates/goodbye.mustache

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <h1>{{nickname}}님, 안녕히 가세요!</h1>
</body>
</html>

src/main/java/com/example/springstudy/controller/FirstController.java

@GetMapping("/bye")     // -> GetMapping으로 /bye 페이지를 받으면
    public String goodBye(Model model) {
        model.addAttribute("nickname", "윤현우");  // --> Model 객체로 데이터를 받아서
        return "goodbye";   // ---> View로 페이지를 뿌려준다
    }

@GetMapping

  • GetMapping을 통해 localhost:8080/bye 요청이 들어오면 함수를 실행하게 한다.
  • Controller 역할

model.addAttribute("nickname", "윤현우");

  • goodbye.mustache에 nickname을 등록했다.
  • 모델 객체를 생성해서 nickname 이라는 변수에 윤현우라는 데이터를 적용시킨다.
  • Model 역할

return "goodbye";

  • Spring이 자동으로 goodbye라는 이름의 View를 찾아서 반환한다.
  • View 역할

References(참고자료)
https://www.inflearn.com/course/%EA%B0%9C%EB%85%90%EC%8B%A4%EC%8A%B5-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%9E%85%EB%AC%B8
https://cocoon1787.tistory.com/733

profile
개발자가 되는 그날까지

0개의 댓글