본문 바로가기
language/JSP

Model1 vs Model2 vs MVC(Model View Controller) 패턴(pattern)

by 스파이디웹 2020. 8. 7.
728x90

1. 모델1

 

JSP에서 모든 로직과 출력을 처리하느냐 아니면 JSP에서는 출력만 처리하느냐에 따라서 모델 1 구조와 모델 2 구조로 구분된다 

 

천천히 알아보자

 

 

DB는 제외한 모델 1구조라고 할 수 있다 (만약 DB가 있다면 서비스&빈클래스와 상호작용 할것 이다)

 

그림과 같이 웹브라우저의 요청을 JSP가 직접 처리한다. 필요에 따라 웹브라우저의 요청에 따라 서비스 클래스나 와 자바빈 클래스를 사용해서 웹 브라우저가 요청한 작업을 처리하고 그 결과를 클라이언트에게 출력한다.   

즉 , JSP 페이지에 비즈니스 로직을 처리하기 위한 코드와 웹 브라우저에 결과를 출력하는 코드가 섞인다는 것을 의미한다.

 

 

2. 모델 2

 

웹 브라우저의 요청을 서블릿이 받고 이후 알맞는 로직 클래스에 의해서 처리후 JSP 페이지로 포워딩 한다.

모델 2 구조는 모든 요청을 하나의 서블릿에서 처리한다는 점이 특징이다. 따라서 서블릿은 웹 브라우저의 요청을 구분하는 방법이 필요하다

이후 처리가 되면 JSP페이를 선택하여 응답하게 된다.

 

3. MVC (Model - View - Controller : 모델 - 뷰 - 컨트롤러) 

 

먼저 그림을 보자

 

자 이름에 대해 하나씩 살펴보자

  • 모델 : 비즈니스 영역의 로직을 처리한다.
  • 뷰 : 비즈니스 영역에 대한 프레젠테이션 뷰를 담당한다.
  • 컨트롤러 : 사용자의 입력 처리와 흐름 제어를 담당 한다.

사용자의 모든 요청(입력)은 컨트롤러에 보내며 , 이후 모델에서 제공하는 비즈니스와 관련된 기능을 이용해서 사용자의 요청을 처리한다. 

모델에서 알맞은 비즈니스 로직을 수행한 후 컨트롤러는 사용자에게 보여줄 를 선택한다. 이후 컨트롤러는 화면에 보여줄 데이터를 뷰에게 전달하게 되고 이후 뷰는 사용자게 적절한 화면을 보여주게 된다.

 

  • 비즈니스 로직을 처리하는 모델과 결과 화면을 보여주는 뷰를 분리한다
  • 어플리케이션의 흐름 제어나 사용자의 처리 요청은 컨트롤러에 집중 된다.

이로 인해 

 

모델은 비즈니스와 관련된 로직만 처리하는데 집중 하고

뷰는 사용자에게 알맞은 화면을 보여주는 역할만 수행하며

컨트롤러는 사용자의 요청에 대해서 알맞은 모델을 사용하고 사용자에게 보여줄 뷰를 선택하면 된다.

 

즉 MVC 패턴을 사용함으로써 유지보수 작업이 쉬워지고 어플리케이션을 쉽게 확장할 수 있게된다.

 

 

 

4. MVC 패턴이랑 모델2 구조의 차이

 

모델 2 구조= 웹개발에 도입한 MVC 패턴

모델 2와 mvc패턴은 완벽하게 일치한다.

  • (c)컨트롤러 = 서블릿
  • (m)모델 = 로직 처리 클래스, 자바빈
  • (v)뷰 = JSP
  • 사용자 = 웹 브라우저 내지 휴대폰과 같은 어플리케이션

 

MVC패턴

Model2

기능

Model

서비스클래스 or 자바빈

~ 비지니스 로직을 처리하는 모든 것이 모델에 속한다. 컨트롤러부터 특정 로직에 대한 처리 요청(게시판 글쓰기, 회원 가입 등)이 들어오면 이를 수행하고 수행 결과를 컨트롤러에 반환한다.
(request 객체나 session객체에 저장하기도 함)

View

JSP페이지

~ 클라이언트에 출력되는 화면을 말한다. 모델1과는 달리 로직 처리를 위한 코드가 내포되어있지 않다. 요청 결과의 출력 뿐만 아니라 컨트롤러에 요청을 보내는 용도로도 사용된다.
(request객체나 session객체에 저장된 정보를 토대로 화면 출력)

Controller

Servlet

~ MVC패턴(Model2)모든 흐름제어츨 맡는다. 브라우저로 요청이 들어오면 어떤 요청이 들어오는지 분석하여 이 요청을 처리하기 위한 모델을 사용하여 처리한다. 사용한 모델로 부터 처리결과를 받으면 추가로 처리하거나 가공해야 할 정보가 있다면 처리 후 request객체나 session객체에 저장하고, View(JSP페이지)를 선택하여 Foward나 redirect하여 클라이언트에 출력한다.

 

장점

단점

~ 출력을 위한 뷰 코드와 로직처리를 위한 자바코드를 분리하기 때문에 JSP모델1에 비해 코드가 복잡하지 않다.
~ 뷰, 로직처리에 대한 분업이 용이하다.
~ 기능에 따라 분리되어 있기 때문에 유지보수가 용이하다.

~ 구조가 복잡하여 습득이 어렵고 작업량이 많다.
~ Java에 대한 깊은 이해도가 필요하다.

-JSP파일은 결국 서블릿으로 변환이 되어 실행된다.

 

-JSP파일이 Servlet으로 변환되는 과정은 오직 한번만 일어나므로 같은 페이지에 수많은 사용자의 요청이 있더라도 처리속도는 거의 떨어지지 않게 된다.

 

-만약 JSP페이지의 코딩 내용이 변경된다면 다시 변환 과정을 거친다.

 

-즉 JSP가 서블릿을 기반으로 하고 있기 때문에 JSP의 동작 방식을 이해하기 위해서는 Servlet에 대한 이해도도 필요하다.

 

출처:

https://m.blog.naver.com/acornedu/221128616501

728x90

댓글