Overview
Spring MVC는 Spring에서 제공하는 웹 프레임워크로 MVC(Model, View,
Controller) 패턴 기반의 Model2 아키텍쳐를 사용한다. 또한 Spring MVC는
Controller, Handler mappings, ModelAndView, view resolver, view 등의 구성 요소를 가지며 요청을
할당해주는 Front Controller 역할로써 DispatchServlet을 사용한다. 기본적인 핸들러는 Controller Interface이며
Controller는
public abstract ModelAndView handleRequest(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
메소드를 제공한다. Controller 자체로도 application 컨트롤러로 사용될 수 있지만
AbstractController, AbstractCommandController,
MultiActionController등의 컨트롤러 구현체를 사용하여 사용자가 보다 의도에 맞게 컨트롤러를
구현할 수 있다. 또한 Struts에서는 ActionForm과 같은 클래스를 이용해 입력 폼
데이터를 전달 하지만 Spring MVC는 이러한 입력 폼 데이터를 transfer object로 바로 바인딩 할 수 있다. Spring MVC는 Spirng
프레임워크의 한 모듈로써 Spring IoC 컨테이너와 완벽하게 통합이 되어 Spring의 또 다른 기능과의
연계가 용이하다.
Spring MVC 특징
Spring MVC 웹 프레임워크는 다음과 같은 특징을 가진다.
-
역할 분리가 명확하다. controller, validator, command 객체,
폼 객체, model 객체, DispatcherServlet, handler
mapping, view resolver 등 특화된 객체에 의해 역할을 수행할 수
있다.
-
다양한 컨트롤러 인터페이스를 제공하기 때문에 시나리오에 맞는 컨트롤러를 선택하여 사용할
수 있다.
- business 객체를 command 또는 폼 객체로 재사용할 수 있다.
-
application 레벨에서 데이터를 바인딩 하고 validation 에러를 체크할
수 있다.
-
간단한 URL 기반 설정으로 다양한 handler mapping과 view
resolution이 가능하다.
- 모델이 맵으로 구성되기 때문에 여러 view 기술과의 연계가 쉽다.
- 데이터 바인딩이나 테마 사용을 위한 spring 태그를 제공한다.
- JSP의 입력 폼을 보다 쉽게 만들 수 있는 form 태그를 제공한다.
Reference
Spring MVC 웹 프레임워크 활용을 위한 설정 및 구성 요소, Spring 프레임워크와의 연계방안에 관한 내용은 아래를 참고한다.