Overview

Spring MVC는 handler Mappings, view, locale, 테마 , 파일 업로드를 핸들러에 요청하는 DispatchServlet으로 디자인 되어 있다. 기본적인 핸들러는 ModelAndView, handleRequest(request,response)메소드를 제공하는 Controller 인터페이스 이다. 이 자체로도 application 컨트롤러로 사용될 수 있지만 AbstractController, AbstractCommandController, MultiActionController등의 컨트롤러 인터페이스를 포함한다. 또한 Struts에서는 Action, ActionForm과 같은 클래스를 이용해 입력 폼 데이터를 전달 하지만 Spring MVC는 이러한 객체를 도메인 객체로 바로 바인딩 할 수 있어 일일이 입력받은 객체의 값을 business 객체로 매핑해 주지 않아도 된다. view resolution 또한 매우 유연하다.컨트롤러를 구현할 때 view 이름과 model Map으로 구성되어 있는 인스턴스를 가지는 ModelAndView() 메소드를 구현함으로써 view 이름과 view에서 사용할 객체를 넘겨줄 수 있다. 또한 이러한 view 이름은 설정 파일에 정의되어 있는 다양한 view Resolver를 사용하여 알맞은 view를 결정해서 보여준다.

Spring MVC 특징

Spring MVC 웹 프레임워크는 다음과 같은 특징을 가진다.

  • 역할 분리가 명확하다. controller, validator, command 객체, 폼 객체, model 객체, DispatcherServlet, handler mapping, view resolver 등 특화된 객체에 의해 역할을 수행할 수 있다.

  • 폼 웹 컨트롤러에서 business 객체나 validator까지 각각의 context에 쉽게 참조할 수 있는 Java Beans으로 등록하여 사용할 수 있다.

  • 다양한 컨트롤러 인터페이스를 제공하기 때문에 시나리오에 맞는 컨트롤러를 선택하여 사용할 수 있다.

  • business 객체를 command 또는 폼 객체로 재사용할 수 있다.

  • application 레벨에서 데이터를 바인딩 하고 validation 에러를 체크할 수 있다.

  • 간단한 URL 기반 설정으로 다양한 handler mapping과 view resolution이 가능하다.

  • 모델이 name-value 형태의 맵으로 구성되기 때문에 여러 view 기술과의 연계가 쉽다.

  • 데이터 바인딩이나 테마 사용을 위한 spring 태그를 제공한다.

  • JSP의 폼태그를 보다 쉽게 만들 수 있는 form 태그를 제공한다.

Reference

Spring MVC 웹 프레임워크 활용을 위한 설정 및 구성요소에 관한 내용은 아래를 참고한다.