sharingStorage

MVC 패턴에 대해 본문

Back-End/JSP | servlet

MVC 패턴에 대해

Anstrengung 2021. 10. 27. 16:56

 

 

 

 

MVC 패턴이란?

모델-뷰-컨트롤러(Model–View–Controller, MVC)의 약자인 MVC패턴은 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. (모델 2구조라고도 함)

 

이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다.

 

 

 

 

 

 

 

MVC패턴은 3가지 요소로 구성되어 있다.

 

1. 서블릿 (흐름제어 역할)

2. JSP (유저에게 결과를 보여주는 view역할)

3. 자바빈 혹은 서비스 클래스 (요청에 대한 로직 처리)

 

 

※자바빈(JavaBean)이란?

 자바로 작성된 컴포넌트들 즉, 클래스를 일반적으로 말한다.

JSP 프로그래밍에는 DTO (Data Transfer Object)나 DAO(Data Access Object) 클래스의

객체를 JSP페이지에서 사용하기 위해 사용한다

자바빈을 이용하여 프로그래밍하면 클래스의 객체 선언과 비즈니스 로직 등을

<% %> 스크립틀릿 영역에서 작성하지 않아서 가독성이 좋음

 

 

 

 

(MVC모델) 웹브라우저 사용자의 요청을 서블릿이 받는다. 서블릿은 웹브라우저의 요청을 받아 View로 보여줄것인지 Model로 보내줄것인지 정하여 전송해줍니다. 여기서 View페이지는 사용자에게 보여주는 역할만 담당하고 실질적인 기능의 부분은 Model에서 담당합니다. 모델2 방식의 경우 실질적으로 보여지는 HTML과 JAVA 소스를 분리 해놓았기 때문에 모델1방식에 비해 개발을 확장시키기도 쉽고 유지보수하기도 쉽다.

 

MVC 구조 

 

 

 

 

 

 

 

 

 

M (model)

 

프로그램이 목표하는 작업을 원활하게 수행하기 위해필요한 물리적 개체, 규칙, 작업등의 요소들을 구분되는 역할로써 정의해 놓은 것이 Model이다. (웹페이지에 필요한 기능)

Model은 DTO와 DAO로 분류할 수 있다.

 

 

 

Model을 잘 설계하는 것은 도메인 세계를 얼마만큼 이해하고 있는지와도 밀접한

연관이 있다.

최대한 구체적이고 작은 entity를 유지하면서 Model을 설계하는 것이 중요하다.

 

 

 

※entity :개체 (실체)를 의미한다. 객체지향 프로그래밍에서는 객체와 비슷한 의미

 

 

 

V (view)

 

사용자가 보는 화면에 입출력 과정 및 결과를 보여주기 위한 역할 을 한다.

입출력 순서나 데이터 양식은 컨트롤러에 종속되어 결정되고 모델의 상태를 변환하거나 받아서 렌더링 하는 역할을 한다.

주의 점은 도메인 로직의 어떤 것도 알고 있으면 안된다는 것이다. 절대적으로 객체를 전달받아 상태를 출력하는 역할을 담당해야한다.

그러므로 view에서는 도메인 객체의 상태를 따로 저장하고 관리하는 클래스 변수 혹은 인스턴스 변수가 있을 필요가 없다.

 

 

C (controller)

 

controller는 model과 view를 연결시켜주는 다리 역할 을 함과 동시에 도메인 객체들의 조합을 통해 프로그램의 작동순서나 방식을 제어한다.

Controller는 view와 model이 각각 어떤 역할과 책임이 있는지 알고 있어야한다.

 

(웹 프로그래밍에서는 Controller에서 service layer를 분리하여 domain 로직이 수행되는 곳과 view의 요청을 매핑하는 곳을 독립적으로 관리할 수 있다.)

 

 

 

 

MVC패턴의 장점


  • 분업을 용이하게 함
  • 유지보수성, 확장성, 유연함이 증가함
  • 중복코딩 문제점 사라짐

 

 

 

 

MVC패턴은 구조가 복잡하여 어렵고 작업량이 많다는 단점과 JAVA에 대한 충분한 이해가 필요하다는 단점도 있다. 

따라서 후에 MVC패턴에서 파생된 패턴들을 공부해볼 예정이며 MVC패턴을 이용해 간단한 회원가입 웹사이트를 만들어보려고 한다.

 

 

 

'Back-End > JSP | servlet' 카테고리의 다른 글

JSP - 스크립트릿, 표현식, 선언부, 주석  (0) 2021.10.27
Comments