mvc 패턴

MinSeong Kang·2022년 3월 7일
0

IT 지식

목록 보기
7/11
post-thumbnail

1. MVC 도입 배경


  • 하나의 Servlet과 jsp 코드 내에 비즈니스 로직과 뷰 렌더링 모두를 처리하게 되면, 너무 많은 역할이 포함되어 있고 유지보수가 어려워진다. UI 수정 시, 비즈니스 로직도 포함된 파일을 수정해야한다.
  • UI와 비즈니스 로직 수정 시기가 다르며, 서로 영향을 주지 않는다.
  • jsp는 뷰 렌더링에, Servlet은 자바 코드에 최적화된 기술이다. jsp는 목적에 맞게 HTML로 화면을 그리는 일을 처리하고 Servlet에는 비즈니스 로직을 처리하는데에 집중하게 하자.

2. MVC


모델 (Model)

  • 뷰에 출력할 데이터를 담아둔다.

컨트롤러 (Controller)

  • 모델과 뷰를 이어주는 다리 역할을 한다.
  • Http 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다.
  • 뷰에 전달할 데이터를 조회하여 모델에 저장한다.

뷰 (View)

  • 모델에 담겨있는 데이터를 사용하여 화면을 그린다.
  • 뷰가 필요한 데이터를 모델에 담겨서 뷰에 전달되기 때문에, 뷰는 비즈니스 로직이나 데이터 접근 방식과 상관없이 화면을 렌더링하는 것에 집중할 수 있다.

3. MVC를 지키는 방법


1. Model은 Controller와 View에 의존하지 않아야 한다.

  • Model 내부에는 Controller와 View와 관련된 코드가 있으면 안된다.

2. View는 Model에만 의존해야 하고, Controller에 의존하면 안된다.

  • View 내부에는 Model과 관련된 코드만 있을 수 있으며, Controller가 어떻게 동작하는지 알아서는 안된다.

3. View가 Model로부터 데이터를 받을 때는, 사용자마다 다르게 보여주어야 하는 데이터에 대해서만 받아야 한다.

  • View는 사용자한테 보이는 UI와 Model로부터 받은 데이터가 합쳐져 만들어지는 화면이다.
  • 모든 사용자에게 똑같이 보여지는 정보에 대해서는 Model로부터 받으면 안된다.
  • 이는 뷰가 자체적으로 가지고 있어야하는 정보이다.

4. Controller는 Model과 View에 의존해도 된다.

  • Controller는 Model과 View의 중개자 역할을 하면서 전체 로직을 구성한다.

5. View가 Model로부터 데이터를 받을 때, 반드시 Controller에서 받아야 한다.

  • Model이 가지고 있는 정보를 따로 저장해서는 안된다.
  • View가 Model로부터 데이터를 받을 때에는 Controller를 통해서 받아야 한다.

참고 자료

https://www.inflearn.com/course/스프링-mvc-1
https://www.youtube.com/watch?v=ogaXW6KPc8I

0개의 댓글