Home » SPRING -4. Spring MVC

SPRING -4. Spring MVC

4.1. MVC

4.1.1 Model 1

그림 5. Model 1 흐름도

  • 요청을 jsp나 servlet이 받아서 필요한 데이터를 호출하여 결과값을 출력하는 방식.
  • 개발에 대한 지식을 쉽게 배울 수 있고, 개발시간이 빠르나, 화면과 로직이 섞여 있기 때문에 화면이나 코드가 복잡해지며, 유지보수가 어렵다.

4.1.2. Model 2 (MVC)

그림 6. Model 2 흐름도

  • 웹 어플리케이션의 개발 규모가 커지게 되고 Model 1 개발방식의 단점이 대두 되면서 해결책으로 나온 개발 방법. 하나의 jsp (혹은 servlet)에서 정보의 조회에서 출력까지 모든 것을 처리하던 방법에서, 각각의 영역에 따라 독립적으로 나눠서 개발한다.
  • Model : 정보(데이터) 영역.
  • View : 사용자에게 보여주는 화면 영역
  • Controller : Model과 View 간의 상호동작을 관리하는 영역.

  • MVC패턴으로 개발할 경우 하나의 작업에 대해 각각의 영역이 독립되어 개발되기 때문에, 변경에 대해 유연한 대처가 가능하다.

  • 예를 들어 작업한 어플리케이션의 화면이 jsp에서 velocity나, freemarker로 변경된다면 Model과 Controller의 기능은 그대로 두고 View만 변경하면 된다.
  • 반면 Model 1에 비해 간단한 개발의 경우 개발 시간이 오래 걸린다.
  • Spring의 경우 웹 어플리케이션을 개발을 할 때에 MVC 패턴 개발을 지원하기 위해 Spring MVC 모듈을 제공하고 있다.

4.2. Spring MVC

  • Spring MVC가 사용자로부터 요청을 받아 처리를 하고 보여주는 흐름은 아래와 같다.
    flow diagram
명 칭 설 명
DispatcherServlet 클라이언트의 요청을 받아서 이를 처리할 Controller에게 전달한다. 요청을 처리한 Controller가 반환한 결과값을 View에게 전달한다.
HandlerMapping 클라이언트의 요청을 어떤 핸들러(Controller)가 처리할지 결정한다.
Handler(Controller) 클라이언트의 요청을 처리하고 결과값과 View 정보를 반환한다.
ModelAndView Controller가 처리한 결과값 및 View 선택에 필요한 값을 저장한다.
ViewResolver Controller가 처리한 결과값에 따라 처리할 View를 결정한다
View Controller가 처리한 결과값을 가지고 화면을 생성한다.