13.1. Introduction
Spring MVC 의 특징
- 다른 web MVC 프레임워크와 마찬가지로 모든 요청을 DispatcherServlet 을 사용하여 요청을 처리할 핸들러에게 dispatch 합니다.
- 요청을 처리할 핸들러(Controller)로는 가장 심플한 Controller 인터페이스 부터 여러 경우에 사용할 수 있는 구현체들을 제공합니다.
- 어떤 객체라도 폼에 입력되는 값을 받아들이는 객체(폼 객체, Command)로 사용할 수 있습니다.
- view resolution이 매우 유연(flexible)합니다.
- ModelAndView 객체를 사용하여 view 와 model(맵 형태)을 담게 됩니다.
- ModelAndView에 있는 view이름을 다양한 ViewResolver 를 사용하여 적당한 view에 매핑할 수 있습니다.
13.1.1. Pluggability of other MVC implementations
스트럿츠나 웹워크 같은 다른 웹 MVC 프레임워크로 Spring MVC를 대체 할 수 있습니다.
13.1.2. Features of Spring Web MVC
- Clear separation of roles - controller, validator, command object, form object, model object, DispatcherServlet, handler mapping, view resolver, 기타 등등. 여러 책임을 각각의 객체로 나눠 놨기 때문에 보다 객체 지향적인 MVC 구현이 가능합니다.
- Powerful and straightforward configuration - 웹 컨트롤러들 부터 비즈니스 객체까지 모든 객체들을 컨텍스트에 빈으로 등록하여 사용할 수 있습니다.
- Adaptability, non-intrusiveness - 각각 상황에 맞는 컨트롤러를 골라서 사용할 수 있습니다.
- Reusable business code - 비즈니스 객체를 커맨드 객체로 재사용할 수 있습니다.
- Customizable binding and validation - 애플리케이션 차원에서 데이터를 바인딩하고 검증할 수 있습니다.
- Customizable handler mapping and view resolution - 다양한 방법으로 핸들러 맵핑과 뷰 리졸버를 사용할 수 있습니다.
- Flexible model transfer - 모델이 name/value 쌍의 맵으로 구성되기 때문에 여러 view간에 이동할 때 사용하기 편합니다.
- 여러 view 기술들과 연동할 수 있습니다.
- spring 태그를 제공합니다.
- form 태그를 제공합니다.
- session 과 request Scope을 사용할 수 있습니다.