개발공부/Spring

스프링 프레임워크(Spring Framework) MVC

tigre 2023. 5. 1. 21:03
728x90
반응형

현재의 웹 애플리케이션 개발은 일반적으로 많이 사용하는 표준화 소스 구조를 만들어 개발을 진행한다.

이러한 표준화된 소스 구조를 웹 애플리케이션 모델이라고한다. 웹 애플리케이션 모델의 종류에는 모델1과 모델2 방식이 있다.

 

모델 1 방식

 

모델 1 구조는 사용자의 요청을 JSP가 전부 다 처리합니다. 웹브라우저 사용자의 요청을 받은 JSP는 자바 빈이나 서비스 클래스를 사용하여 웹브라우저가 요청한 작업을 처리하고 그 결과를 출력해줍니다.

 

장점: html안에 java와 각종 태그를 전부 넣다보니 개발이 빠름.

단점: 유지보수 어려움, 가독성 좋지않음.
     -> 유지보수 시, 개발자의 스트레스를 증가.

 

모델 2 방식

 

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

 

  • 클라이언트의 요청을 컨트롤러 역할을 수행하는 서블릿이 받고 처리결과를 뷰역할의 JSP로 보여준다.
  • 유지보수가 쉬움
  • 구조설계를 위한 개발 시간 추가
  • Client가 Server(was)에게 request하는것은 같은 처음에 컨트롤러가 받고 요청을 여서 서비스중 하나 어떤서비스를 사용할까 시킬까 결정 하는 것
  • 서비스를 따로 만들기 떄문에 기능이 많을 수록 다양한 서비스를 모듈화 시킬 수 있다.
  • DB접근을 위해 dao를 만든다. model객체를 이용해서 DB와 통신한다.
  • 데이터를 가져와서 컨트롤러에게 넘겨준다.
  • model2는 철저하게 분리된 시스템을 기본으로 한다.
    때문에 유지보수가 수훨하다. 대부분의 웹은 model2를 따른다. spring mvc또한 model2를 기반으로 하고있다.

 

MVC 디자인 패턴

모델2 구조에는 여러가지 개념들이 사용되는데 그중 가장 자주 사용되는 개념이 MVC이다.

MVC란 Model-View-Controller의 약자로 웹 애플리케이션을 화면부분, 요청 처리부분, 로직처리부분으로 나누어 개발하는 방법이다.

 

 

* MVC 구성요소

- Model : 비즈니스 로직을 처리한다.

- View : 사용자에게 보여줄 화면을 담당한다.

- Controller : 사용자의 요청 및 흐름 제어를 담당한다.

 

* MVC의 특징

- 각 기능이 분리되어 있어 개발 및 유지보수가 편리하다.

- 각 기능의 재사용성이 높아진다.

- 디자이너와 개발자의 작업을 분업화해서 쉽게 개발할 수 있다.

 

* MVC 기능

 

Model 

  - 데이터베이스 연동과 같은 비즈니스 로직을 수행한다.

  - 일반적으로 DAO와 VO 클래스로 이루어져있다.

 

Vi ew

  - JSP가 화면 기능을 담당한다.

  - Model에서 처리한 결과를 화면에 표시한다.

 

Controller

  - 서블릿이 컨트롤러의 역할은 한다.

  - 클라이언트의 요청을 분석한다.

  - 요청에 대해서 필요한 모델을 호출한다.

  - Model에서 처리한 결과를 보여주기 위해 JSP를 선택한다.

 

스프링 프레임워크 MVC 특징

 

스프링에서 지원하는 MVC 기능은 특징은 다음과 같다.

- 모델2 아키텍처를 지원한다.

- 스프링과 다른 모듈과의 연계가 쉽다.

- View 기술과의 연계가 쉽다.

- 태그 라이브러리를 통해 message 출력, theme 적용 그리고 입력 폼을 보다 쉽게 구현할 수 있다.

 

DispatcherServlet : 클라이언트의 요청을 전달받아 해당 요청에 대한 컨트롤러를 선택하여 클라이언트의 요청을 전달한다. 또한 컨트롤러가 반환한 값을 View에 전달하여 알맞은 응답을 생성한다.

HandlerMapping : 클라이언트가 요청한 URL을 처리할 컨트롤러를 지정한다.

Controller : 클라이언트의 요청을 처리한 후 그 결과를 DispatherServlet에 전달한다.

ModelAndView : 컨트롤러가 처리한 결과 및 뷰 선택에 필요한 정보를 저장한다.

ViewResolver : 컨트롤러의 처리 결과를 전달할 뷰를 지정한다.

View : 컨트롤러의 처리 결과 화면을 생성한다.

 

 

 

스프링 프레임워크 MVC 기능 수행 과정

 

1. 브라우저가 DispatcherServlet에 URL로 접근하여 해당 정보를 요청한다.

2. 핸들러 매핑에서 해당 요청에 대해 매핑된 컨트롤러가 있는지 요청한다.

3. 매핑된 컨트롤러에 대해 처리를 요청한다.

4. 컨트롤러가 클라이언트의 요청을 처리한 결과와 View 이름을 ModelAndView에 저장해서 DispatcherServlet으로 반환한다.

5. DispatcherServlet에서는 컨트롤러에서 보내온 View 이름을 ViewResolver로 보내 해당 View를 요청한다.

6. ViewResolver는 요청한 View를 보낸다.

7. View의 처리 결과를 DispatcherServlet으로 보낸다.

8. DispatcherServlet은 최종결과를 브라우저로 전송한다.

728x90
반응형