Post

스프링4 - 스프링 MVC 1

MVC 패턴과 Servlet

스프링 MVC에 대해 알아보기 전에 MVC 패턴Servlet이 무엇인지에 대해 먼저 알아보자.

MVC 패턴

Model - View - Controller의 줄임말로, 전체 웹 로직을 크게 View, Controller, Model로 기능과 역할을 분리하여 정형화된 소프트웨어 디자인 패턴을 제공하는 개발 방법론이다. 사용자 인터페이스와 비즈니스 로직을 분리하여 역할을 명확히 하고 유지보수 및 확장성을 용이하게 해준다.

Model

  • 데이터의 흐름을 뜻한다.
  • 비즈니스 로직 상에서 필요한 데이터 구조를 뜻한다.
  • View로 전송 될 데이터의 흐름, 구조 혹은 객체를 뜻한다.
  • 데이터를 가진 객체로서 DB 및 서비스 로직과 접촉한다.

View

  • 사용자에게 보여줄 화면을 정의한다.
  • 모델에 담긴 데이터를 사용해서 화면을 그린다.
  • 데이터를 보여주는 방식을 의미한다.

Controller

  • 사용자의 요청을 받아서 비즈니스 로직을 실행시킨다.
  • 비즈니스 로직의 제어 흐름을 관리한다.
  • Model을 브라우저에 적합한 데이터로 변환하여 View로 전송한다.

MVC 패턴 모델1,2 방식

MVC 패턴을 구현하는 방식에는 모델1 방식과 모델2 방식이 있다.

모델1 방식

View에서 Controller 역할을 함께 수행하는 구조

ex1 Model1 방식

Model1 방식은 JSP 같은 View Page에서 View와 Controller 로직을 함께 작성하여 개발 속도를 높이고 흐름을 한눈에 파악할 수 있게 해준다. 그러나 서비스 규모가 커지게 되면 View에 수많은 Controller 로직이 포함되고 점점 유지보수가 힘들어진다.

모델2 방식

기존 모델1 방식에서 비즈니스 로직의 규모가 커지게 될 경우 소스 관리 및 유지보수가 힘들어지는 단점을 보완하기 위해 나온 방식이다.
ViewController를 모듈화하여 역할을 명확히 나누는 방식으로, ViewController의 로직을 분리함으로써 개발에 필요한 시간은 늘어날 수 있지만 화면 개발과 서비스 개발 사이의 Role이 명확해지며 유지보수가 용이해진다.

ex2 Model2 방식

사용자 요청이 Servlet을 통해서 DTO 등의 파라미터로 Controller에 전송되고 서비스 로직을 거쳐서 DAO를 통해 필요한 데이터를 DB에서 가져온다. 받아온 데이터(Model)를 View에서 나타낼 데이터 형태로 변환하여 View를 생성한 후에 사용자 브라우저로 전송한다.

Servlet

  • HTTP 요청과 응답을 처리하기 위해 편리한 기능을 제공하는 자바 클래스이다.
  • 독자적으로 실행될 수 없고 Tomcat과 같은 서블릿을 지원하는 서블릿 컨테이너를 통해 실행된다.
  • 웹페이지를 요청에 따라 동적으로 생성하여 제공해준다.
  • HTML 형태로 응답을 전송하여 페이지를 생성한다.
  • MVC 패턴의 Controller 역활을 위해 사용된다.
  • 자바의 스레드를 활용하여 실행 및 관리된다.
  • Sevlet 객체는 싱글톤으로 관리되며 서블릿 컨테이너 종료시 함께 종료된다.

ex3 Servlet 작동방식

This post is licensed under CC BY 4.0 by the author.