본문 바로가기

Programming/Java & JSP & Spring

[Spring] 모델2 방식과 스프링 MVC

최근의 모든 웹 개발은 거의 모델2 방식을 사용한다.

모델2 방식은 MVC구조를 응용한 방식이라고 하는데, 가장 핵심적인 내용은

"화면과 데이터 처리를 분리해서 재사용이 가능하도록 하는 구조" 라고 할 수 있다.


모델2 구조는 다음과 같다

모델(Model) : 데이터 혹은 데이터를 처리하는 영역을 의미한다.

뷰(View) : 결과 화면을 만들어 내는데 사용하는 자원을 의미한다.

컨트롤러(Controller) : 웹의 요청을 처리하는 존재로 뷰와 모델 사이의 중간 통신 역할을 한다.


모델2에서 모든 요청은 기본적으로 컨트롤러를 호출한다. 각 컨트롤러는 자신을 호출하는 특정한 URI경로를 가지고 있다.

모델2 방식은 개발자와 웹 퍼블리셔의 영역을 분리할 수 있으며, 유지보수에 유용하게 사용될 수 있다.


모델2에서 Front Controller 패턴으로

모델2 방식이 개발자와 웹 퍼블리셔 간의 분업을 이뤄냈지만, 각 컨트롤러 사이의 중복적인 코드와 같은 문제로 인해

모델2 방식은 좀 더 강제적인 Front Controller 방식을 적용하게 된다.

아래의 그림은 스프링 MVC가 사용하는 구조이다.

Front Controller 패턴의 가장 중요한 변화는 전체 로직의 일부만을 컨트롤러가 처리하도록 변경되었다는 점이다.

전체 로직의 일부를 컨트롤러에게 위임하고 모든 흐름의 제어는 앞쪽의 Front Controller가 담당하게 된다.

Front Controller 패턴을 사용했을 경우 개발자는 전체 로직의 일부분만을 처리하는 형태의 컨트롤러를 작성하면

되므로 개발자가 작성해야하는 코드는 줄어들고 좀 더 규격화된 코드를 작성할 수 있게된다.


스프링 MVC의 구조

  1. 사용자의 모든 요청은 스프링 MVC의 Front Controller에게 전달된다.

  2. 전달된 요청은 적절한 컨트롤러를 찾아서 호출한다. (이때 사용되는 컨트롤러의 작업은 개발자의 몫이다.)

  3. 컨트롤러는 적절한 서비스 객체를 호출하고 서비스는 다시 데이터베이스 작업을 담당하는 DAO를 이용해서 원하는 데이터를 요청하게된다.

  4. DAO 객체는 MyBatis를 이용하는 Mapper를 통해서 원하는 작업을 수행한다.

  5. 서비스가 처리한 데이터를 컨트롤러에게 다시 전달한다.

  6. 컨트롤러는 다시 스프링 MVC쪽으로 데이터를 전달한다.





참조 : 코드로 배우는 스프링 웹프로젝트






'Programming > Java & JSP & Spring' 카테고리의 다른 글

[Spring] Spring MVC 컨트롤러 파라미터  (0) 2017.01.31
[Spring] 스프링 MVC의 컨트롤러  (0) 2017.01.30
[Spring] MyBatis (마이바티스) 란?  (0) 2017.01.30
[Spring] IoC, DI 란?  (3) 2017.01.30
Maven이란?  (0) 2017.01.30