[spring] MVC 패턴

공수정·2022년 5월 16일
0

spring

목록 보기
21/32

개요

Servlet과 JSP의 한계

  1. Servlet 개발
    java코드에 HTML 코드를 같이 작성해야해서 작성하기 어렵고, 복잡하며, 지저분하다는 단점이 존재
  2. jsp 개발
    Servlet보다는 HTML작업은 조금 더 깔끔하게 진행 할 수 있지만, 이렇게 개발을 해도 상단에 java로 비즈니스 로직을 처리해서 유지보수가 어려워지는 단점이 존재

변경의 라이프 사이클

UI 변경과 비즈니스 로직을 변경의 라이프 사이클이 다르며, 서로에게 영향을 주지 않기 때문에 분리해 작성하는 것이 훨씬 유지보수에 도움

기능 특화

jps와 같은 뷰 템플릿은 화면을 렌더링하는 것에 최적화 되어있기에 해당 부분만 담당하는 것이 가장 효율적


MVC 패턴

MVC

위와 같은 이유로 Model, View, Controller라는 영역으로 서로의 역할을 나눈것을 MVC패턴이라고 말함

C(Controller) 컨트롤러

  • HTTP 요청을 받고 요청에 대한 검증을 진행
  • 비즈니스 로직 실행
  • 뷰에 전달할 결과 데이터 조회 후 Model에 담아서 전달

M(Model) 모델

  • 뷰에 출력할 데이터를 담음

V(View) 뷰

  • 모델에 담겨있는 데이터를 이용해 화면 그리는 작업
  • V(View) 뷰가 필요한 데이터를 전부 M(Model) 모델에 담아 전달해 주기 떄문에 V(View) 뷰는 화면 렌더링에만 집중할 수 있음

MVC 1


1. 클라이언트 호출
1. Controller : 비즈니스 로직 실행
1. Controller : Model에 조회 데이터 결과 저장
1. Controller : Model과 로직 실행 결과를 View에 전달
1. View : Model을 참조해서 화면 렌더링
1. 렌더링 결과를 응답으로 전송

이때 Controller가 너무 많은 역할을 하게됨 -> MVC2 패턴으로 진화
: 비즈니스 로직은 Service라는 계층을 별도로 만들어서 처리하고, Controller는 요청에 맞는 비즈니스 로직을 호출하는 역할을 담당


MVC 2

  1. 클라이언트 호출
  2. Controller : 요청에 맞는 Service 호출 ( = 비즈니스 로직 호출 )
  3. Service : 비즈니스 로직 실행 및 Model에 조회 데이터 결과 저장
  4. Controller : Model과 로직 실행 결과를 View에 전달
  5. View : Model을 참조해서 화면 렌더링
  6. 렌더링 결과를 응답으로 전송

출처
1. 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

profile
계속해서 공부하는 개발자입니다 :)

0개의 댓글