Version 1.0.1
저작권 © 2007-2011 삼성SDS
Simpleweb Map Plugin은 Spring MVC 기반의 웹 어플리케이션을 개발할 때 개발자가 웹 개발을 보다 쉽고 간단하게 할 수 있도록, Transfer Object로 Map(java.util.Map) 객체를 사용하는 공통 Controller 클래스 및 태그 라이브러리들을 사용하여 작성된 샘플 코드와 이를 활용하는데 필요한 참조 라이브러리들로 구성되어 있다.
Installation
Command 창에서 다음과 같이 명령어를 입력하여 simpleweb-map plugin을 설치한다.
mvn anyframe:install -Dname=simpleweb-map
installed(mvn anyframe:installed) 혹은 jetty:run(mvn clean jetty:run) command를 이용하여 설치 결과를 확인해볼 수 있다.
Dependent Plugins
| Plugin Name | Version Range |
|---|---|
| Simpleweb | 2.0.0 > * |
이번 장에서는 Transfer Object를 java.util.Map으로 사용할 경우 사용하게 될 Anyframe에서 제공하는 Controller 클래스에 대해 알아보도록 한다.
SimpleMapServiceController는 Map 타입의 객체를 Transfer Object를 사용할 때의 데이터 바인딩을 지원해줄 AbstractServiceController를 확장한 Controller 클래스이다. HttpServletRequest의 Parameter로 넘어온 값을 메소드 정보의 argument 타입의 객체(여기선 Map객체가 됨)로 바인딩 해주며 Map 타입의 객체를 Transfer Object로 사용하는 경우 데이터 바인딩 방법을 바꾸거나 특정 작업을 추가 할 때, 또는 AbstractServiceController의 기능을 변경하고 싶을 때는 SimpleMapServiceController를 확장하여 구현하면 된다. 다음은 Simpleweb-Map Plugin 설치로 추가된 Spring 속성 정의 파일 simpleweb-map-servlet.xml 파일의 일부이다.
<!-- simple direct service controller -->
<bean name="/simplemap.do" class="org.anyframe.simpleweb.controller.SimpleMapServiceController">
<property name="beanMethodsRepo" ref="beanMethodsRepo" />
</bean>위와 같이 정의하면 "/simplemap.do" 요청을 SimpleMapServiceController가 처리하게 된다.
이번 장에서는 Simpleweb Map Plugin (simpleweb-map) 설치시 생성되는 Sample Application을 중심으로 Map 기반의 Simpleweb을 개발하는 방법에 대해 설명하도록 한다. Map 기반의 Simpleweb을 개발할 때 link/submit/validator/validate tag 등의 사용은 위에서 설명한 VO 기반의 Simpleweb을 개발할 때와 같다. 단, Spring form tag를 사용함에 있어서 modelAttribute와 필드의 path를 정의하는 부분이 달라 지게 된다. VO를 사용하게 되는 경우 modelAttribute의 값은 비즈니스 서비스를 호출 한 후 리턴되는 객체 타입의 camelcase로 정의하게 된다.(ex> Movie 타입의 객체를 리턴할 경우 modelAttribute는 "movie"로 정의) 하지만 Map 방식일 경우 modelAttribute의 이름은 "result"로 정의하도록 한다.
<form:form modelAttribute="result" method="post" ...또한, 각각의 입력 필드의 path 값은 "map[${key}]"로 정의하도록 한다. 작성 예는 아래와 같다.
<form:input id="title" path="map[title]" id="title".../> <anyframe:validate id="title" required="true" promptMessage="Enter movie Title." />
이 때, Anyframe validate tag 적용을 위해 "[]"를 제외한 간편한 id를 정의하고 validate tag를 정의하도록 권고한다.