둘러보기 생략.
 

Spring MVC

Spring MVC는 Spring Framework에서 제공하는 Web Framework로 처음 Spring Framework가 디자인될때는 고려되지 않았다. 하지만 많이 쓰이고 있는 Web Framework들이 presentation layer와 request handling layer간, request handling layer와 model간의 독립성이 불충분하다고 느껴 자신들만의 Web Framework를 개발하였다. 이러한 Spring MVC는 Apache Struts와 마찬가지로 request 기반의 framework이다.

특징

Spring MVC의 대표적인 특징은 다음과 같다.

  • Model-And-View의 디자인 패턴 즉, Model2의 아키텍처를 지원한다.
  • Spring Framework의 다른 모듈과의 연계가 용이하다.
  • 컨트롤러, command 객체, 모델 객체, validator등 각각의 역할에 대해 명확히 분리되어있다.
  • Form 객체가 필요하지 않은 사용자 지정가능한 데이터 바인딩과 유효성 체크가 가능하다.
  • 어떠한 view기술과도 연계가 용이하다.
  • 태그 라이브러리를 통해 message 출력, theme 적용 등과 입력폼을 보다 쉽게 구현할 수 있다.

구성요소

Spring MVC의 구성요소는 MVC 아키텍처에 따라 Model, View, Controller 컴포넌트로 구성된다.
Anyframe Web Architecture (Spring MVC Base)Anyframe Web Architecture (Spring MVC Base)

Model Component

Model Component를 만드는 다양한 방법을 직접 제공하지 않는다. 대신 EJB (Enterprise Java Beans), JDO (Java Data Objects), JavaBeans, ORM (Object to Relational Mapping framework ) 등 여러 기술들을 이용해 구현된 어떤 Model Component 에도 접근 가능하다. 또한 폼 입력 필드 값을 폼 객체 없이 모델 객체로 바인딩 할 수 있는데 이 때 모델 객체 attribute로 정의된 타입에 따라 자동 매핑된다. 단, attribute명과 입력 필드 명이 일치 해야한다.

View Component

표준 JSP 나 Spring MVC에서 제공하는 tag library 를 사용하여 View Component를 제작 한다. Spring MVC에서는 별도의 bean, html, logic 태그는 제공하지 않으며 표준JSP 태그인 JSTL을 사용하는것을 권장한다. Component의 재사용, 관리 노력의 절감, 에러 감소를 위해 Application-Specific Custom tag, Image Rendering Component 등 다른 기술의 채택을 고려할 수 있다.

Controller Component

DispatcherServlet이 Controller 역할을 담당하고 있으며 모든 Request의 Flow를 제어한다.

주요 기능

Spring MVC에서는 Web Application 구현을 위한 많은 기능을 제공한다. 아래의 내용은 개략적인 Spring MVC 기능에 대한 설명이다. 자세한 설명은 Anyframe 매뉴얼 페이지를 참고한다.

Configuration

Web Application 배포 지시자인 web.xml 에는 Front Controller인 DispatcherServlet을 등록하고 action-servlet.xml 의 위치를 지정한다.
action-servlet.xml 는 Spring MVC-enabled 웹 어플리케이션을 위한 배포 지시자로 다양한 resolver를 설정할 수 있으며 View, Controller를 함께 엮는 주된 설정 파일이다. 주요 설정 요소로는 mesesageSource, handlerMapping, localeResolver, Controller, viewResolver 등의 element가 있다.

View

View 는 클라이언트가 모델의 상태를 보기 위해 사용하는 창(window)이다. 하나의 모델은 여러 뷰를 포함할 수 있으며 클라이언트가 어떤 뷰를 통해 모델을 보느냐에 따라 화면이 달라진다. 주로 자바 코드와 태그로 뷰를 구성하며 JSP를 기반으로 클라이언트에 동적인 컨텐츠를 제공하게 된다. 이러한 View는 JSP관련 기술, Tags, Message Resources등으로 구성되며 사용자 입력 수용 및 데이터를 표시하고 입력데이터 검증, 에러처리, 국제화 등의 역할을 수행한다.

Controller

Model과 View의 중개자이다. Model과 View를 분리함으로써 Single domain model 기반의 다양한 프리젠테이션을 만들 수 있게 되고, 모든 클라이언트의 request가 Controller를 통하게 되므로 보안, 로깅 등 여러 공통 기능들을 제고할 수 있다. DispatcherServlet을 통해 요청을 해당 Controller과 매핑시키며 Controller에서 비즈니스 로직을 호출해 작업을 수행 후 도출된 결과를 바탕으로 뷰를 결정하여 클라이언트에 보여준다.

Other Components

Spring MVC와 통합되어 부가적으로 활용할 수 있는 여러 컴포넌트가 있다. 그중 대표적인 것으로 메시지 출력이나, JSP단의 로직 구현을 위한 Tag Library등이 있다. 또한 Anyframe에서 확장해서 제공하는 Controller와 Tag library도 포함된다.