본문 바로가기

Spring Framework

<Spring> MVC 방식

반응형

MVC는 Model Controller View 의 약자로 개발하면서 자주 들어보았을 것이다. 

 

JSP는 간단하고 쉽게 웹 프로그래밍을 할 수 있지만 로직이 복잡한 프로그램을 개발하기에는 불편한 점들이 많다. 소스코드 안에 브라우저에서 전달 되는 인수 처리, 비즈니스 로직, 데이터베이스 연계 및 UI 코드 등을 하나의 모듈에서 처리하기 때문에 소스코드가 길어지고 중복되는 코드 구현이 많아질 수 있다. 이렇게 반복되는 코드등을 신경 쓰지 않고 하나의 모듈로 구현하는 방식의 소스코드를 모델1 이라고 한다. 

 

 

모델 1은 스파케티 코드 라고도 하는데 화면과 비즈니스 로직 즉 UI코드(html)과 비즈니스 로직이 분리가 안되어 가독성이 떨어지며 복잡한 코드를 만들게 된다. Html코드 사이사이에 코드블럭을 이용해 중간중간 비즈니스 로직을 처리하는 경우로 실제로 보게되면 상당히 가독성이 떨어지고 복잡하다. 

 

이러한 문제를 해결하기 위해 모델2 (MVC) 방식이 제안되었다. 

 

 

MVC 는 브라우저에서 처리 요청이 개별 jsp로 전달되고 결과가 jsp에서 출력되는 것이 아니라 하나의 서블릿에서 전달 받아 Controller로 처리를 요청하고, Contorller는 비즈니스 로직을 처리하기 위하여 Model에 데이터를 전달하고 비즈니스 로직을 호출한다. 처리 결과는 Model에서 화면 출력을 담당하는 JSP에 전달되어 결과가 보여지게 되고 jsp는 결과"만" 보여주는 View 의 역할을 하게 된다. 

 

즉 비즈니스 로직과 UI 코드를 분리하고 요청을 단일한 점점에서 처리하는 구조를 MVC 구조라고 한다.  

 

MVC는 화면 출력을 위한 코드와 비즈니스 로직을 분리함으로써 종속성을 줄이고(보다 자유롭), 재사용성을 높이고, 가독성도 좋아져 소스코드를 쉽게 변경 할 수 있게 된다. 

 

Model : 어플리케이션의 데이터와 비즈니스 로직을 담는 객체

View : Model의 정보를 사용자에게 표시한다.

Controller : 사용자의 요청을 받아 처리를 수행할 Model에 데이터를 전달하고 로직을 실행시키고 해당하는 

View 를 선택한다. 

 

 

MVC를 지원하는 프레임워크로는 몇 가지가 있는데 그중에서 전자정부표준프레임워크에서 활용하는 Spring MVC에 대해 알아보면

 

View, Controller, Dispatcher Servelet, HandlerMapping 등 다양한 인터페이스와 구현 클래스를 제공한다. 

 

Spring MVC 의 동작 흐름을 살펴보면

 

 

1. Client 요청이 들어오면 Dispatcher Servlet이 가장 먼저 요청을 받는다.

2. Handler Mapping이 요청에 해당하는 Controller를 리턴한다. @RequestMapping의 형태로 요청되는 URL을 처리할 Controller 메소드가 Mapping된다. 

3. . Controller는 비즈니스 로직을 호출하고 전달 받은 결과를 ModelAndView에 반영하여 리턴 한다.

4. ViewResolver는 어떤 형태로 출력할 것인지 형태를 결정하고, view name을 받아 해당되는 view객체를 리턴한다. 주로 JSP가 활용되며, XML, JSON등 활용 가능하다.

5. View는 Model 객체를 받아 결과를 출력한다. 

반응형

'Spring Framework' 카테고리의 다른 글

Lombok 플러그인  (0) 2021.01.25
AOP란 (Aspect Oriented Programming)  (0) 2020.10.13