본문 바로가기
Coding/[Web] Backend

MVC 패턴 (feat. Servlet/JSP)

by Gofo 2023. 4. 3.

MVC

Model +  View + Controller의 구조로 이루어진 패턴(동작 방식)을 말한다.

 

  • Model
    • 데이터와 비즈니스 로직을 관리/처리한다.
    • 즉, 사용자의 요청에 대한 업무를 처리한다.
    • DAO(Data Access Object) 등의 Java class
  • View
    • 사용자가 보게될 결과 화면을 담당한다. (레이아웃, 화면 처리 등)
    • HTML, JSP
  • Controller
    • 사용자의 입력 처리와 흐름을 제어하고, 사용자에게 받은 명령을 model이나 view로 라우팅한다.
    • 사용자로부터의 입력에 대한 응답으로 모델/뷰를 업데이트하는 로직을 포함한다.
    • Servlet

 

동작 방식

  1. 사용자의 action들은 controller가 감지한다.
  2. Controller는 사용자의 action을 확인하고 model을 업데이트한다.
  3. Controller는 model을 나타내줄 view를 선택한다.
  4. View는 model을 이용하여 화면은 나타낸다.

 

 


Servlet/JSP에서의 MVC 패턴

구성

아래와 같이 MVC 패턴을 구성할 수 있다.

  • Model : Biz, DAO
  • View : JSP
  • Controller : Servlet

 

동작 방식

  1. JSP : 사용자에게 화면을 보여준다.
  2. JSP ↔ Controller : DTO로 데이터가 전달된다.
  3. Controller : 요청의 유효성을 검증하고, 전체 흐름을 제어한다.
  4. Contorller ↔ Biz : DTO로 데이터가 전달된다.
  5. Biz
    1. DB 관련 로직을 제외한 비즈니스 로직을 구현한다.
    2. Connection을 생성/반납하고 commit, rollback 등 transcation을 관리한다.
    3. 상황에 적합한 DAO을 호출함으로써 transaction 단위로 connection을 관리할 수 있다.
  6. Biz ↔ DAO : Entity로 데이터가 전달된다.
  7. DAO
    1. DB 관리 로직을 구현한다.
    2. 테이블의 CRUD 기능을 제공한다.
    3. 보통 1개의 테이블 당 1개의 DAO가 존재한다.

 

 

DTO, Entity

Entity는 DB 테이블과 동일한 요소를 가진다.

DTO는 Entity와 유사하지만 외부에 노출되면 안되는 값은 제외한다.

 

DTO와 Entity를 구분함으로써 아래와 같은 이점을 얻을 수 있다.

  • Entity를 외부에 노출하지 않을 수 있다.
  • Entity의 변경을 최소화한다.
  • Entity에 presentation 로직을 구현하지 않는다.

 


참고

https://developer.mozilla.org/ko/docs/Glossary/MVC

 

MVC - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN

MVC (모델-뷰-컨트롤러) 는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴입니다. 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고

developer.mozilla.org

 

https://velog.io/@junhok82/Servlet%EA%B3%BC-JSP%EB%A1%9C-%EC%95%8C%EC%95%84%EB%B3%B4%EB%8A%94-MVC-%ED%8C%A8%ED%84%B4

 

Servlet과 JSP로 알아보는 MVC 패턴

MVC 디자인패턴은 장점이 많은 architecture다. 그러나 그만큼 알아야할 내용이 많고 구조또한 복잡해서 차근차근 알아갈 필요가있다. 이번 포스팅을 통해서 mvc 구조의 탄생비화(?)를 포함해 servlet과

velog.io

 

 

'Coding > [Web] Backend' 카테고리의 다른 글

[SpringBoot] @Builder의 장점  (3) 2024.01.14
Singleton Pattern  (1) 2023.04.04
Entity, DTO, DAO, VO  (0) 2023.04.03
PRG 패턴 : Post → Redirect → Get  (0) 2023.04.03
Cookie, Session  (0) 2023.03.31

댓글